pgsql: Fix conversion of JSON strings to JSON output columns injson_to

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix conversion of JSON strings to JSON output columns injson_to
Дата
Msg-id E1hakeN-0004kI-Nl@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix conversion of JSON strings to JSON output columns in json_to_record().

json_to_record(), when an output column is declared as type json or jsonb,
should emit the corresponding field of the input JSON object.  But it got
this slightly wrong when the field is just a string literal: it failed to
escape the contents of the string.  That typically resulted in syntax
errors if the string contained any double quotes or backslashes.

jsonb_to_record() handles such cases correctly, but I added corresponding
test cases for it too, to prevent future backsliding.

Improve the documentation, as it provided only a very hand-wavy
description of the conversion rules used by these functions.

Per bug report from Robert Vollmert.  Back-patch to v10 where the
error was introduced (by commit cf35346e8).

Note that PG 9.4 - 9.6 also get this case wrong, but differently so:
they feed the de-escaped contents of the string literal to json[b]_in.
That behavior is less obviously wrong, so possibly it's being depended on
in the field, so I won't risk trying to make the older branches behave
like the newer ones.

Discussion: https://postgr.es/m/D6921B37-BD8E-4664-8D5F-DB3525765DCD@vllmrt.net

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/6f34fcbbd5ad5a6546710e7b90e6331cacfd36dc

Modified Files
--------------
doc/src/sgml/func.sgml              | 88 +++++++++++++++++++++++++++----------
src/backend/utils/adt/jsonfuncs.c   | 37 +++++++---------
src/test/regress/expected/json.out  | 36 +++++++++++++++
src/test/regress/expected/jsonb.out | 36 +++++++++++++++
src/test/regress/sql/json.sql       |  7 +++
src/test/regress/sql/jsonb.sql      |  7 +++
6 files changed, 167 insertions(+), 44 deletions(-)


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

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: pgsql: Fix order of steps in DISCARD ALL documentation
Следующее
От: David Rowley
Дата:
Сообщение: pgsql: doc: Add best practises section to partitioning docs