]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Support SQL99 embedded double-quote syntax for quoted identifiers.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Sun, 6 Aug 2000 17:50:48 +0000 (17:50 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Sun, 6 Aug 2000 17:50:48 +0000 (17:50 +0000)
Allow this in the parser and in pg_dump, but it is probably not enough
 for a complete solution.
Better to have the feature started then never here.

src/backend/parser/scan.l
src/bin/pg_dump/common.c

index a909b51008b3bf16069917bca91cdd56596f7652..eb71d08cbbd99dca70c1b069358ba6f7ec242971 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.73 2000/07/14 15:43:32 thomas Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.74 2000/08/06 17:50:38 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -136,6 +136,7 @@ xqcat                       {quote}{whitespace_with_newline}{quote}
 dquote                 \"
 xdstart                        {dquote}
 xdstop                 {dquote}
+xddouble               {dquote}{dquote}
 xdinside               [^"]+
 
 /* C-style comments
@@ -351,6 +352,9 @@ other                       .
                                        yylval.str = pstrdup(literalbuf);
                                        return IDENT;
                                }
+<xd>{xddouble} {
+                                       addlit(yytext, yyleng-1);
+                               }
 <xd>{xdinside} {
                                        addlit(yytext, yyleng);
                                }
index 4e3244f5a5aadfc9ac22b237f01feaf78f216764..d7cb9e488a5cb4924d0c19a1210c77526becc7b7 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.44 2000/07/04 14:25:27 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.45 2000/08/06 17:50:48 thomas Exp $
  *
  * Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2
  *
@@ -517,8 +517,10 @@ fmtId(const char *rawid, bool force_quotes)
 
        if (!force_quotes)
        {
+               /* do a quick check on the first character... */
                if (!islower((int) *rawid))
                        force_quotes = true;
+               /* otherwise check the entire string */
                else
                        for (cp = rawid; *cp; cp++)
                        {
@@ -541,8 +543,15 @@ fmtId(const char *rawid, bool force_quotes)
        appendPQExpBufferChar(id_return, '\"');
        for (cp = rawid; *cp; cp++)
        {
+               /* Did we find a double-quote in the string?
+                * Then make this a double double-quote per SQL99.
+                * Before, we put in a backslash/double-quote pair.
+                * - thomas 2000-08-05 */
                if (*cp == '\"')
-                       appendPQExpBufferChar(id_return, '\\');
+               {
+                       appendPQExpBufferChar(id_return, '\"');
+                       appendPQExpBufferChar(id_return, '\"');
+               }
                appendPQExpBufferChar(id_return, *cp);
        }
        appendPQExpBufferChar(id_return, '\"');