提交 f13c1320 编写于 作者: B 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.
上级 6616e232
......@@ -33,7 +33,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* 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 .
"\\r" { appendPQExpBufferChar(output_buf, '\r'); }
"\\f" { appendPQExpBufferChar(output_buf, '\f'); }
"\\"[1-9][0-9]* {
/* decimal case */
appendPQExpBufferChar(output_buf,
(char) strtol(yytext + 1, NULL, 0));
}
"\\"0[0-7]* {
"\\"[0-7]{1,3} {
/* octal case */
appendPQExpBufferChar(output_buf,
(char) strtol(yytext + 1, NULL, 0));
}
"\\"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));
(char) strtol(yytext + 1, NULL, 8));
}
"\\". { emit(yytext + 1, 1); }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册