*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.39 2002/01/18 17:13:50 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.40 2002/01/18 19:17:04 momjian Exp $
*
* Modifications - 28-Jun-2000 - pjw@rhyme.com.au
*
*
* Modifications - 18-Jan-2002 - pjw@rhyme.com.au
* - Modified _tocEntryRequired to handle '<Init>/Max OID' as a special
- * case (ie. as a DATA item) as per bugs reported by Bruce Momjian
+ * case (ie. as a DATA item) as per bugs reported by Bruce Momjian
* around 17-Jan-2002.
*
*-------------------------------------------------------------------------
res = res & ~REQ_DATA;
}
- /* Special case: <Init> type with <Max OID> name; this is part of
- * a DATA restore even though it has SQL.
- */
- if ( ( strcmp(te->desc, "<Init>") == 0 ) && ( strcmp(te->name, "Max OID") == 0) ) {
+ /*
+ * Special case: <Init> type with <Max OID> name; this is part of a
+ * DATA restore even though it has SQL.
+ */
+ if ((strcmp(te->desc, "<Init>") == 0) && (strcmp(te->name, "Max OID") == 0))
res = REQ_DATA;
- }
/* Mask it if we only want schema */
if (ropt->schemaOnly)
* Implements the basic DB functions used by the archiver.
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.30 2002/01/18 17:13:51 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.31 2002/01/18 19:17:05 momjian Exp $
*
* NOTES
*
*
* Modifications - 18-Jan-2002 - pjw@rhyme.com.au
*
- * - Split ExecuteSqlCommandBuf into 3 routines for (slightly) improved
+ * - Split ExecuteSqlCommandBuf into 3 routines for (slightly) improved
* clarity. Modify loop to cater for COPY commands buried in the SQL
* command buffer (prev version assumed COPY command was executed
* in prior call). This was to fix the buf in the 'set max oid' code.
static PGconn *_connectDB(ArchiveHandle *AH, const char *newdbname, const char *newUser);
static int _executeSqlCommand(ArchiveHandle *AH, PGconn *conn, PQExpBuffer qry, char *desc);
static void notice_processor(void *arg, const char *message);
-static char* _sendSQLLine( ArchiveHandle *AH, char *qry, char *eos);
-static char* _sendCopyLine( ArchiveHandle *AH, char *qry, char *eos);
+static char *_sendSQLLine(ArchiveHandle *AH, char *qry, char *eos);
+static char *_sendCopyLine(ArchiveHandle *AH, char *qry, char *eos);
/*
return strlen(qry->data);
}
-/*
+/*
* Used by ExecuteSqlCommandBuf to send one buffered line when running a COPY command.
*/
-static char*
-_sendCopyLine( ArchiveHandle *AH, char *qry, char *eos)
+static char *
+_sendCopyLine(ArchiveHandle *AH, char *qry, char *eos)
{
- int loc; /* Location of next newline */
- int pos = 0; /* Current position */
- int sPos = 0; /* Last pos of a slash char */
- int isEnd = 0;
+ int loc; /* Location of next newline */
+ int pos = 0; /* Current position */
+ int sPos = 0; /* Last pos of a slash char */
+ int isEnd = 0;
/* loop to find unquoted newline ending the line of COPY data */
- for (;;) {
+ for (;;)
+ {
loc = strcspn(&qry[pos], "\n") + pos;
/* If no match, then wait */
- if (loc >= (eos - qry)) /* None found */
+ if (loc >= (eos - qry)) /* None found */
{
appendBinaryPQExpBuffer(AH->pgCopyBuf, qry, (eos - qry));
return eos;
sPos = loc - sPos;
/*
- * If an odd number of preceding slashes, then \n was escaped
- * so set the next search pos, and loop (if any left).
+ * If an odd number of preceding slashes, then \n was escaped so
+ * set the next search pos, and loop (if any left).
*/
if ((sPos & 1) == 1)
{
appendBinaryPQExpBuffer(AH->pgCopyBuf, qry, (eos - qry));
return eos;
}
- } else {
- break;
}
+ else
+ break;
}
/* We found an unquoted newline */
resetPQExpBuffer(AH->pgCopyBuf);
/*
- * fprintf(stderr, "Buffer is '%s'\n",
- * AH->pgCopyBuf->data);
+ * fprintf(stderr, "Buffer is '%s'\n", AH->pgCopyBuf->data);
*/
if (isEnd)
return qry + loc + 1;
}
-/*
+/*
* Used by ExecuteSqlCommandBuf to send one buffered line of SQL (not data for the copy command).
*/
-static char*
-_sendSQLLine( ArchiveHandle *AH, char *qry, char *eos)
+static char *
+_sendSQLLine(ArchiveHandle *AH, char *qry, char *eos)
{
- int pos = 0; /* Current position */
+ int pos = 0; /* Current position */
/*
- * The following is a mini state machine to assess the end 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 the end 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++)
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)
{
resetPQExpBuffer(AH->sqlBuf);
AH->sqlparse.lastChar = '\0';
- /* Remove any following newlines - so that embedded COPY commands don't get a
- * starting newline.
+ /*
+ * Remove any following newlines - so that embedded
+ * COPY commands don't get a starting newline.
*/
pos++;
- for ( ; pos < (eos - qry) && qry[pos] == '\n' ; pos++ ) ;
+ for (; pos < (eos - qry) && qry[pos] == '\n'; pos++);
/* We've got our line, so exit */
return qry + pos;
/* fprintf(stderr, "\n"); */
}
- /* If we get here, we've processed entire string with no complete SQL stmt */
- return eos;
+ /*
+ * If we get here, we've processed entire string with no complete SQL
+ * stmt
+ */
+ return eos;
}
/* Could switch between command and COPY IN mode at each line */
while (qry < eos)
{
- if (AH->pgCopyIn) {
+ if (AH->pgCopyIn)
qry = _sendCopyLine(AH, qry, eos);
- } else {
+ else
qry = _sendSQLLine(AH, qry, eos);
- }
}
return 1;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.237 2002/01/11 23:21:55 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.238 2002/01/18 19:17:05 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* numTables is set to the number of tables read in
*/
TableInfo *
-getTables(int *numTables, FuncInfo *finfo, int numFuncs, const char* tablename)
+getTables(int *numTables, FuncInfo *finfo, int numFuncs, const char *tablename)
{
PGresult *res;
int ntups;
/*
* First pass: extract data from result and lock tables. We do the
- * locking before anything else, to minimize the window wherein a table
- * could disappear under us.
+ * locking before anything else, to minimize the window wherein a
+ * table could disappear under us.
*
* Note that we have to collect info about all tables here, even when
* dumping only one, because we don't know which tables might be
* inheritance ancestors of the target table. Possible future
* improvement: suppress later collection of schema info about tables
- * that are determined not to be either targets or ancestors of targets.
+ * that are determined not to be either targets or ancestors of
+ * targets.
*/
tblinfo = (TableInfo *) malloc(ntups * sizeof(TableInfo));
*
* If no target tablename was specified, lock all tables we see,
* otherwise lock only the specified table. (This is incomplete
- * because we'll still try to collect schema info about all tables,
- * and could possibly lose during that phase. But for the typical
- * use where we're dumping all tables anyway, it matters not.)
+ * because we'll still try to collect schema info about all
+ * tables, and could possibly lose during that phase. But for the
+ * typical use where we're dumping all tables anyway, it matters
+ * not.)
*
- * NOTE: it'd be kinda nice to lock views and sequences too, not
- * only plain tables, but the backend doesn't presently allow that.
+ * NOTE: it'd be kinda nice to lock views and sequences too, not only
+ * plain tables, but the backend doesn't presently allow that.
*/
if ((tblinfo[i].relkind == RELKIND_RELATION) &&
- (tablename == NULL || strcmp(tblinfo[i].relname, tablename) == 0))
+ (tablename == NULL || strcmp(tblinfo[i].relname, tablename) == 0))
{
- PGresult *lres;
+ PGresult *lres;
resetPQExpBuffer(lockquery);
appendPQExpBuffer(lockquery,
"LOCK TABLE %s IN ACCESS SHARE MODE",
fmtId(tblinfo[i].relname, force_quotes));
- lres = PQexec(g_conn,lockquery->data);
+ lres = PQexec(g_conn, lockquery->data);
if (!lres || PQresultStatus(lres) != PGRES_COMMAND_OK)
{
- write_msg(NULL, "Attempt to lock table \"%s\" failed. %s",
+ write_msg(NULL, "Attempt to lock table \"%s\" failed. %s",
tblinfo[i].relname, PQerrorMessage(g_conn));
exit_nicely();
}
res = NULL;
/*
- * Second pass: pick up additional information about each table,
- * as required.
+ * Second pass: pick up additional information about each table, as
+ * required.
*/
for (i = 0; i < *numTables; i++)
{
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_restore.c,v 1.32 2002/01/10 01:11:45 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_restore.c,v 1.33 2002/01/18 19:17:05 momjian Exp $
*
* Modifications - 28-Jun-2000 - pjw@rhyme.com.au
*
" -F, --format={c|t} specify backup file format\n"
" -h, --host=HOSTNAME server host name\n"
" -i, --index=NAME restore named index\n"
- " -l, --list print summarized TOC of the archive\n"
+ " -l, --list print summarized TOC of the archive\n"
" -L, --use-list=FILENAME use specified table of contents for ordering\n"
" output from this file\n"
" -N, --orig-order restore in original dump order\n"
" -F {c|t} specify backup file format\n"
" -h HOSTNAME server host name\n"
" -i NAME restore named index\n"
- " -l print summarized TOC of the archive\n"
+ " -l print summarized TOC of the archive\n"
" -L FILENAME use specified table of contents for ordering\n"
" output from this file\n"
" -N restore in original dump order\n"
" -o restore in OID order\n"
- " -O do not reconnect to database to match\n"
+ " -O do not reconnect to database to match\n"
" object owner\n"
" -p PORT server port number\n"
" -P NAME restore named function\n"