aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2005-06-02 01:23:48 +0000
committerBruce Momjian <bruce@momjian.us>2005-06-02 01:23:48 +0000
commitb51366396b0e150c18ea62006b24a610c5a7f8d8 (patch)
treed0f661b9e898f1705c1d4ccc825fd19ab3e5f24c
parent65537ac1b41f18e029b8172b8308189434c310d6 (diff)
downloadpostgresql-b51366396b0e150c18ea62006b24a610c5a7f8d8.tar.gz
postgresql-b51366396b0e150c18ea62006b24a610c5a7f8d8.zip
Add support for \x hex strings in psql variables.
-rw-r--r--doc/src/sgml/ref/psql-ref.sgml7
-rw-r--r--src/bin/psql/psqlscan.l14
2 files changed, 16 insertions, 5 deletions
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 55c160e91cf..bc762ab7c18 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.137 2005/05/30 15:24:23 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.138 2005/06/02 01:23:48 momjian Exp $
PostgreSQL documentation
-->
@@ -589,8 +589,9 @@ testdb=&gt;
single quote. To include a single quote into such an argument,
precede it by a backslash. Anything contained in single quotes is
furthermore subject to C-like substitutions for
- <literal>\n</literal> (new line), <literal>\t</literal> (tab), and
- <literal>\</literal><replaceable>digits</replaceable> (octal).
+ <literal>\n</literal> (new line), <literal>\t</literal> (tab),
+ <literal>\</literal><replaceable>digits</replaceable> (octal),
+ <literal>\x</literal><replaceable>digits</replaceable> (hexadecimal).
</para>
<para>
diff --git a/src/bin/psql/psqlscan.l b/src/bin/psql/psqlscan.l
index 4159ee0220f..d0e1dc80d20 100644
--- a/src/bin/psql/psqlscan.l
+++ b/src/bin/psql/psqlscan.l
@@ -33,7 +33,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.12 2005/05/30 16:48:47 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.13 2005/06/02 01:23:48 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -250,8 +250,9 @@ xnstart [nN]{quote}
xqstart {quote}
xqdouble {quote}{quote}
xqinside [^\\']+
-xqescape [\\][^0-7]
+xqescape [\\][^0-7x]
xqoctesc [\\][0-7]{1,3}
+xqhexesc [\\]x[0-9A-Fa-f]{1,2}
/* $foo$ style quotes ("dollar quoting")
* The quoted string starts with $foo$ where "foo" is an optional string
@@ -467,6 +468,9 @@ other .
<xq>{xqoctesc} {
ECHO;
}
+<xq>{xqhexesc} {
+ ECHO;
+ }
<xq>{quotecontinue} {
ECHO;
}
@@ -855,6 +859,12 @@ other .
(char) strtol(yytext + 1, NULL, 8));
}
+{xqhexesc} {
+ /* hex case */
+ appendPQExpBufferChar(output_buf,
+ (char) strtol(yytext + 2, NULL, 16));
+ }
+
"\\". { emit(yytext + 1, 1); }
{other}|\n { ECHO; }