ecpg: Catch zero-length Unicode identifiers correctly

The previous code to detect a zero-length identifier when using
Unicode identifiers such as

exec sql select u&"";

did not work.  This fixes that.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/82fafa79-331c-9d65-e51b-8b5d1b2383fc%40enterprisedb.com
This commit is contained in:
Peter Eisentraut 2022-01-12 10:39:57 +01:00
parent bed6ed3de9
commit a18b6d2dc2
1 changed files with 1 additions and 1 deletions

View File

@ -737,7 +737,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
}
<xui>{dquote} {
BEGIN(state_before_str_start);
if (literallen == 2) /* "U&" */
if (literallen == 0)
mmerror(PARSE_ERROR, ET_ERROR, "zero-length delimited identifier");
/* The backend will truncate the identifier here. We do not as it does not change the result. */
base_yylval.str = psprintf("U&\"%s\"", literalbuf);