From 231c5935a49b6a940268823339ec0a776a4c5960 Mon Sep 17 00:00:00 2001 From: Michael Meskes 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 | 129 +++++++++++++--------------- src/interfaces/ecpg/test/test2.pgc | 2 +- src/interfaces/ecpg/test/test3.pgc | 2 +- 5 files changed, 69 insertions(+), 73 deletions(-) diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 53c81753ed..8a7253dae5 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 005ed0d8a1..8436a63b6f 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 ea2ec7a650..de093895e0 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; - } - else if (con->autocommit == false && strncmp(mode, "ON", strlen("ON")) == 0) - { - if (!con->committed) - { - 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; - } - con->autocommit = true; + PQclear(results); + con->committed = false; } + con->autocommit = false; } - else + else if (con->autocommit == false && strncmp(mode, "ON", strlen("ON")) == 0) { - register_error(ECPG_NO_CONN, "No such connection %s in line %d", connection_name ? connection_name : "NULL", lineno); - return false; + if (!con->committed) + { + 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; + } + 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 : "", user ? "for user " : "", user ? user : "", lineno); register_error(ECPG_CONNECT, "connect: could not open database %s.", dbname ? dbname : ""); 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 360dee3b34..3dc3603d54 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 13786518f0..12e3e07dd2 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);