pgsql: Fix handling of nested JSON objects in json_populate_recordset a

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix handling of nested JSON objects in json_populate_recordset a
Дата
Msg-id E1Wzeje-00066W-8t@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix handling of nested JSON objects in json_populate_recordset and friends.

populate_recordset_object_start() improperly created a new hash table
(overwriting the link to the existing one) if called at nest levels
greater than one.  This resulted in previous fields not appearing in
the final output, as reported by Matti Hameister in bug #10728.
In 9.4 the problem also affects json_to_recordset.

This perhaps missed detection earlier because the default behavior is to
throw an error for nested objects: you have to pass use_json_as_text = true
to see the problem.

In addition, fix query-lifespan leakage of the hashtable created by
json_populate_record().  This is pretty much the same problem recently
fixed in dblink: creating an intended-to-be-temporary context underneath
the executor's per-tuple context isn't enough to make it go away at the
end of the tuple cycle, because MemoryContextReset is not
MemoryContextResetAndDeleteChildren.

Michael Paquier and Tom Lane

Branch
------
REL9_3_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/a1fc36495f00b250e915fc5ca579449723b3129a

Modified Files
--------------
src/backend/utils/adt/jsonfuncs.c    |   27 +++++++++++++++++++++------
src/test/regress/expected/json.out   |    7 +++++++
src/test/regress/expected/json_1.out |    7 +++++++
src/test/regress/sql/json.sql        |    3 +++
4 files changed, 38 insertions(+), 6 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix handling of nested JSON objects in json_populate_recordset a
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Cosmetic improvements in jsonfuncs.c.