Commit f13c1320 authored by Bruce Momjian's avatar Bruce Momjian

Have psql escape bytes in strings for variables follow the backend

conventions of only allowing octal, like \045.  Remove support for
\decimal, \0octal, and \0xhex which matches the strtol() function but
didn't make sense with backslashes.

These now return the same character:

	test=> \set x '\54'
	test=> \echo :x
	,
	test=> \set x '\054'
	test=> \echo :x
	,

THIS IS A BACKWARD COMPATIBILITY CHANGE.
parent 6616e232
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.10 2005/05/26 01:24:29 tgl Exp $ * $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.11 2005/05/30 14:50:35 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -849,29 +849,10 @@ other . ...@@ -849,29 +849,10 @@ other .
"\\r" { appendPQExpBufferChar(output_buf, '\r'); } "\\r" { appendPQExpBufferChar(output_buf, '\r'); }
"\\f" { appendPQExpBufferChar(output_buf, '\f'); } "\\f" { appendPQExpBufferChar(output_buf, '\f'); }
"\\"[1-9][0-9]* { "\\"[0-7]{1,3} {
/* decimal case */
appendPQExpBufferChar(output_buf,
(char) strtol(yytext + 1, NULL, 0));
}
"\\"0[0-7]* {
/* octal case */ /* octal case */
appendPQExpBufferChar(output_buf, appendPQExpBufferChar(output_buf,
(char) strtol(yytext + 1, NULL, 0)); (char) strtol(yytext + 1, NULL, 8));
}
"\\"0[xX][0-9A-Fa-f]+ {
/* hex case */
appendPQExpBufferChar(output_buf,
(char) strtol(yytext + 1, NULL, 0));
}
"\\"0[xX] {
/* failed hex case */
yyless(2);
appendPQExpBufferChar(output_buf,
(char) strtol(yytext + 1, NULL, 0));
} }
"\\". { emit(yytext + 1, 1); } "\\". { emit(yytext + 1, 1); }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment