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/[email protected] Branch ------ REL_15_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/85ec8bcce2608b8e29a1a0742282d39b29b78dda Modified Files -------------- contrib/hstore_plpython/expected/hstore_plpython.out | 11 +++++++++++ contrib/hstore_plpython/hstore_plpython.c | 8 +++++++- contrib/hstore_plpython/sql/hstore_plpython.sql | 11 +++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-)
