diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 4074ab023202de9b5da7890de93b09127a644b6a..2d45486a3a90184da719878337190c013869cfa8 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1578,7 +1578,15 @@ Mon Jul 14 09:34:04 CEST 2003
 	
 Tue Jul 15 14:28:53 CEST 2003
 
-	_ Started to add error codes for backend error messages.
+	- Started to add error codes for backend error messages.
+	
+Thu Jul 17 09:15:59 CEST 2003
+
+	- Fixed some bugs in informix compat functions.
+	
+Fri Jul 18 16:31:10 CEST 2003
+
+	- Added some more compatibility features to the parser.
 	- Set ecpg version to 3.0.0
 	- Set ecpg library to 4.0.0
 	- Set pgtypes library to 1.0.0
diff --git a/src/interfaces/ecpg/ecpglib/data.c b/src/interfaces/ecpg/ecpglib/data.c
index cc802152a03801f4598e2ee2b10d955d1d0059dd..e783e4f077b0e66821c9d3af9e35a33d8fa0750e 100644
--- a/src/interfaces/ecpg/ecpglib/data.c
+++ b/src/interfaces/ecpg/ecpglib/data.c
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.12 2003/07/17 11:27:55 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.13 2003/07/18 14:32:56 meskes Exp $ */
 
 #define POSTGRES_ECPG_INTERNAL
 #include "postgres_fe.h"
@@ -354,17 +354,14 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
 							{
 								case ECPGt_short:
 								case ECPGt_unsigned_short:
-	/*								((short *) ind)[act_tuple] = variable->len;*/
 									*((short *) (ind + offset * act_tuple)) = variable->len;
 									break;
 								case ECPGt_int:
 								case ECPGt_unsigned_int:
-	/*								((int *) ind)[act_tuple] = variable->len;*/
 									*((int *) (ind + offset * act_tuple)) = variable->len;
 									break;
 								case ECPGt_long:
 								case ECPGt_unsigned_long:
-	/*								((long *) ind)[act_tuple] = variable->len;*/
 									*((long *) (ind + offset * act_tuple)) = variable->len;
 									break;
 #ifdef HAVE_LONG_LONG_INT_64
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index e369927a96fa29b37be55f525c0220576224cf7f..cac581d6c797a08543969d2ea38387eeaf847aa4 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.248 2003/07/14 12:18:25 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.249 2003/07/18 14:32:56 meskes Exp $ */
 
 /* Copyright comment */
 %{
@@ -1818,12 +1818,24 @@ TruncateStmt:  TRUNCATE opt_table qualified_name
  *
  *****************************************************************************/
 
+/* This is different from the backend as we try to be compatible with many other
+ * embedded SQL implementations. So we accept their syntax as well and 
+ * translate it to the PGSQL syntax. */
+ 
 FetchStmt: FETCH fetch_direction from_in name ecpg_into_using
 			{ $$ = cat_str(4, make_str("fetch"), $2, $3, $4); }
+		| FETCH fetch_direction name ecpg_into_using
+			{ $$ = cat_str(4, make_str("fetch"), $2, make_str("from"), $3); }
+		| FETCH from_in name ecpg_into_using
+			{ $$ = cat_str(3, make_str("fetch"), $2, $3); }
 		| FETCH name ecpg_into_using
 			{ $$ = cat2_str(make_str("fetch"), $2); }
 		| FETCH fetch_direction from_in name
 			{ $$ = cat_str(4, make_str("fetch"), $2, $3, $4); }
+		| FETCH fetch_direction name
+			{ $$ = cat_str(4, make_str("fetch"), $2, make_str("from"), $3); }
+		| FETCH from_in name 
+			{ $$ = cat_str(3, make_str("fetch"), $2, $3); }
 		| FETCH name 
 			{ $$ = cat2_str(make_str("fetch"), $2); }
 		| MOVE fetch_direction from_in name
@@ -1832,8 +1844,7 @@ FetchStmt: FETCH fetch_direction from_in name ecpg_into_using
 			{ $$ = cat2_str(make_str("move"), $2); }
 		;
 
-fetch_direction: /* EMPTY */			{ $$ = EMPTY; }
-		| NEXT				{ $$ = make_str("next"); }
+fetch_direction:  NEXT				{ $$ = make_str("next"); }
 		| PRIOR				{ $$ = make_str("prior"); }
 		| FIRST_P			{ $$ = make_str("first"); }
 		| LAST_P			{ $$ = make_str("last"); }
@@ -1853,7 +1864,7 @@ fetch_count: IntConst	{ $$ = $1; }
 	;
 
 from_in: IN_P				{ $$ = make_str("in"); }
-		| FROM				{ $$ = make_str("from"); }
+		| FROM			{ $$ = make_str("from"); }
 		;
 
 /*****************************************************************************