]> granicus.if.org Git - postgresql/commit
Do not escape a unicode sequence when escaping JSON text.
authorAndrew Dunstan <andrew@dunslane.net>
Tue, 3 Jun 2014 20:11:31 +0000 (16:11 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Tue, 3 Jun 2014 20:11:31 +0000 (16:11 -0400)
commit0ad1a816320a2b539a51628e2a0b1e83ff096b1d
treeb65753b2035c2e21b60504bd014d2df106dca7ff
parentf30015b6d794c15d52abbb3df3a65081fbefb1ed
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.
doc/src/sgml/release-9.4.sgml
src/backend/utils/adt/json.c
src/test/regress/expected/json.out
src/test/regress/expected/json_1.out
src/test/regress/expected/jsonb.out
src/test/regress/expected/jsonb_1.out
src/test/regress/sql/json.sql