diff options
Diffstat (limited to 'src/bin/pg_dump/pg_backup_db.c')
-rw-r--r-- | src/bin/pg_dump/pg_backup_db.c | 342 |
1 files changed, 189 insertions, 153 deletions
diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c index 3e3976bc741..9b747a25724 100644 --- a/src/bin/pg_dump/pg_backup_db.c +++ b/src/bin/pg_dump/pg_backup_db.c @@ -2,16 +2,16 @@ * * pg_backup_db.c * - * Implements the basic DB functions used by the archiver. + * Implements the basic DB functions used by the archiver. * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.15 2001/03/19 02:35:28 pjw Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.16 2001/03/22 04:00:12 momjian Exp $ * * NOTES * * Modifications - 04-Jan-2001 - pjw@rhyme.com.au * - * - Check results of PQ routines more carefully. + * - Check results of PQ routines more carefully. * * Modifications - 19-Mar-2001 - pjw@rhyme.com.au * @@ -38,12 +38,12 @@ #include "strdup.h" #endif -static const char *progname = "Archiver(db)"; +static const char *progname = "Archiver(db)"; -static void _prompt_for_password(char *username, char *password); -static void _check_database_version(ArchiveHandle *AH, bool ignoreVersion); -static PGconn* _connectDB(ArchiveHandle *AH, const char* newdbname, char *newUser); -static int _executeSqlCommand(ArchiveHandle* AH, PGconn *conn, PQExpBuffer qry, char *desc); +static void _prompt_for_password(char *username, char *password); +static void _check_database_version(ArchiveHandle *AH, bool ignoreVersion); +static PGconn *_connectDB(ArchiveHandle *AH, const char *newdbname, char *newUser); +static int _executeSqlCommand(ArchiveHandle *AH, PGconn *conn, PQExpBuffer qry, char *desc); static void @@ -55,7 +55,8 @@ _prompt_for_password(char *username, char *password) #ifdef HAVE_TERMIOS_H struct termios t_orig, - t; + t; + #endif /* @@ -118,10 +119,10 @@ static void _check_database_version(ArchiveHandle *AH, bool ignoreVersion) { PGresult *res; - double myversion; + double myversion; const char *remoteversion_str; - double remoteversion; - PGconn *conn = AH->connection; + double remoteversion; + PGconn *conn = AH->connection; myversion = strtod(PG_VERSION, NULL); res = PQexec(conn, "SELECT version()"); @@ -130,7 +131,7 @@ _check_database_version(ArchiveHandle *AH, bool ignoreVersion) PQntuples(res) != 1) die_horribly(AH, "check_database_version(): command failed. " - "Explanation from backend: '%s'.\n", PQerrorMessage(conn)); + "Explanation from backend: '%s'.\n", PQerrorMessage(conn)); remoteversion_str = PQgetvalue(res, 0, 0); remoteversion = strtod(remoteversion_str + 11, NULL); @@ -142,21 +143,22 @@ _check_database_version(ArchiveHandle *AH, bool ignoreVersion) fprintf(stderr, "Proceeding despite version mismatch.\n"); else die_horribly(AH, "Aborting because of version mismatch.\n" - "Use --ignore-version if you think it's safe to proceed anyway.\n"); + "Use --ignore-version if you think it's safe to proceed anyway.\n"); } PQclear(res); } -/* +/* * Check if a given user is a superuser. */ -int UserIsSuperuser(ArchiveHandle *AH, char* user) +int +UserIsSuperuser(ArchiveHandle *AH, char *user) { - PQExpBuffer qry = createPQExpBuffer(); - PGresult *res; - int i_usesuper; - int ntups; - int isSuper; + PQExpBuffer qry = createPQExpBuffer(); + PGresult *res; + int i_usesuper; + int ntups; + int isSuper; /* Get the superuser setting */ appendPQExpBuffer(qry, "select usesuper from pg_user where usename = '%s'", user); @@ -164,11 +166,11 @@ int UserIsSuperuser(ArchiveHandle *AH, char* user) if (!res) die_horribly(AH, "%s: null result checking superuser status of %s.\n", - progname, user); + progname, user); if (PQresultStatus(res) != PGRES_TUPLES_OK) die_horribly(AH, "%s: Could not check superuser status of %s. Explanation from backend: %s\n", - progname, user, PQerrorMessage(AH->connection)); + progname, user, PQerrorMessage(AH->connection)); ntups = PQntuples(res); @@ -184,28 +186,31 @@ int UserIsSuperuser(ArchiveHandle *AH, char* user) return isSuper; } -int ConnectedUserIsSuperuser(ArchiveHandle *AH) +int +ConnectedUserIsSuperuser(ArchiveHandle *AH) { return UserIsSuperuser(AH, PQuser(AH->connection)); } -char* ConnectedUser(ArchiveHandle *AH) +char * +ConnectedUser(ArchiveHandle *AH) { return PQuser(AH->connection); } /* - * Reconnect the DB associated with the archive handle + * Reconnect the DB associated with the archive handle */ -int ReconnectDatabase(ArchiveHandle *AH, const char* newdbname, char *newUser) +int +ReconnectDatabase(ArchiveHandle *AH, const char *newdbname, char *newUser) { - PGconn *newConn; - char *dbname; + PGconn *newConn; + char *dbname; - if (!newdbname || (strcmp(newdbname, "-") == 0) ) + if (!newdbname || (strcmp(newdbname, "-") == 0)) dbname = PQdb(AH->connection); else - dbname = (char*)newdbname; + dbname = (char *) newdbname; /* Let's see if the request is already satisfied */ if (strcmp(PQuser(AH->connection), newUser) == 0 && strcmp(newdbname, PQdb(AH->connection)) == 0) @@ -223,26 +228,27 @@ int ReconnectDatabase(ArchiveHandle *AH, const char* newdbname, char *newUser) /* * Connect to the db again. */ -static PGconn* _connectDB(ArchiveHandle *AH, const char* reqdb, char *requser) +static PGconn * +_connectDB(ArchiveHandle *AH, const char *reqdb, char *requser) { int need_pass; - PGconn *newConn; + PGconn *newConn; char password[100]; - char *pwparam = NULL; + char *pwparam = NULL; int badPwd = 0; int noPwd = 0; - char *newdb; - char *newuser; + char *newdb; + char *newuser; - if (!reqdb || (strcmp(reqdb, "-") == 0) ) + if (!reqdb || (strcmp(reqdb, "-") == 0)) newdb = PQdb(AH->connection); else - newdb = (char*)reqdb; + newdb = (char *) reqdb; if (!requser || (strlen(requser) == 0)) newuser = PQuser(AH->connection); else - newuser = (char*)requser; + newuser = (char *) requser; ahlog(AH, 1, "Connecting to %s as %s\n", newdb, newuser); @@ -250,8 +256,8 @@ static PGconn* _connectDB(ArchiveHandle *AH, const char* reqdb, char *requser) { need_pass = false; newConn = PQsetdbLogin(PQhost(AH->connection), PQport(AH->connection), - NULL, NULL, newdb, - newuser, pwparam); + NULL, NULL, newdb, + newuser, pwparam); if (!newConn) die_horribly(AH, "%s: Failed to reconnect (PQsetdbLogin failed).\n", progname); @@ -259,9 +265,9 @@ static PGconn* _connectDB(ArchiveHandle *AH, const char* reqdb, char *requser) { noPwd = (strcmp(PQerrorMessage(newConn), "fe_sendauth: no password supplied\n") == 0); badPwd = (strncmp(PQerrorMessage(newConn), "Password authentication failed for user", 39) - == 0); + == 0); - if (noPwd || badPwd) + if (noPwd || badPwd) { if (badPwd) @@ -271,7 +277,7 @@ static PGconn* _connectDB(ArchiveHandle *AH, const char* reqdb, char *requser) need_pass = true; _prompt_for_password(newuser, password); - pwparam = password; + pwparam = password; } else die_horribly(AH, "%s: Could not reconnect. %s\n", progname, PQerrorMessage(newConn)); @@ -283,22 +289,23 @@ static PGconn* _connectDB(ArchiveHandle *AH, const char* reqdb, char *requser) } -PGconn* ConnectDatabase(Archive *AHX, - const char* dbname, - const char* pghost, - const char* pgport, - const int reqPwd, - const int ignoreVersion) +PGconn * +ConnectDatabase(Archive *AHX, + const char *dbname, + const char *pghost, + const char *pgport, + const int reqPwd, + const int ignoreVersion) { - ArchiveHandle *AH = (ArchiveHandle*)AHX; - char connect_string[512] = ""; - char tmp_string[128]; - char password[100]; + ArchiveHandle *AH = (ArchiveHandle *) AHX; + char connect_string[512] = ""; + char tmp_string[128]; + char password[100]; if (AH->connection) die_horribly(AH, "%s: already connected to database\n", progname); - if (!dbname && !(dbname = getenv("PGDATABASE")) ) + if (!dbname && !(dbname = getenv("PGDATABASE"))) die_horribly(AH, "%s: no database name specified\n", progname); AH->dbname = strdup(dbname); @@ -310,7 +317,7 @@ PGconn* ConnectDatabase(Archive *AHX, strcat(connect_string, tmp_string); } else - AH->pghost = NULL; + AH->pghost = NULL; if (pgport != NULL) { @@ -319,7 +326,7 @@ PGconn* ConnectDatabase(Archive *AHX, strcat(connect_string, tmp_string); } else - AH->pgport = NULL; + AH->pgport = NULL; sprintf(tmp_string, "dbname=%s ", AH->dbname); strcat(connect_string, tmp_string); @@ -342,16 +349,16 @@ PGconn* ConnectDatabase(Archive *AHX, /* check to see that the backend connection was successfully made */ if (PQstatus(AH->connection) == CONNECTION_BAD) die_horribly(AH, "Connection to database '%s' failed.\n%s\n", - AH->dbname, PQerrorMessage(AH->connection)); + AH->dbname, PQerrorMessage(AH->connection)); /* check for version mismatch */ _check_database_version(AH, ignoreVersion); /* - * AH->currUser = PQuser(AH->connection); - * - * Removed because it prevented an initial \connect - * when dumping to SQL in pg_dump. + * AH->currUser = PQuser(AH->connection); + * + * Removed because it prevented an initial \connect when dumping to SQL + * in pg_dump. */ return AH->connection; @@ -359,26 +366,28 @@ PGconn* ConnectDatabase(Archive *AHX, /* Public interface */ /* Convenience function to send a query. Monitors result to handle COPY statements */ -int ExecuteSqlCommand(ArchiveHandle* AH, PQExpBuffer qry, char *desc) +int +ExecuteSqlCommand(ArchiveHandle *AH, PQExpBuffer qry, char *desc) { return _executeSqlCommand(AH, AH->connection, qry, desc); } -/* +/* * Handle command execution. This is used to execute a command on more than one connection, * but the 'pgCopyIn' setting assumes the COPY commands are ONLY executed on the primary * setting...an error will be raised otherwise. */ -static int _executeSqlCommand(ArchiveHandle* AH, PGconn *conn, PQExpBuffer qry, char *desc) +static int +_executeSqlCommand(ArchiveHandle *AH, PGconn *conn, PQExpBuffer qry, char *desc) { - PGresult *res; + PGresult *res; /* fprintf(stderr, "Executing: '%s'\n\n", qry->data); */ res = PQexec(conn, qry->data); if (!res) die_horribly(AH, "%s: %s. No result from backend.\n", progname, desc); - if (PQresultStatus(res) != PGRES_COMMAND_OK && PQresultStatus(res) != PGRES_TUPLES_OK) + if (PQresultStatus(res) != PGRES_COMMAND_OK && PQresultStatus(res) != PGRES_TUPLES_OK) { if (PQresultStatus(res) == PGRES_COPY_IN) { @@ -387,9 +396,9 @@ static int _executeSqlCommand(ArchiveHandle* AH, PGconn *conn, PQExpBuffer qry, AH->pgCopyIn = 1; } - else + else die_horribly(AH, "%s: %s. Code = %d. Explanation from backend: '%s'.\n", - progname, desc, PQresultStatus(res), PQerrorMessage(AH->connection)); + progname, desc, PQresultStatus(res), PQerrorMessage(AH->connection)); } PQclear(res); @@ -398,42 +407,52 @@ static int _executeSqlCommand(ArchiveHandle* AH, PGconn *conn, PQExpBuffer qry, } /* Convenience function to send one or more queries. Monitors result to handle COPY statements */ -int ExecuteSqlCommandBuf(ArchiveHandle* AH, void *qryv, int bufLen) +int +ExecuteSqlCommandBuf(ArchiveHandle *AH, void *qryv, int bufLen) { - int loc; - int pos = 0; - int sPos = 0; - char *qry = (char*)qryv; - int isEnd = 0; - char *eos = qry + bufLen; + int loc; + int pos = 0; + int sPos = 0; + char *qry = (char *) qryv; + int isEnd = 0; + char *eos = qry + bufLen; - /* fprintf(stderr, "\n\n*****\n Buffer:\n\n%s\n*******************\n\n", qry); */ + /* + * fprintf(stderr, "\n\n*****\n + * Buffer:\n\n%s\n*******************\n\n", qry); + */ /* If we're in COPY IN mode, then just break it into lines and send... */ - if (AH->pgCopyIn) { - for(;;) { + if (AH->pgCopyIn) + { + for (;;) + { /* Find a lf */ loc = strcspn(&qry[pos], "\n") + pos; pos = 0; /* If no match, then wait */ - if (loc >= (eos - qry)) /* None found */ + if (loc >= (eos - qry)) /* None found */ { appendBinaryPQExpBuffer(AH->pgCopyBuf, qry, (eos - qry)); break; }; - /* fprintf(stderr, "Found cr at %d, prev char was %c, next was %c\n", loc, qry[loc-1], qry[loc+1]); */ - + /* + * fprintf(stderr, "Found cr at %d, prev char was %c, next was + * %c\n", loc, qry[loc-1], qry[loc+1]); + */ + /* Count the number of preceding slashes */ sPos = loc; - while (sPos > 0 && qry[sPos-1] == '\\') + while (sPos > 0 && qry[sPos - 1] == '\\') sPos--; sPos = loc - sPos; - /* If an odd number of preceding slashes, then \n was escaped + /* + * If an odd number of preceding slashes, then \n was escaped * so set the next search pos, and restart (if any left). */ if ((sPos & 1) == 1) @@ -451,19 +470,26 @@ int ExecuteSqlCommandBuf(ArchiveHandle* AH, void *qryv, int bufLen) /* We got a good cr */ qry[loc] = '\0'; appendPQExpBuffer(AH->pgCopyBuf, "%s\n", qry); - qry += loc + 1; + qry += loc + 1; isEnd = (strcmp(AH->pgCopyBuf->data, "\\.\n") == 0); - /* fprintf(stderr, "Sending '%s' via COPY (at end = %d)\n\n", AH->pgCopyBuf->data, isEnd); */ - + /* + * fprintf(stderr, "Sending '%s' via COPY (at end = + * %d)\n\n", AH->pgCopyBuf->data, isEnd); + */ + if (PQputline(AH->connection, AH->pgCopyBuf->data) != 0) die_horribly(AH, "%s: error returned by PQputline\n", progname); resetPQExpBuffer(AH->pgCopyBuf); - /* fprintf(stderr, "Buffer is '%s'\n", AH->pgCopyBuf->data); */ + /* + * fprintf(stderr, "Buffer is '%s'\n", + * AH->pgCopyBuf->data); + */ - if(isEnd) { + if (isEnd) + { if (PQendcopy(AH->connection) != 0) die_horribly(AH, "%s: error returned by PQendcopy\n", progname); @@ -481,58 +507,60 @@ int ExecuteSqlCommandBuf(ArchiveHandle* AH, void *qryv, int bufLen) } /* We may have finished Copy In, and have a non-empty buffer */ - if (!AH->pgCopyIn) { + if (!AH->pgCopyIn) + { - /* - * The following is a mini state machine to assess then of of an SQL statement. - * It really only needs to parse good SQL, or at least that's the theory... - * End-of-statement is assumed to be an unquoted, un commented semi-colon. + /* + * The following is a mini state machine to assess then of of an + * SQL statement. It really only needs to parse good SQL, or at + * least that's the theory... End-of-statement is assumed to be an + * unquoted, un commented semi-colon. */ - /* fprintf(stderr, "Buffer at start is: '%s'\n\n", AH->sqlBuf->data); */ + /* + * fprintf(stderr, "Buffer at start is: '%s'\n\n", + * AH->sqlBuf->data); + */ - for(pos=0; pos < (eos - qry); pos++) + for (pos = 0; pos < (eos - qry); pos++) { appendPQExpBufferChar(AH->sqlBuf, qry[pos]); /* fprintf(stderr, " %c",qry[pos]); */ - switch (AH->sqlparse.state) { + switch (AH->sqlparse.state) + { - case SQL_SCAN: /* Default state == 0, set in _allocAH */ + case SQL_SCAN: /* Default state == 0, set in _allocAH */ if (qry[pos] == ';' && AH->sqlparse.braceDepth == 0) { /* Send It & reset the buffer */ - /* fprintf(stderr, " sending: '%s'\n\n", AH->sqlBuf->data); */ + + /* + * fprintf(stderr, " sending: '%s'\n\n", + * AH->sqlBuf->data); + */ ExecuteSqlCommand(AH, AH->sqlBuf, "Could not execute query"); resetPQExpBuffer(AH->sqlBuf); AH->sqlparse.lastChar = '\0'; - } - else + } + else { if (qry[pos] == '"' || qry[pos] == '\'') - { + { /* fprintf(stderr,"[startquote]\n"); */ AH->sqlparse.state = SQL_IN_QUOTE; AH->sqlparse.quoteChar = qry[pos]; AH->sqlparse.backSlash = 0; - } + } else if (qry[pos] == '-' && AH->sqlparse.lastChar == '-') - { AH->sqlparse.state = SQL_IN_SQL_COMMENT; - } else if (qry[pos] == '*' && AH->sqlparse.lastChar == '/') - { AH->sqlparse.state = SQL_IN_EXT_COMMENT; - } - else if ( qry[pos] == '(' ) - { + else if (qry[pos] == '(') AH->sqlparse.braceDepth++; - } else if (qry[pos] == ')') - { AH->sqlparse.braceDepth--; - } AH->sqlparse.lastChar = qry[pos]; } @@ -557,8 +585,8 @@ int ExecuteSqlCommandBuf(ArchiveHandle* AH, void *qryv, int bufLen) { /* fprintf(stderr,"[endquote]\n"); */ AH->sqlparse.state = SQL_SCAN; - } - else + } + else { if (qry[pos] == '\\') @@ -567,9 +595,9 @@ int ExecuteSqlCommandBuf(ArchiveHandle* AH, void *qryv, int bufLen) AH->sqlparse.backSlash = !AH->sqlparse.backSlash; else AH->sqlparse.backSlash = 1; - } else { - AH->sqlparse.backSlash = 0; } + else + AH->sqlparse.backSlash = 0; } break; @@ -583,33 +611,37 @@ int ExecuteSqlCommandBuf(ArchiveHandle* AH, void *qryv, int bufLen) return 1; } -void FixupBlobRefs(ArchiveHandle *AH, char *tablename) +void +FixupBlobRefs(ArchiveHandle *AH, char *tablename) { - PQExpBuffer tblQry = createPQExpBuffer(); - PGresult *res, *uRes; - int i, n; - char *attr; + PQExpBuffer tblQry = createPQExpBuffer(); + PGresult *res, + *uRes; + int i, + n; + char *attr; if (strcmp(tablename, BLOB_XREF_TABLE) == 0) return; appendPQExpBuffer(tblQry, "SELECT a.attname FROM pg_class c, pg_attribute a, pg_type t " - " WHERE a.attnum > 0 AND a.attrelid = c.oid AND a.atttypid = t.oid " - " AND t.typname = 'oid' AND c.relname = '%s';", tablename); + " WHERE a.attnum > 0 AND a.attrelid = c.oid AND a.atttypid = t.oid " + " AND t.typname = 'oid' AND c.relname = '%s';", tablename); res = PQexec(AH->blobConnection, tblQry->data); if (!res) die_horribly(AH, "%s: could not find OID attrs of %s. Explanation from backend '%s'\n", - progname, tablename, PQerrorMessage(AH->connection)); + progname, tablename, PQerrorMessage(AH->connection)); - if ((n = PQntuples(res)) == 0) { + if ((n = PQntuples(res)) == 0) + { /* We're done */ ahlog(AH, 1, "No OID attributes in table %s\n", tablename); PQclear(res); return; } - for (i = 0 ; i < n ; i++) + for (i = 0; i < n; i++) { attr = PQgetvalue(res, i, 0); @@ -618,28 +650,28 @@ void FixupBlobRefs(ArchiveHandle *AH, char *tablename) resetPQExpBuffer(tblQry); /* - * We should use coalesce here (rather than 'exists'), but it seems to - * be broken in 7.0.2 (weird optimizer strategy) + * We should use coalesce here (rather than 'exists'), but it + * seems to be broken in 7.0.2 (weird optimizer strategy) */ - appendPQExpBuffer(tblQry, "UPDATE \"%s\" SET \"%s\" = ",tablename, attr); + appendPQExpBuffer(tblQry, "UPDATE \"%s\" SET \"%s\" = ", tablename, attr); appendPQExpBuffer(tblQry, " (SELECT x.newOid FROM \"%s\" x WHERE x.oldOid = \"%s\".\"%s\")", - BLOB_XREF_TABLE, tablename, attr); + BLOB_XREF_TABLE, tablename, attr); appendPQExpBuffer(tblQry, " where exists" - "(select * from %s x where x.oldOid = \"%s\".\"%s\");", - BLOB_XREF_TABLE, tablename, attr); + "(select * from %s x where x.oldOid = \"%s\".\"%s\");", + BLOB_XREF_TABLE, tablename, attr); ahlog(AH, 10, " - sql:\n%s\n", tblQry->data); uRes = PQexec(AH->blobConnection, tblQry->data); if (!uRes) die_horribly(AH, "%s: could not update attr %s of table %s. Explanation from backend '%s'\n", - progname, attr, tablename, PQerrorMessage(AH->blobConnection)); + progname, attr, tablename, PQerrorMessage(AH->blobConnection)); - if ( PQresultStatus(uRes) != PGRES_COMMAND_OK ) + if (PQresultStatus(uRes) != PGRES_COMMAND_OK) die_horribly(AH, "%s: error while updating attr %s of table %s (result = %d)." - " Explanation from backend '%s'\n", - progname, attr, tablename, PQresultStatus(uRes), - PQerrorMessage(AH->blobConnection)); + " Explanation from backend '%s'\n", + progname, attr, tablename, PQresultStatus(uRes), + PQerrorMessage(AH->blobConnection)); PQclear(uRes); } @@ -651,15 +683,14 @@ void FixupBlobRefs(ArchiveHandle *AH, char *tablename) /********** * Convenient SQL calls **********/ -void CreateBlobXrefTable(ArchiveHandle* AH) +void +CreateBlobXrefTable(ArchiveHandle *AH) { - PQExpBuffer qry = createPQExpBuffer(); + PQExpBuffer qry = createPQExpBuffer(); /* IF we don't have a BLOB connection, then create one */ if (!AH->blobConnection) - { AH->blobConnection = _connectDB(AH, NULL, NULL); - } ahlog(AH, 1, "Creating table for BLOBS xrefs\n"); @@ -673,18 +704,20 @@ void CreateBlobXrefTable(ArchiveHandle* AH) _executeSqlCommand(AH, AH->blobConnection, qry, "can not create index on BLOB xref table '" BLOB_XREF_TABLE "'"); } -void InsertBlobXref(ArchiveHandle* AH, int old, int new) +void +InsertBlobXref(ArchiveHandle *AH, int old, int new) { - PQExpBuffer qry = createPQExpBuffer(); + PQExpBuffer qry = createPQExpBuffer(); appendPQExpBuffer(qry, "Insert Into %s(oldOid, newOid) Values (%d, %d);", BLOB_XREF_TABLE, old, new); _executeSqlCommand(AH, AH->blobConnection, qry, "can not create BLOB xref entry"); } -void StartTransaction(ArchiveHandle* AH) +void +StartTransaction(ArchiveHandle *AH) { - PQExpBuffer qry = createPQExpBuffer(); + PQExpBuffer qry = createPQExpBuffer(); appendPQExpBuffer(qry, "Begin;"); @@ -692,9 +725,10 @@ void StartTransaction(ArchiveHandle* AH) AH->txActive = true; } -void StartTransactionXref(ArchiveHandle* AH) +void +StartTransactionXref(ArchiveHandle *AH) { - PQExpBuffer qry = createPQExpBuffer(); + PQExpBuffer qry = createPQExpBuffer(); appendPQExpBuffer(qry, "Begin;"); @@ -702,19 +736,21 @@ void StartTransactionXref(ArchiveHandle* AH) AH->blobTxActive = true; } -void CommitTransaction(ArchiveHandle* AH) +void +CommitTransaction(ArchiveHandle *AH) { - PQExpBuffer qry = createPQExpBuffer(); + PQExpBuffer qry = createPQExpBuffer(); - appendPQExpBuffer(qry, "Commit;"); + appendPQExpBuffer(qry, "Commit;"); - ExecuteSqlCommand(AH, qry, "can not commit database transaction"); + ExecuteSqlCommand(AH, qry, "can not commit database transaction"); AH->txActive = false; } -void CommitTransactionXref(ArchiveHandle* AH) +void +CommitTransactionXref(ArchiveHandle *AH) { - PQExpBuffer qry = createPQExpBuffer(); + PQExpBuffer qry = createPQExpBuffer(); appendPQExpBuffer(qry, "Commit;"); |