diff --git a/src/interfaces/ecpg/TODO b/src/interfaces/ecpg/TODO
index 114500850c66f3a19f07042016fbe9d17a1eee56..f6e425b958a5800217acee99d8568c38633e2316 100644
--- a/src/interfaces/ecpg/TODO
+++ b/src/interfaces/ecpg/TODO
@@ -13,6 +13,8 @@ support for dynamic SQL with unknown number of variables with DESCRIPTORS
 
 The line numbering is not exact.
 
+Inside an SQL statement quoting only works with SQL92 style double quotes: ''. 
+
 Missing statements:
  - exec sql allocate
  - exec sql deallocate
diff --git a/src/interfaces/ecpg/lib/ecpglib.c b/src/interfaces/ecpg/lib/ecpglib.c
index b74febcd1cce7b8f95cda8c345781390119c63c4..0643571a0180785fabcd12bfeb3459555c56dc0a 100644
--- a/src/interfaces/ecpg/lib/ecpglib.c
+++ b/src/interfaces/ecpg/lib/ecpglib.c
@@ -241,41 +241,6 @@ quote_postgres(char *arg, int lineno)
 	return res;
 }
 
-/* This function returns a newly malloced string that has the \
-   in the strings inside the argument quoted with another \.
- */
-static
-char *
-quote_strings(char *arg, int lineno)
-{
-	char	   *res = (char *) ecpg_alloc(2 * strlen(arg) + 1, lineno);
-	int			i,
-				ri;
-	bool		string = false;
-
-	if (!res)
-		return (res);
-
-	for (i = 0, ri = 0; arg[i]; i++, ri++)
-	{
-		switch (arg[i])
-		{
-			case '\'':
-				string = string ? false : true;
-				break;
-			case '\\':
-				res[ri++] = '\\';
-			default:
-				;
-		}
-
-		res[ri] = arg[i];
-	}
-	res[ri] = '\0';
-
-	return res;
-}
-
 /*
  * create a list of variables
  * The variables are listed with input variables preceeding outputvariables
@@ -544,17 +509,8 @@ ECPGexecute(struct statement * stmt)
 
 						strncpy(newcopy, (char *) var->value, slen);
 						newcopy[slen] = '\0';
-						if (!(mallocedval = (char *) ecpg_alloc(2 * strlen(newcopy) + 1, stmt->lineno)))
-							return false;
-
-						tmp = quote_strings(newcopy, stmt->lineno);
-						if (!tmp)
-							return false;
 
-						strcat(mallocedval, tmp);
-						free(newcopy);
-
-						tobeinserted = mallocedval;
+						tobeinserted = newcopy;
 					}
 					break;
 				case ECPGt_varchar:
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index 80ac7444b2ecb682e3cd38c1d40d8f898b7239de..26e1cf3f9024ae44c1ac23b2996eb4d4e6890e4e 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -9,8 +9,9 @@ CFLAGS+=-I../include -DMAJOR_VERSION=$(MAJOR_VERSION) \
 	-DMINOR_VERSION=$(MINOR_VERSION) -DPATCHLEVEL=$(PATCHLEVEL) \
 	-DINCLUDE_PATH=\"$(HEADERDIR)\"
 
-OBJ=preproc.o pgc.o type.o ecpg.o ecpg_keywords.o ../../../backend/parser/scansup.o \
+OBJ=preproc.o pgc.o type.o ecpg.o ecpg_keywords.o \
     keywords.o c_keywords.o ../lib/typename.o
+#../../../backend/parser/scansup.o
 
 all:: ecpg
 
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index 071dc4731d0fd731a2dd2098b0ce1cab98a2696b..1585e395b0cb729932a717df41c4866775115080 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -248,7 +248,8 @@ cppline		{space}*#.*(\\{space}*\n)*\n*
 				}
 <xq>{xqstop}	{
 					BEGIN(SQL);
-					yylval.str = mm_strdup(scanstr(literal));
+					/* yylval.str = mm_strdup(scanstr(literal));*/
+					yylval.str = mm_strdup(literal);
 					return SCONST;
 				}
 <xq>{xqdouble}	|
@@ -609,7 +610,8 @@ cppline		{space}*#.*(\\{space}*\n)*\n*
                                      if (strcmp(old, ptr->old) == 0)
                                      {
 					free(ptr->new);
-					ptr->new = mm_strdup(scanstr(literal));
+					/* ptr->new = mm_strdup(scanstr(literal));*/
+					ptr->new = mm_strdup(literal);
                                      }
                                 }
 				if (ptr == NULL)
@@ -618,7 +620,8 @@ cppline		{space}*#.*(\\{space}*\n)*\n*
 
                                         /* initial definition */
                                         this->old = old;
-                                        this->new = mm_strdup(scanstr(literal));
+                                        /* this->new = mm_strdup(scanstr(literal));*/
+                                        this->new = mm_strdup(literal);
 					this->next = defines;
 					defines = this;
 				}
