OSDN Git Service

'::' is no longer interpreted as a variable in a prepare statement.
authorMichael Meskes <meskes@postgresql.org>
Tue, 5 Oct 2004 10:48:37 +0000 (10:48 +0000)
committerMichael Meskes <meskes@postgresql.org>
Tue, 5 Oct 2004 10:48:37 +0000 (10:48 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/ecpglib/prepare.c

index bc0c3af..824bee4 100644 (file)
@@ -1864,6 +1864,11 @@ Mon Sep 27 11:05:49 CEST 2004
 
        - Synced parser.
        - Removed Oracle transaction syntax to fix shift/reduce error.
+       
+Tue Oct  5 12:45:48 CEST 2004
+
+       - '::' is no longer interpreted as a variable in a prepare statement.
+         Added patch by Daniel Verite to fix this.
        - Set ecpg version to 3.2.0.
        - Set compat library version to 1.2.
        - Set ecpg library version to 4.2.
index f850b9c..b6e79c6 100644 (file)
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.12 2004/05/21 13:50:12 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.13 2004/10/05 10:48:37 meskes Exp $ */
 
 #define POSTGRES_ECPG_INTERNAL
 #include "postgres_fe.h"
@@ -46,9 +46,14 @@ replace_variables(char *text)
 
                if (!string && *ptr == ':')
                {
-                       *ptr = '?';
-                       for (++ptr; *ptr && isvarchar(*ptr); ptr++)
-                               *ptr = ' ';
+                       if (ptr[1]==':')
+                               ptr+=2; /* skip  '::' */
+                       else
+                       {
+                               *ptr = '?';
+                               for (++ptr; *ptr && isvarchar(*ptr); ptr++)
+                                       *ptr = ' ';
+                       }
                }
        }
 }