]> granicus.if.org Git - postgresql/commit
Handle Unicode surrogate pairs correctly when processing JSON.
authorAndrew Dunstan <andrew@dunslane.net>
Sat, 8 Jun 2013 13:12:48 +0000 (09:12 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Sat, 8 Jun 2013 13:12:48 +0000 (09:12 -0400)
commit94e3311b97448324d67ba9a527854271373329d9
treef54ab210d201b70735affadcd018c00c8db737c4
parentc99d5d1bcc137c15058458bbdcdd2789b56e4c66
Handle Unicode surrogate pairs correctly when processing JSON.

In 9.2, Unicode escape sequences are not analysed at all other than
to make sure that they are in the form \uXXXX. But in 9.3 many of the
new operators and functions try to turn JSON text values into text in
the server encoding, and this includes de-escaping Unicode escape
sequences. This processing had not taken into account the possibility
that this might contain a surrogate pair to designate a character
outside the BMP. That is now handled correctly.

This also enforces correct use of surrogate pairs, something that is not
done by the type's input routines. This fact is noted in the docs.
doc/src/sgml/func.sgml
src/backend/utils/adt/json.c
src/test/regress/expected/json.out
src/test/regress/sql/json.sql