]> granicus.if.org Git - postgresql/commitdiff
Have psql escape bytes in strings for variables follow the backend
authorBruce Momjian <bruce@momjian.us>
Mon, 30 May 2005 14:50:35 +0000 (14:50 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 30 May 2005 14:50:35 +0000 (14:50 +0000)
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.

src/bin/psql/psqlscan.l

index 88763d504bceac7e8d97e762155831500be5589d..2fd4d729a3aec12cd697c0ff15b0e99fd54e0ee4 100644 (file)
@@ -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); }