diff --git a/src/interfaces/ecpg/test/test1.pgc b/src/interfaces/ecpg/test/test1.pgc
index bed83f96380de3ba2564fca5d8c0ac22905ca9ad..9f7e2de52e8c28d6d1c121d4f221b1667d555281 100644
--- a/src/interfaces/ecpg/test/test1.pgc
+++ b/src/interfaces/ecpg/test/test1.pgc
@@ -6,7 +6,7 @@ exec sql include sqlca;
 exec sql define AMOUNT 4;
 
 exec sql type intarray is int[AMOUNT];
-exec sql type string is char(6); 
+exec sql type string is char(8); 
 
 typedef int intarray[AMOUNT];
 
@@ -16,7 +16,7 @@ main ()
 exec sql begin declare section;
         intarray amount;
 	int increment=100;
-        char name[AMOUNT][6];
+        char name[AMOUNT][8];
 	char letter[AMOUNT][1];
 	char command[128];
 exec sql end declare section;
@@ -35,8 +35,8 @@ exec sql end declare section;
         exec sql connect to pm;
 
 	strcpy(msg, "create");
-	exec sql at main create table test(name char(6), amount int, letter char(1));
-	exec sql create table test(name char(6), amount int, letter char(1));
+	exec sql at main create table test(name char(8), amount int, letter char(1));
+	exec sql create table test(name char(8), amount int, letter char(1));
 
 	strcpy(msg, "commit");
 	exec sql at main commit;
@@ -46,13 +46,13 @@ exec sql end declare section;
 	exec sql set connection to main;
 
 	strcpy(msg, "execute insert 1");
-        sprintf(command, "insert into test(name, amount, letter) values ('db: mm', 1, 'f')");
+        sprintf(command, "insert into test(name, amount, letter) values ('db: ''mm''', 1, 'f')");
         exec sql execute immediate :command;
-        sprintf(command, "insert into test(name, amount, letter) values ('db: mm', 2, 't')");
+        sprintf(command, "insert into test(name, amount, letter) values ('db: ''mm''', 2, 't')");
         exec sql execute immediate :command;
 
         strcpy(msg, "execute insert 2");
-        sprintf(command, "insert into test(name, amount, letter) values ('db: pm', 1, 'f')");
+        sprintf(command, "insert into test(name, amount, letter) values ('db: ''pm''', 1, 'f')");
         exec sql at pm execute immediate :command;
 
         strcpy(msg, "execute insert 3");
@@ -78,12 +78,12 @@ exec sql end declare section;
         exec sql select name, amount, letter into :name, :amount, :letter from test;
 
         for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
-            printf("name[%d]=%6.6s\tamount[%d]=%d\tletter[%d]=%c\n", i, name[i], i, amount[i],i, letter[i][0]);
+            printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, name[i], i, amount[i],i, letter[i][0]);
 
         exec sql at pm select name, amount, letter into :name, :amount, :letter from test;
 
         for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
-            printf("name[%d]=%6.6s\tamount[%d]=%d\tletter[%d]=%c\n", i, name[i], i, amount[i],i, letter[i][0]);
+            printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, name[i], i, amount[i],i, letter[i][0]);
         
 	strcpy(msg, "drop");
 	exec sql drop table test;
diff --git a/src/interfaces/ecpg/test/test3.pgc b/src/interfaces/ecpg/test/test3.pgc
index 03341221431a6dfb3d90c67014acf243dbc2fa4e..13786518f05e5b162936d66a78ef4d0bb6713fe5 100644
--- a/src/interfaces/ecpg/test/test3.pgc
+++ b/src/interfaces/ecpg/test/test3.pgc
@@ -18,7 +18,7 @@ exec sql begin declare section;
 	int children;
 	int ind_children;
 	str *married = NULL;
-	char *testname="Petra";
+	char *wifesname="Petra";
 	char *query="select name, born, age, married, children from meskes where name = :var1";
 exec sql end declare section;
 
@@ -32,13 +32,13 @@ exec sql end declare section;
                 ECPGdebug(1, dbgs);
 
 	strcpy(msg, "connect");
-	exec sql connect to unix:postgresql://localhost:5432/mm; 
+	exec sql connect to unix:postgresql://localhost:5432/mm;
 
 	strcpy(msg, "create");
 	exec sql create table meskes(name char(8), born integer, age smallint, married date, children integer);
 
 	strcpy(msg, "insert");
-	exec sql insert into meskes(name, married, children) values ('Petra', '19900404', 3);
+	exec sql insert into meskes(name, married, children) values (:wifesname, '19900404', 3);
 	exec sql insert into meskes(name, born, age, married, children) values ('Michael', 19660117, 33, '19900404', 3);
 	exec sql insert into meskes(name, born, age) values ('Carsten', 19910103, 8);
 	exec sql insert into meskes(name, born, age) values ('Marc', 19930907, 5);
@@ -78,7 +78,7 @@ exec sql end declare section;
 	exec sql declare prep cursor for MM;
 
 	strcpy(msg, "open");
-	exec sql open prep using :testname;
+	exec sql open prep using :wifesname;
 
 	exec sql whenever not found do break;