From 231c5935a49b6a940268823339ec0a776a4c5960 Mon Sep 17 00:00:00 2001
From: Michael Meskes <meskes@postgresql.org>
Date: Fri, 17 Sep 1999 18:28:15 +0000
Subject: [PATCH] *** empty log message ***

---
 src/interfaces/ecpg/ChangeLog       |   5 ++
 src/interfaces/ecpg/lib/Makefile.in |   4 +-
 src/interfaces/ecpg/lib/ecpglib.c   | 125 +++++++++++++---------------
 src/interfaces/ecpg/test/test2.pgc  |   2 +-
 src/interfaces/ecpg/test/test3.pgc  |   2 +-
 5 files changed, 67 insertions(+), 71 deletions(-)

diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 53c81753edc..8a7253dae53 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -638,3 +638,8 @@ Fri Sep 17 07:43:55 CEST 1999
 	- Fixed bug in parsing operators.
 	- Set ecpg version to 2.6.4
 
+Fri Sep 17 18:16:34 CEST 1999
+
+	- Made sure sqlca is initialized everytime.
+	- Set library version to 3.0.3
+
diff --git a/src/interfaces/ecpg/lib/Makefile.in b/src/interfaces/ecpg/lib/Makefile.in
index 005ed0d8a13..8436a63b6fd 100644
--- a/src/interfaces/ecpg/lib/Makefile.in
+++ b/src/interfaces/ecpg/lib/Makefile.in
@@ -6,13 +6,13 @@
 # Copyright (c) 1994, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.46 1999/09/15 08:29:14 meskes Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.47 1999/09/17 18:28:10 meskes Exp $
 #
 #-------------------------------------------------------------------------
 
 NAME= ecpg
 SO_MAJOR_VERSION= 3
-SO_MINOR_VERSION= 0.2
+SO_MINOR_VERSION= 0.3
 
 SRCDIR= @top_srcdir@
 include $(SRCDIR)/Makefile.global
diff --git a/src/interfaces/ecpg/lib/ecpglib.c b/src/interfaces/ecpg/lib/ecpglib.c
index ea2ec7a6508..de093895e0c 100644
--- a/src/interfaces/ecpg/lib/ecpglib.c
+++ b/src/interfaces/ecpg/lib/ecpglib.c
@@ -140,12 +140,25 @@ get_connection(const char *connection_name)
 		return NULL;
 }
 
+static bool
+ecpg_init(const struct connection *con, const char * connection_name, const int lineno)
+{
+	memcpy((char *) &sqlca, (char *) &sqlca_init, sizeof(sqlca));
+	if (con == NULL)
+	{
+		register_error(ECPG_NO_CONN, "No such connection %s in line %d.", connection_name ? connection_name : "NULL", lineno);
+		return (false);
+	}
+	
+	return (true);
+}
+
 static void
-ECPGfinish(struct connection * act)
+ecpg_finish(struct connection * act)
 {
 	if (act != NULL)
 	{
-		ECPGlog("ECPGfinish: finishing %s.\n", act->name);
+		ECPGlog("ecpg_finish: finishing %s.\n", act->name);
 		PQfinish(act->connection);
 		/* remove act from the list */
 		if (act == all_connections)
@@ -166,7 +179,7 @@ ECPGfinish(struct connection * act)
 		free(act);
 	}
 	else
-		ECPGlog("ECPGfinish: called an extra time.\n");
+		ECPGlog("ecpg_finish: called an extra time.\n");
 }
 
 static char *
@@ -383,8 +396,6 @@ ECPGexecute(struct statement * stmt)
 	PGnotify   *notify;
 	struct variable *var;
 
-	memcpy((char *) &sqlca, (char *) &sqlca_init, sizeof(sqlca));
-
 	copiedquery = ecpg_strdup(stmt->command, stmt->lineno);
 
 	/*
@@ -1029,11 +1040,8 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
 	struct connection *con = get_connection(connection_name);
 	bool		status;
 
-	if (con == NULL)
-	{
-		register_error(ECPG_NO_CONN, "No such connection %s in line %d.", connection_name ? connection_name : "NULL", lineno);
-		return (false);
-	}
+	if (!ecpg_init(con, connection_name, lineno))
+		return(false);
 
 	va_start(args, query);
 	if (create_statement(lineno, con, &stmt, query, args) == false)
@@ -1058,11 +1066,8 @@ ECPGstatus(int lineno, const char *connection_name)
 {
 	struct connection *con = get_connection(connection_name);
 
-	if (con == NULL)
-	{
-		register_error(ECPG_NO_CONN, "No such connection %s in line %d", connection_name ? connection_name : "NULL", lineno);
-		return (false);
-	}
+	if (!ecpg_init(con, connection_name, lineno))
+		return(false);
 
 	/* are we connected? */
 	if (con->connection == NULL)
@@ -1081,11 +1086,8 @@ ECPGtrans(int lineno, const char *connection_name, const char *transaction)
 	PGresult   *res;
 	struct connection *con = get_connection(connection_name);
 
-	if (con == NULL)
-	{
-		register_error(ECPG_NO_CONN, "No such connection %s in line %d", connection_name ? connection_name : "NULL", lineno);
-		return (false);
-	}
+	if (!ecpg_init(con, connection_name, lineno))
+		return(false);
 
 	ECPGlog("ECPGtrans line %d action = %s connection = %s\n", lineno, transaction, con->name);
 
@@ -1124,41 +1126,36 @@ ECPGsetcommit(int lineno, const char *mode, const char *connection_name)
 	struct connection *con = get_connection(connection_name);
 	PGresult   *results;
 
