From 2ab3a8887972d5e63ec33856a513e9f3b4b21dbb Mon Sep 17 00:00:00 2001
From: Michael Meskes <meskes@postgresql.org>
Date: Fri, 18 Jan 2002 15:51:00 +0000
Subject: [PATCH] Accept subsequent commits. This should have been just a
 warning anyway. I cannot see a reason why it should be an error.

---
 src/interfaces/ecpg/ChangeLog  |  4 ++++
 src/interfaces/ecpg/lib/misc.c | 15 ++++++++++-----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index da687ae1aba..722257f1af8 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1207,5 +1207,9 @@ Sat Jan 12 22:04:02 CET 2002
 	- Fixed variable handling for struct members.
 	- Removed check for array input. An attribut might store the
 	  complete array.
+
+Fri Jan 18 16:49:02 CET 2002
+
+	- Accept subsequent commits.
 	- Set ecpg version to 2.9.0.
         - Set library version to 3.3.0.
diff --git a/src/interfaces/ecpg/lib/misc.c b/src/interfaces/ecpg/lib/misc.c
index a3dd727cbd6..4a5573b649b 100644
--- a/src/interfaces/ecpg/lib/misc.c
+++ b/src/interfaces/ecpg/lib/misc.c
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/misc.c,v 1.11 2001/12/23 12:17:41 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/misc.c,v 1.12 2002/01/18 15:51:00 meskes Exp $ */
 
 #include "postgres_fe.h"
 
@@ -90,12 +90,17 @@ ECPGtrans(int lineno, const char *connection_name, const char *transaction)
 	/* if we have no connection we just simulate the command */
 	if (con && con->connection)
 	{
-		if ((res = PQexec(con->connection, transaction)) == NULL)
+		/* if we are not in autocommit mode, already have committed 
+		 * the transaction and get another commit, just ignore it */
+		if (!con->committed || con->autocommit)
 		{
-			ECPGraise(lineno, ECPG_TRANS, NULL);
-			return FALSE;
+			if ((res = PQexec(con->connection, transaction)) == NULL)
+			{
+				ECPGraise(lineno, ECPG_TRANS, NULL);
+				return FALSE;
+			}
+			PQclear(res);
 		}
-		PQclear(res);
 	}
 
 	if (strcmp(transaction, "commit") == 0 || strcmp(transaction, "rollback") == 0)
-- 
GitLab