diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 86bb78735362dd2aafd7ab3f0a529dac7fc7e4ef..6f742a65cfaafc13211820e563e20a6a44fe615d 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1166,5 +1166,9 @@ Thu Dec  6 14:02:56 CET 2001
 
 	- Removed debug message from preproc.y.
 	- Fixed some bugs in exec sql var and exec sql type command.
+
+Sat Dec  8 21:35:45 CET 2001
+
+	- Fix ecpg to allow pointer to structs.
 	- Set ecpg version to 2.9.0.
         - Set library version to 3.3.0.
diff --git a/src/interfaces/ecpg/preproc/type.c b/src/interfaces/ecpg/preproc/type.c
index 0be9ef78157d6bd8425a656db1d93b254bc6049a..c0cfad9ff26ae8cb6ba505311aa8a7650225d231 100644
--- a/src/interfaces/ecpg/preproc/type.c
+++ b/src/interfaces/ecpg/preproc/type.c
@@ -361,7 +361,7 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz,
 	struct ECPGstruct_member *p,
 			   *ind_p = NULL;
 	char		obuf[BUFSIZ];
-	char		pbuf[BUFSIZ],
+	char		pbuf[BUFSIZ*2],
 				ind_pbuf[BUFSIZ];
 	const char *offset;
 
@@ -373,7 +373,11 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz,
 	else
 		offset = offsetarg;
 
-	sprintf(pbuf, "%s%s.", prefix ? prefix : "", name);
+	if (arrsiz != 0)
+		sprintf(pbuf, "%s%s.", prefix ? prefix : "", name);
+	else
+		sprintf(pbuf, "%s%s->", prefix ? prefix : "", name);
+		
 	prefix = pbuf;
 
 	if (ind_typ == &ecpg_no_indicator)
@@ -382,7 +386,11 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz,
 	}
 	else if (ind_typ != NULL)
 	{
-		sprintf(ind_pbuf, "%s%s.", ind_prefix ? ind_prefix : "", ind_name);
+		if (arrsiz != 0)
+			sprintf(ind_pbuf, "%s%s.", ind_prefix ? ind_prefix : "", ind_name);
+		else
+			sprintf(ind_pbuf, "%s%s->", ind_prefix ? ind_prefix : "", ind_name);
+					
 		ind_prefix = ind_pbuf;
 		ind_p = ind_typ->u.members;
 	}
diff --git a/src/interfaces/ecpg/test/test2.pgc b/src/interfaces/ecpg/test/test2.pgc
index ec2c790d2b4d430b60adc6b4a02066d7bc08c46e..299250dfa5d4188920f523d6921e3954ed21ec4e 100644
--- a/src/interfaces/ecpg/test/test2.pgc
+++ b/src/interfaces/ecpg/test/test2.pgc
@@ -19,10 +19,10 @@ main ()
 exec sql begin declare section;
 	struct personal_struct	{	str name;
 					birthinfo birth;
-				} personal;
+				} personal, *p;
 	struct personal_indicator {	int ind_name;
 					birthinfo ind_birth;
-				  } ind_personal;
+				  } ind_personal, *i;
 	float ind_married;
 	ind children;
 	ind ind_children;
@@ -63,9 +63,11 @@ exec sql end declare section;
 
 	exec sql whenever not found do break;
 
+	p=&personal;
+	i=&ind_personal;
 	while (1) {
 		strcpy(msg, "fetch");
-		exec sql fetch cur into :personal:ind_personal, :married:ind_married, :children.integer:ind_children.smallint;
+		exec sql fetch cur into :p:i, :married:ind_married, :children.integer:ind_children.smallint;
 		printf("%8.8s", personal.name.arr);
 		if (ind_personal.ind_birth.born >= 0)
 			printf(", born %ld", personal.birth.born);
@@ -125,6 +127,5 @@ exec sql end declare section;
 	if (dbgs != NULL)
                 fclose(dbgs);
 
-
 	return (0);
 }