]> granicus.if.org Git - postgresql/commitdiff
Revert ill-considered change to plpgsql: it should not rely on the
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 27 May 2006 19:45:52 +0000 (19:45 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 27 May 2006 19:45:52 +0000 (19:45 +0000)
current setting of standard_conforming_strings to decide how to quote
strings that will be used later.  There is much more to do here but
this particular change breaks the build on Windows, so fix it now.

src/pl/plpgsql/src/gram.y

index dfff1963503184240380bd5e1535ab597975b4a6..2461deaf328d7580342e54068b5b4473c81b37d8 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/pl/plpgsql/src/gram.y,v 1.89 2006/05/26 23:48:54 momjian Exp $
+ *       $PostgreSQL: pgsql/src/pl/plpgsql/src/gram.y,v 1.90 2006/05/27 19:45:52 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -17,7 +17,7 @@
 #include "plpgsql.h"
 
 #include "parser/parser.h"
-#include "parser/gramparse.h"
+
 
 static PLpgSQL_expr            *read_sql_construct(int until,
                                                                                        int until2,
@@ -377,12 +377,16 @@ decl_statement    : decl_varname decl_const decl_datatype decl_notnull decl_defval
                                                strcpy(buf, "SELECT ");
                                                cp1 = new->refname;
                                                cp2 = buf + strlen(buf);
-                                               if (!standard_conforming_strings && strchr(cp1, '\\') != NULL)
+                                               /*
+                                                * Don't trust standard_conforming_strings here;
+                                                * it might change before we use the string.
+                                                */
+                                               if (strchr(cp1, '\\') != NULL)
                                                        *cp2++ = ESCAPE_STRING_SYNTAX;
                                                *cp2++ = '\'';
                                                while (*cp1)
                                                {
-                                                       if (SQL_STR_DOUBLE(*cp1, !standard_conforming_strings))
+                                                       if (SQL_STR_DOUBLE(*cp1, true))
                                                                *cp2++ = *cp1;
                                                        *cp2++ = *cp1++;
                                                }