-	if (con)
+	if (!ecpg_init(con, connection_name, lineno))
+		return(false);
+
+	if (con->autocommit == true && strncmp(mode, "OFF", strlen("OFF")) == 0)
 	{
-		if (con->autocommit == true && strncmp(mode, "OFF", strlen("OFF")) == 0)
+		if (con->committed)
 		{
-			if (con->committed)
+			if ((results = PQexec(con->connection, "begin transaction")) == NULL)
 			{
-				if ((results = PQexec(con->connection, "begin transaction")) == NULL)
-				{
-					register_error(ECPG_TRANS, "Error in transaction processing line %d.", lineno);
-					return false;
-				}
-				PQclear(results);
-				con->committed = false;
+				register_error(ECPG_TRANS, "Error in transaction processing line %d.", lineno);
+				return false;
 			}
-			con->autocommit = false;
+			PQclear(results);
+			con->committed = false;
 		}
-		else if (con->autocommit == false && strncmp(mode, "ON", strlen("ON")) == 0)
+		con->autocommit = false;
+	}
+	else if (con->autocommit == false && strncmp(mode, "ON", strlen("ON")) == 0)
+	{
+		if (!con->committed)
 		{
-			if (!con->committed)
+			if ((results = PQexec(con->connection, "commit")) == NULL)
 			{
-				if ((results = PQexec(con->connection, "commit")) == NULL)
-				{
-					register_error(ECPG_TRANS, "Error in transaction processing line %d.", lineno);
-					return false;
-				}
-				PQclear(results);
-				con->committed = true;
+				register_error(ECPG_TRANS, "Error in transaction processing line %d.", lineno);
+				return false;
 			}
-			con->autocommit = true;
+			PQclear(results);
+			con->committed = true;
 		}
-	}
-	else
-	{
-		register_error(ECPG_NO_CONN, "No such connection %s in line %d", connection_name ? connection_name : "NULL", lineno);
-		return false;
+		con->autocommit = true;
 	}
 
 	return true;
@@ -1169,24 +1166,22 @@ ECPGsetconn(int lineno, const char *connection_name)
 {
 	struct connection *con = get_connection(connection_name);
 
-	if (con)
-	{
-		actual_connection = con;
-		return true;
-	}
-	else
-	{
-		register_error(ECPG_NO_CONN, "No such connection %s in line %d", connection_name ? connection_name : "NULL", lineno);
-		return false;
-	}
+	if (!ecpg_init(con, connection_name, lineno))
+		return(false);
+
+	actual_connection = con;
+	return true;
 }
 
 bool
 ECPGconnect(int lineno, const char *dbname, const char *user, const char *passwd, const char *connection_name, int autocommit)
 {
-	struct connection *this = (struct connection *) ecpg_alloc(sizeof(struct connection), lineno);
+	struct connection *this;
 
-	if (!this)
+
+	memcpy((char *) &sqlca, (char *) &sqlca_init, sizeof(sqlca));
+	
+	if ((this = (struct connection *) ecpg_alloc(sizeof(struct connection), lineno)) == NULL)
 		return false;
 
 	if (dbname == NULL && connection_name == NULL)
@@ -1213,7 +1208,7 @@ ECPGconnect(int lineno, const char *dbname, const char *user, const char *passwd
 
 	if (PQstatus(this->connection) == CONNECTION_BAD)
 	{
-		ECPGfinish(this);
+		ecpg_finish(this);
 		ECPGlog("connect: could not open database %s %s%s in line %d\n", dbname ? dbname : "<DEFAULT>", user ? "for user " : "", user ? user : "", lineno);
 		register_error(ECPG_CONNECT, "connect: could not open database %s.", dbname ? dbname : "<DEFAULT>");
 		return false;
@@ -1237,21 +1232,17 @@ ECPGdisconnect(int lineno, const char *connection_name)
 			struct connection *f = con;
 
 			con = con->next;
-			ECPGfinish(f);
+			ecpg_finish(f);
 		}
 	}
 	else
 	{
 		con = get_connection(connection_name);
 
-		if (con == NULL)
-		{
-			ECPGlog("disconnect: not connected to connection %s\n", connection_name ? connection_name : "NULL");
-			register_error(ECPG_NO_CONN, "No such connection %s in line %d", connection_name ? connection_name : "NULL", lineno);
-			return false;
-		}
+		if (!ecpg_init(con, connection_name, lineno))
+		        return(false);
 		else
-			ECPGfinish(con);
+			ecpg_finish(con);
 	}
 
 	return true;
diff --git a/src/interfaces/ecpg/test/test2.pgc b/src/interfaces/ecpg/test/test2.pgc
index 360dee3b34f..3dc3603d542 100644
--- a/src/interfaces/ecpg/test/test2.pgc
+++ b/src/interfaces/ecpg/test/test2.pgc
@@ -117,8 +117,8 @@ exec sql end declare section;
 	exec sql commit;
 
 	strcpy(msg, "disconnect"); 
-
 	exec sql disconnect;
+
 	if (dbgs != NULL)
                 fclose(dbgs);
 
diff --git a/src/interfaces/ecpg/test/test3.pgc b/src/interfaces/ecpg/test/test3.pgc
index 13786518f05..12e3e07dd21 100644
--- a/src/interfaces/ecpg/test/test3.pgc
+++ b/src/interfaces/ecpg/test/test3.pgc
@@ -109,8 +109,8 @@ exec sql end declare section;
 	exec sql commit;
 
 	strcpy(msg, "disconnect"); 
-
 	exec sql disconnect;
+
 	if (dbgs != NULL)
                 fclose(dbgs);
 
-- 
GitLab