1
0
mirror of https://github.com/postgres/postgres.git synced 2025-12-21 05:21:08 +03:00

Do not escape a unicode sequence when escaping JSON text.

Previously, any backslash in text being escaped for JSON was doubled so
that the result was still valid JSON. However, this led to some perverse
results in the case of Unicode sequences, These are now detected and the
initial backslash is no longer escaped. All other backslashes are
still escaped. No validity check is performed, all that is looked for is
\uXXXX where X is a hexidecimal digit.

This is a change from the 9.2 and 9.3 behaviour as noted in the Release
notes.

Per complaint from Teodor Sigaev.
This commit is contained in:
Andrew Dunstan
2014-06-03 16:11:31 -04:00
parent f30015b6d7
commit 0ad1a81632
7 changed files with 77 additions and 7 deletions

View File

@@ -180,6 +180,21 @@
</para>
</listitem>
<listitem>
<para>
Unicode escapes in <link linkend="datatype-json"><type>JSON</type></link>
text values are no longer rendered with the backslash escaped.
(Andrew Dunstan)
</para>
<para>
Previously all backslashes in text values being formed into JSON were
escaped. Now a backslash followed by "u" and four hexadecimal digits is
not escaped, as this is a legal sequence in a JSON string value, and
escaping the backslash led to some perverse results.
</para>
</listitem>
<listitem>
<para>
Rename <link linkend="SQL-EXPLAIN"><command>EXPLAIN