From b9b00d5fe4ca963fa39295b054c83eb99bdec6b0 Mon Sep 17 00:00:00 2001
From: "Marc G. Fournier" <scrappy@hub.org>
Date: Fri, 28 Aug 1998 17:47:53 +0000
Subject: [PATCH] From: Michael Meskes <meskes@online-club.de>

This one is against the current archive (so it contains the one I send the
other day). It should fix the AIX problems. Andreas, could you please try
it? Thanks.

+ Wed Aug 26 16:17:39 CEST 1998
+
+       - Sync preproc.y with gram.y
+
+ Thu Aug 27 15:32:23 CEST 1998
+
+       - Fix some minor glitches that the AIX compiler complains about
+       - Added patchlevel to library
+
+ Fri Aug 28 15:36:58 CEST 1998
+
+       - Removed one line of code that AIX complains about since it was not
+         needed anyway
+       - Set library version to 2.6.1
---
 src/interfaces/ecpg/ChangeLog         | 14 ++++++++++++++
 src/interfaces/ecpg/lib/Makefile.in   |  7 ++++---
 src/interfaces/ecpg/lib/ecpglib.c     |  5 ++---
 src/interfaces/ecpg/preproc/preproc.y |  7 ++++++-
 4 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 0e76101b7dd..71ac693da38 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -297,3 +297,17 @@ Thu Aug 20 15:31:29 CEST 1998
 	- Cleaned up memory allocation in ecpglib.c
 	- Set library version to 2.6
 
+Wed Aug 26 16:17:39 CEST 1998
+
+	- Sync preproc.y with gram.y
+
+Thu Aug 27 15:32:23 CEST 1998
+
+	- Fix some minor glitches that the AIX compiler complains about
+	- Added patchlevel to library
+
+Fri Aug 28 15:36:58 CEST 1998
+
+	- Removed one line of code that AIX complains about since it was not
+	  needed anyway
+	- Set library version to 2.6.1
diff --git a/src/interfaces/ecpg/lib/Makefile.in b/src/interfaces/ecpg/lib/Makefile.in
index 53f3d5ac44a..41151927356 100644
--- a/src/interfaces/ecpg/lib/Makefile.in
+++ b/src/interfaces/ecpg/lib/Makefile.in
@@ -5,6 +5,7 @@ PQ_INCLUDE=-I$(SRCDIR)/interfaces/libpq
 
 SO_MAJOR_VERSION=2
 SO_MINOR_VERSION=6
+SO_PATCHLEVEL=1
 
 PORTNAME=@PORTNAME@
 
@@ -19,21 +20,21 @@ ifeq ($(PORTNAME), linux)
   LINUX_ELF=@LINUX_ELF@
   ifdef LINUX_ELF
     install-shlib-dep := install-shlib
-    shlib := libecpg.so.$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+    shlib := libecpg.so.$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION).$(SO_PATCHLEVEL)
     LDFLAGS_SL = -shared -soname libecpg.so.$(SO_MAJOR_VERSION)
   endif
 endif
 ifeq ($(PORTNAME), bsd)
   ifdef BSD_SHLIB
     install-shlib-dep := install-shlib
-    shlib := libecpg.so.$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+    shlib := libecpg.so.$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION).$(SO_PATCHLEVEL)
     LDFLAGS_SL = -x -Bshareable -Bforcearchive
     CFLAGS += $(CFLAGS_SL)
   endif
 endif
 #ifeq ($(PORTNAME), solaris)
 #  install-shlib-dep := install-shlib
-#  shlib := libecpg.so.$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+#  shlib := libecpg.so.$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION).$(SO_PATCHLEVEL)
 #  LDFLAGS_SL = -G -z text
 #  CFLAGS += $(CFLAGS_SL)
 #endif
diff --git a/src/interfaces/ecpg/lib/ecpglib.c b/src/interfaces/ecpg/lib/ecpglib.c
index e2b8e2ce599..23abd32a73d 100644
--- a/src/interfaces/ecpg/lib/ecpglib.c
+++ b/src/interfaces/ecpg/lib/ecpglib.c
@@ -701,7 +701,7 @@ ECPGexecute(struct statement *stmt)
                                                                  }
                                                                  else
                                                                  {
-                                                                         strncpy((char *) (var->value + var->offset * act_tuple), pval, var->varcharsize);
+                                                                         strncpy((char *) ((long)var->value + var->offset * act_tuple), pval, var->varcharsize);
                                                                          if (var->varcharsize < strlen(pval))
                                                                          {
                                                                                  /* truncation */
@@ -731,7 +731,7 @@ ECPGexecute(struct statement *stmt)
                                                  case ECPGt_varchar:
                                                          {
                                                                  struct ECPGgeneric_varchar *variable =
-								 (struct ECPGgeneric_varchar *) (var->value + var->offset * act_tuple);
+								 (struct ECPGgeneric_varchar *) ((long)var->value + var->offset * act_tuple);
     
 								 if (var->varcharsize == 0)
 								   strncpy(variable->arr, pval, strlen(pval));
@@ -828,7 +828,6 @@ ECPGexecute(struct statement *stmt)
 		free(notify);
 	}
 
-	va_end(ap);
 	return status;
 }
 
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index fec7232375e..929ab01ed21 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -566,7 +566,7 @@ output_statement(char * stmt, int mode)
                 LANCOMPILER, LISTEN, UNLISTEN, LOAD, LOCK_P, LOCATION, MAXVALUE, MINVALUE, MOVE,
                 NEW, NONE, NOTHING, NOTNULL, OIDS, OPERATOR, PROCEDURAL,
                 RECIPE, RENAME, RESET, RETURNS, ROW, RULE,
-                SEQUENCE, SETOF, SHOW, START, STATEMENT, STDIN, STDOUT, TRUSTED,
+                SERIAL, SEQUENCE, SETOF, SHOW, START, STATEMENT, STDIN, STDOUT, TRUSTED,
                 VACUUM, VERBOSE, VERSION, ENCODING
 
 /* Keywords (obsolete; retain through next version for parser - thomas 1997-12-0 4) */
@@ -1083,6 +1083,10 @@ columnDef:  ColId Typename ColQualifier
 				{
 					$$ = cat3_str($1, $2, $3);
 				}
+	| ColId SERIAL
+		{
+			$$ = make2_str($1, make1_str(" serial"));
+		}
 		;
 
 ColQualifier:  ColQualList	{ $$ = $1; }
@@ -3795,6 +3799,7 @@ ColId:  ident							{ $$ = $1; }
 		| PRIVILEGES					{ $$ = make1_str("privileges"); }
 		| RECIPE						{ $$ = make1_str("recipe"); }
 		| ROW							{ $$ = make1_str("row"); }
+		| SERIAL						{ $$ = make1_str("serial"); }
 		| START							{ $$ = make1_str("start"); }
 		| STATEMENT						{ $$ = make1_str("statement"); }
 		| TIME							{ $$ = make1_str("time"); }
-- 
GitLab