From a79f8195de796d4f7b5e78c358a5968076238b6f Mon Sep 17 00:00:00 2001
From: Michael Meskes <meskes@postgresql.org>
Date: Tue, 5 Oct 2004 10:48:37 +0000
Subject: [PATCH] '::' is no longer interpreted as a variable in a prepare
 statement.

---
 src/interfaces/ecpg/ChangeLog         |  5 +++++
 src/interfaces/ecpg/ecpglib/prepare.c | 13 +++++++++----
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index bc0c3af03e8..824bee4118c 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -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.
diff --git a/src/interfaces/ecpg/ecpglib/prepare.c b/src/interfaces/ecpg/ecpglib/prepare.c
index f850b9c8f7f..b6e79c6bbb6 100644
--- a/src/interfaces/ecpg/ecpglib/prepare.c
+++ b/src/interfaces/ecpg/ecpglib/prepare.c
@@ -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 = ' ';
+			}
 		}
 	}
 }
-- 
GitLab