Fix detection of unfinished Unicode surrogate pair at end of string.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 21 Dec 2016 22:39:33 +0000 (17:39 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 21 Dec 2016 22:39:33 +0000 (17:39 -0500)
commit6e2c21ec5d1c2950c275818a4de6f98ac37da5de
treeb149df7769c717733f7dcc522b0c12eea976b20e
parentda57166b7dceae917a73f414d9d13e07d4354066
Fix detection of unfinished Unicode surrogate pair at end of string.

The U&'...' and U&"..." syntaxes silently discarded a surrogate pair
start (that is, a code between U+D800 and U+DBFF) if it occurred at
the very end of the string.  This seems like an obvious oversight,
since we throw an error for every other invalid combination of surrogate
characters, including the very same situation in E'...' syntax.

This has been wrong since the pair processing was added (in 9.0),
so back-patch to all supported branches.

Discussion: https://postgr.es/m/19113.1482337898@sss.pgh.pa.us
src/backend/parser/scan.l