aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/pg_dump/common.c4
-rw-r--r--src/bin/pg_dump/pg_dump.c172
-rw-r--r--src/bin/pg_dump/pg_dump.h9
3 files changed, 90 insertions, 95 deletions
diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c
index 3ad451408b0..cf5bf3d0b1e 100644
--- a/src/bin/pg_dump/common.c
+++ b/src/bin/pg_dump/common.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.30 1999/05/25 16:13:05 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.31 1999/05/26 21:51:13 tgl Exp $
*
* Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2
*
@@ -502,7 +502,7 @@ const char *
fmtId(const char *rawid, bool force_quotes)
{
const char *cp;
- static char id[MAXQUERYLEN];
+ static char id[MAX_QUERY_SIZE];
if (!force_quotes)
for (cp = rawid; *cp != '\0'; cp++)
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 9218b5bcbba..e94faf35b16 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -21,7 +21,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.111 1999/05/26 19:45:53 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.112 1999/05/26 21:51:12 tgl Exp $
*
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
*
@@ -188,7 +188,7 @@ isViewRule(char *relname)
{
PGresult *res;
int ntups;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
res = PQexec(g_conn, "begin");
if (!res ||
@@ -319,11 +319,10 @@ dumpClasses_dumpData(FILE *fout, const char *classname,
const TableInfo tblinfo, bool oids)
{
PGresult *res;
- char q[MAXQUERYLEN];
+ char q[MAX_QUERY_SIZE];
int tuple;
int field;
char *expsrc;
- char *expdest;
sprintf(q, "SELECT * FROM %s", fmtId(classname, force_quotes));
res = PQexec(g_conn, q);
@@ -348,60 +347,58 @@ dumpClasses_dumpData(FILE *fout, const char *classname,
strcat(q, ") ");
fprintf(fout, "%s", q);
}
- fprintf(fout, "values (");
+ fprintf(fout, "VALUES (");
for (field = 0; field < PQnfields(res); field++)
{
if (field > 0)
fprintf(fout, ",");
if (PQgetisnull(res, tuple, field))
+ {
fprintf(fout, "NULL");
- else
+ continue;
+ }
+ switch (PQftype(res, field))
{
- switch (PQftype(res, field))
- {
- case INT2OID:
- case INT4OID:
- case OIDOID: /* int types */
- case FLOAT4OID:
- case FLOAT8OID: /* float types */
- /* These types are printed without quotes */
- fprintf(fout, "%s",
- PQgetvalue(res, tuple, field));
- break;
- default:
-
- /*
- * All other types are printed as string literals,
- * with appropriate escaping of special
- * characters. Quote mark ' goes to '' per SQL
- * standard, other stuff goes to \ sequences.
- */
- expsrc = PQgetvalue(res, tuple, field);
- expdest = q;
- for (; *expsrc; expsrc++)
+ case INT2OID:
+ case INT4OID:
+ case OIDOID: /* int types */
+ case FLOAT4OID:
+ case FLOAT8OID: /* float types */
+ /* These types are printed without quotes */
+ fprintf(fout, "%s",
+ PQgetvalue(res, tuple, field));
+ break;
+ default:
+ /*
+ * All other types are printed as string literals,
+ * with appropriate escaping of special
+ * characters. Quote mark ' goes to '' per SQL
+ * standard, other stuff goes to \ sequences.
+ */
+ putc('\'', fout);
+ expsrc = PQgetvalue(res, tuple, field);
+ while (*expsrc)
+ {
+ char ch = *expsrc++;
+
+ if (ch == '\\' || ch == '\'')
{
- char ch = *expsrc;
-
- if (ch == '\\' || ch == '\'')
- {
- *expdest++ = ch; /* double it */
- *expdest++ = ch;
- }
- else if (ch < '\040')
- {
- /* generate octal escape for control chars */
- *expdest++ = '\\';
- *expdest++ = ((ch >> 6) & 3) + '0';
- *expdest++ = ((ch >> 3) & 7) + '0';
- *expdest++ = (ch & 7) + '0';
- }
- else
- *expdest++ = ch;
+ putc(ch, fout); /* double these */
+ putc(ch, fout);
}
- *expdest = '\0';
- fprintf(fout, "'%s'", q);
- break;
- }
+ else if (ch < '\040')
+ {
+ /* generate octal escape for control chars */
+ putc('\\', fout);
+ putc(((ch >> 6) & 3) + '0', fout);
+ putc(((ch >> 3) & 7) + '0', fout);
+ putc((ch & 7) + '0', fout);
+ }
+ else
+ putc(ch, fout);
+ }
+ putc('\'', fout);
+ break;
}
}
fprintf(fout, ");\n");
@@ -746,7 +743,9 @@ main(int argc, char **argv)
}
fflush(g_fout);
- fclose(g_fout);
+ if (g_fout != stdout)
+ fclose(g_fout);
+
clearTableInfo(tblinfo, numTables);
PQfinish(g_conn);
exit(0);
@@ -766,7 +765,7 @@ getTypes(int *numTypes)
PGresult *res;
int ntups;
int i;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
TypeInfo *tinfo;
int i_oid;
@@ -895,7 +894,7 @@ getOperators(int *numOprs)
PGresult *res;
int ntups;
int i;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
OprInfo *oprinfo;
@@ -1238,7 +1237,7 @@ getAggregates(int *numAggs)
PGresult *res;
int ntups;
int i;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
AggInfo *agginfo;
int i_oid;
@@ -1332,7 +1331,7 @@ getFuncs(int *numFuncs)
PGresult *res;
int ntups;
int i;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
FuncInfo *finfo;
int i_oid;
@@ -1432,7 +1431,7 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
PGresult *res;
int ntups;
int i;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
TableInfo *tblinfo;
int i_oid;
@@ -1651,7 +1650,7 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
int tgnargs = atoi(PQgetvalue(res2, i2, i_tgnargs));
char *tgargs = PQgetvalue(res2, i2, i_tgargs);
char *p;
- char farg[MAXQUERYLEN];
+ char farg[MAX_QUERY_SIZE];
int findx;
for (findx = 0; findx < numFuncs; findx++)
@@ -1778,7 +1777,7 @@ getInherits(int *numInherits)
PGresult *res;
int ntups;
int i;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
InhInfo *inhinfo;
int i_inhrel;
@@ -1840,7 +1839,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
{
int i,
j;
- char q[MAXQUERYLEN];
+ char q[MAX_QUERY_SIZE];
int i_attname;
int i_typname;
int i_atttypmod;
@@ -1951,7 +1950,7 @@ IndInfo *
getIndices(int *numIndices)
{
int i;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
PGresult *res;
int ntups;
IndInfo *indinfo;
@@ -2042,7 +2041,7 @@ dumpTypes(FILE *fout, FuncInfo *finfo, int numFuncs,
TypeInfo *tinfo, int numTypes)
{
int i;
- char q[MAXQUERYLEN];
+ char q[MAX_QUERY_SIZE];
int funcInd;
for (i = 0; i < numTypes; i++)
@@ -2122,7 +2121,7 @@ dumpProcLangs(FILE *fout, FuncInfo *finfo, int numFuncs,
TypeInfo *tinfo, int numTypes)
{
PGresult *res;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
int ntups;
int i_lanname;
int i_lanpltrusted;
@@ -2224,7 +2223,7 @@ static void
dumpOneFunc(FILE *fout, FuncInfo *finfo, int i,
TypeInfo *tinfo, int numTypes)
{
- char q[MAXQUERYLEN];
+ char q[MAX_QUERY_SIZE];
int j;
char *func_def;
char func_lang[NAMEDATALEN + 1];
@@ -2344,15 +2343,15 @@ dumpOprs(FILE *fout, OprInfo *oprinfo, int numOperators,
TypeInfo *tinfo, int numTypes)
{
int i;
- char q[MAXQUERYLEN];
- char leftarg[MAXQUERYLEN];
- char rightarg[MAXQUERYLEN];
- char commutator[MAXQUERYLEN];
- char negator[MAXQUERYLEN];
- char restrictor[MAXQUERYLEN];
- char join[MAXQUERYLEN];
- char sort1[MAXQUERYLEN];
- char sort2[MAXQUERYLEN];
+ char q[MAX_QUERY_SIZE];
+ char leftarg[MAX_QUERY_SIZE/8];
+ char rightarg[MAX_QUERY_SIZE/8];
+ char commutator[MAX_QUERY_SIZE/8];
+ char negator[MAX_QUERY_SIZE/8];
+ char restrictor[MAX_QUERY_SIZE/8];
+ char join[MAX_QUERY_SIZE/8];
+ char sort1[MAX_QUERY_SIZE/8];
+ char sort2[MAX_QUERY_SIZE/8];
for (i = 0; i < numOperators; i++)
{
@@ -2460,11 +2459,11 @@ dumpAggs(FILE *fout, AggInfo *agginfo, int numAggs,
TypeInfo *tinfo, int numTypes)
{
int i;
- char q[MAXQUERYLEN];
- char sfunc1[MAXQUERYLEN];
- char sfunc2[MAXQUERYLEN];
- char basetype[MAXQUERYLEN];
- char finalfunc[MAXQUERYLEN];
+ char q[MAX_QUERY_SIZE];
+ char sfunc1[MAX_QUERY_SIZE];
+ char sfunc2[MAX_QUERY_SIZE];
+ char basetype[MAX_QUERY_SIZE];
+ char finalfunc[MAX_QUERY_SIZE];
char comma1[2],
comma2[2];
@@ -2667,10 +2666,11 @@ dumpACL(FILE *fout, TableInfo tbinfo)
else
{
*eqpos = '\0'; /* it's ok to clobber aclbuf */
- if (strncmp(tok, "group ",strlen("group ")) == 0)
- fprintf(fout, "GROUP %s;\n",
- fmtId(tok + sizeof("group ") - 1, force_quotes));
- else fprintf(fout, "%s;\n", fmtId(tok, force_quotes));
+ if (strncmp(tok, "group ", strlen("group ")) == 0)
+ fprintf(fout, "GROUP %s;\n",
+ fmtId(tok + strlen("group "), force_quotes));
+ else
+ fprintf(fout, "%s;\n", fmtId(tok, force_quotes));
}
}
free(priv);
@@ -2694,7 +2694,7 @@ dumpTables(FILE *fout, TableInfo *tblinfo, int numTables,
int i,
j,
k;
- char q[MAXQUERYLEN];
+ char q[MAX_QUERY_SIZE];
char *serialSeq = NULL; /* implicit sequence name created
* by SERIAL datatype */
const char *serialSeqSuffix = "_id_seq"; /* suffix for implicit
@@ -2873,9 +2873,9 @@ dumpIndices(FILE *fout, IndInfo *indinfo, int numIndices,
indclass;
int nclass;
- char q[MAXQUERYLEN],
- id1[MAXQUERYLEN],
- id2[MAXQUERYLEN];
+ char q[MAX_QUERY_SIZE],
+ id1[MAX_QUERY_SIZE],
+ id2[MAX_QUERY_SIZE];
PGresult *res;
for (i = 0; i < numIndices; i++)
@@ -3213,7 +3213,7 @@ dumpSequence(FILE *fout, TableInfo tbinfo)
char cycled,
called,
*t;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
sprintf(query,
"SELECT sequence_name, last_value, increment_by, max_value, "
@@ -3310,7 +3310,7 @@ dumpRules(FILE *fout, const char *tablename,
int nrules;
int i,
t;
- char query[MAXQUERYLEN];
+ char query[MAX_QUERY_SIZE];
int i_definition;
diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h
index 1d83387a14f..fc2aab94d5e 100644
--- a/src/bin/pg_dump/pg_dump.h
+++ b/src/bin/pg_dump/pg_dump.h
@@ -5,7 +5,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_dump.h,v 1.38 1999/05/25 16:13:09 momjian Exp $
+ * $Id: pg_dump.h,v 1.39 1999/05/26 21:51:11 tgl Exp $
*
* Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2
*
@@ -224,9 +224,4 @@ extern void dumpTables(FILE *fout, TableInfo *tbinfo, int numTables,
const bool acls);
extern void dumpIndices(FILE *fout, IndInfo *indinfo, int numIndices,
TableInfo *tbinfo, int numTables, const char *tablename);
-
-extern const char *
- fmtId(const char *identifier, bool force_quotes);
-
-/* largest query string size */
-#define MAXQUERYLEN 5000
+extern const char *fmtId(const char *identifier, bool force_quotes);