In hstore_plpython, avoid crashing when return value isn't a mapping.
Tom Lane <tgl@sss.pgh.pa.us>
In hstore_plpython, avoid crashing when return value isn't a mapping. Python 3 changed the behavior of PyMapping_Check(), breaking the test in plpython_to_hstore() that verifies whether a function result to be transformed is acceptable. A backwards-compatible fix is to first verify that the object doesn't pass PySequence_Check(). Perhaps accidentally, our other uses of PyMapping_Check() already follow uses of PySequence_Check(), so that no other bugs were created by this change. Per bug #17908 from Alexander Lakhin. Back-patch to all supported branches. Dmitry Dolgov and Tom Lane Discussion: https://postgr.es/m/17908-3f19a125d56a11d6@postgresql.org
Files
| Path | Change | +/− |
|---|---|---|
| contrib/hstore_plpython/expected/hstore_plpython.out | modified | +11 −0 |
| contrib/hstore_plpython/hstore_plpython.c | modified | +7 −1 |
| contrib/hstore_plpython/sql/hstore_plpython.sql | modified | +11 −0 |
Discussion
- BUG #17908: plpython_to_hstore() crashes with a non-dict argument 3 messages · 2023-04-25 → 2023-04-27