21
21
*
22
22
*
23
23
* IDENTIFICATION
24
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.111 1999/05/26 19:45:53 momjian Exp $
24
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.112 1999/05/26 21:51:12 tgl Exp $
25
25
*
26
26
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
27
27
*
@@ -188,7 +188,7 @@ isViewRule(char *relname)
188
188
{
189
189
PGresult * res ;
190
190
int ntups ;
191
- char query [MAXQUERYLEN ];
191
+ char query [MAX_QUERY_SIZE ];
192
192
193
193
res = PQexec (g_conn , "begin" );
194
194
if (!res ||
@@ -319,11 +319,10 @@ dumpClasses_dumpData(FILE *fout, const char *classname,
319
319
const TableInfo tblinfo , bool oids )
320
320
{
321
321
PGresult * res ;
322
- char q [MAXQUERYLEN ];
322
+ char q [MAX_QUERY_SIZE ];
323
323
int tuple ;
324
324
int field ;
325
325
char * expsrc ;
326
- char * expdest ;
327
326
328
327
sprintf (q , "SELECT * FROM %s" , fmtId (classname , force_quotes ));
329
328
res = PQexec (g_conn , q );
@@ -348,60 +347,58 @@ dumpClasses_dumpData(FILE *fout, const char *classname,
348
347
strcat (q , ") " );
349
348
fprintf (fout , "%s" , q );
350
349
}
351
- fprintf (fout , "values (" );
350
+ fprintf (fout , "VALUES (" );
352
351
for (field = 0 ; field < PQnfields (res ); field ++ )
353
352
{
354
353
if (field > 0 )
355
354
fprintf (fout , "," );
356
355
if (PQgetisnull (res , tuple , field ))
356
+ {
357
357
fprintf (fout , "NULL" );
358
- else
358
+ continue ;
359
+ }
360
+ switch (PQftype (res , field ))
359
361
{
360
- switch (PQftype (res , field ))
361
- {
362
- case INT2OID :
363
- case INT4OID :
364
- case OIDOID : /* int types */
365
- case FLOAT4OID :
366
- case FLOAT8OID : /* float types */
367
- /* These types are printed without quotes */
368
- fprintf (fout , "%s" ,
369
- PQgetvalue (res , tuple , field ));
370
- break ;
371
- default :
372
-
373
- /*
374
- * All other types are printed as string literals,
375
- * with appropriate escaping of special
376
- * characters. Quote mark ' goes to '' per SQL
377
- * standard, other stuff goes to \ sequences.
378
- */
379
- expsrc = PQgetvalue (res , tuple , field );
380
- expdest = q ;
381
- for (; * expsrc ; expsrc ++ )
362
+ case INT2OID :
363
+ case INT4OID :
364
+ case OIDOID : /* int types */
365
+ case FLOAT4OID :
366
+ case FLOAT8OID : /* float types */
367
+ /* These types are printed without quotes */
368
+ fprintf (fout , "%s" ,
369
+ PQgetvalue (res , tuple , field ));
370
+ break ;
371
+ default :
372
+ /*
373
+ * All other types are printed as string literals,
374
+ * with appropriate escaping of special
375
+ * characters. Quote mark ' goes to '' per SQL
376
+ * standard, other stuff goes to \ sequences.
377
+ */
378
+ putc ('\'' , fout );
379
+ expsrc = PQgetvalue (res , tuple , field );
380
+ while (* expsrc )
381
+ {
382
+ char ch = * expsrc ++ ;
383
+
384
+ if (ch == '\\' || ch == '\'' )
382
385
{
383
- char ch = * expsrc ;
384
-
385
- if (ch == '\\' || ch == '\'' )
386
- {
387
- * expdest ++ = ch ; /* double it */
388
- * expdest ++ = ch ;
389
- }
390
- else if (ch < '\040' )
391
- {
392
- /* generate octal escape for control chars */
393
- * expdest ++ = '\\' ;
394
- * expdest ++ = ((ch >> 6 ) & 3 ) + '0' ;
395
- * expdest ++ = ((ch >> 3 ) & 7 ) + '0' ;
396
- * expdest ++ = (ch & 7 ) + '0' ;
397
- }
398
- else
399
- * expdest ++ = ch ;
386
+ putc (ch , fout ); /* double these */
387
+ putc (ch , fout );
400
388
}
401
- * expdest = '\0' ;
402
- fprintf (fout , "'%s'" , q );
403
- break ;
404
- }
389
+ else if (ch < '\040' )
390
+ {
391
+ /* generate octal escape for control chars */
392
+ putc ('\\' , fout );
393
+ putc (((ch >> 6 ) & 3 ) + '0' , fout );
394
+ putc (((ch >> 3 ) & 7 ) + '0' , fout );
395
+ putc ((ch & 7 ) + '0' , fout );
396
+ }
397
+ else
398
+ putc (ch , fout );
399
+ }
400
+ putc ('\'' , fout );
401
+ break ;
405
402
}
406
403
}
407
404
fprintf (fout , ");\n" );
@@ -746,7 +743,9 @@ main(int argc, char **argv)
746
743
}
747
744
748
745
fflush (g_fout );
749
- fclose (g_fout );
746
+ if (g_fout != stdout )
747
+ fclose (g_fout );
748
+
750
749
clearTableInfo (tblinfo , numTables );
751
750
PQfinish (g_conn );
752
751
exit (0 );
@@ -766,7 +765,7 @@ getTypes(int *numTypes)
766
765
PGresult * res ;
767
766
int ntups ;
768
767
int i ;
769
- char query [MAXQUERYLEN ];
768
+ char query [MAX_QUERY_SIZE ];
770
769
TypeInfo * tinfo ;
771
770
772
771
int i_oid ;
@@ -895,7 +894,7 @@ getOperators(int *numOprs)
895
894
PGresult * res ;
896
895
int ntups ;
897
896
int i ;
898
- char query [MAXQUERYLEN ];
897
+ char query [MAX_QUERY_SIZE ];
899
898
900
899
OprInfo * oprinfo ;
901
900
@@ -1238,7 +1237,7 @@ getAggregates(int *numAggs)
1238
1237
PGresult * res ;
1239
1238
int ntups ;
1240
1239
int i ;
1241
- char query [MAXQUERYLEN ];
1240
+ char query [MAX_QUERY_SIZE ];
1242
1241
AggInfo * agginfo ;
1243
1242
1244
1243
int i_oid ;
@@ -1332,7 +1331,7 @@ getFuncs(int *numFuncs)
1332
1331
PGresult * res ;
1333
1332
int ntups ;
1334
1333
int i ;
1335
- char query [MAXQUERYLEN ];
1334
+ char query [MAX_QUERY_SIZE ];
1336
1335
FuncInfo * finfo ;
1337
1336
1338
1337
int i_oid ;
@@ -1432,7 +1431,7 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
1432
1431
PGresult * res ;
1433
1432
int ntups ;
1434
1433
int i ;
1435
- char query [MAXQUERYLEN ];
1434
+ char query [MAX_QUERY_SIZE ];
1436
1435
TableInfo * tblinfo ;
1437
1436
1438
1437
int i_oid ;
@@ -1651,7 +1650,7 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
1651
1650
int tgnargs = atoi (PQgetvalue (res2 , i2 , i_tgnargs ));
1652
1651
char * tgargs = PQgetvalue (res2 , i2 , i_tgargs );
1653
1652
char * p ;
1654
- char farg [MAXQUERYLEN ];
1653
+ char farg [MAX_QUERY_SIZE ];
1655
1654
int findx ;
1656
1655
1657
1656
for (findx = 0 ; findx < numFuncs ; findx ++ )
@@ -1778,7 +1777,7 @@ getInherits(int *numInherits)
1778
1777
PGresult * res ;
1779
1778
int ntups ;
1780
1779
int i ;
1781
- char query [MAXQUERYLEN ];
1780
+ char query [MAX_QUERY_SIZE ];
1782
1781
InhInfo * inhinfo ;
1783
1782
1784
1783
int i_inhrel ;
@@ -1840,7 +1839,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
1840
1839
{
1841
1840
int i ,
1842
1841
j ;
1843
- char q [MAXQUERYLEN ];
1842
+ char q [MAX_QUERY_SIZE ];
1844
1843
int i_attname ;
1845
1844
int i_typname ;
1846
1845
int i_atttypmod ;
@@ -1951,7 +1950,7 @@ IndInfo *
1951
1950
getIndices (int * numIndices )
1952
1951
{
1953
1952
int i ;
1954
- char query [MAXQUERYLEN ];
1953
+ char query [MAX_QUERY_SIZE ];
1955
1954
PGresult * res ;
1956
1955
int ntups ;
1957
1956
IndInfo * indinfo ;
@@ -2042,7 +2041,7 @@ dumpTypes(FILE *fout, FuncInfo *finfo, int numFuncs,
2042
2041
TypeInfo * tinfo , int numTypes )
2043
2042
{
2044
2043
int i ;
2045
- char q [MAXQUERYLEN ];
2044
+ char q [MAX_QUERY_SIZE ];
2046
2045
int funcInd ;
2047
2046
2048
2047
for (i = 0 ; i < numTypes ; i ++ )
@@ -2122,7 +2121,7 @@ dumpProcLangs(FILE *fout, FuncInfo *finfo, int numFuncs,
2122
2121
TypeInfo * tinfo , int numTypes )
2123
2122
{
2124
2123
PGresult * res ;
2125
- char query [MAXQUERYLEN ];
2124
+ char query [MAX_QUERY_SIZE ];
2126
2125
int ntups ;
2127
2126
int i_lanname ;
2128
2127
int i_lanpltrusted ;
@@ -2224,7 +2223,7 @@ static void
2224
2223
dumpOneFunc (FILE * fout , FuncInfo * finfo , int i ,
2225
2224
TypeInfo * tinfo , int numTypes )
2226
2225
{
2227
- char q [MAXQUERYLEN ];
2226
+ char q [MAX_QUERY_SIZE ];
2228
2227
int j ;
2229
2228
char * func_def ;
2230
2229
char func_lang [NAMEDATALEN + 1 ];
@@ -2344,15 +2343,15 @@ dumpOprs(FILE *fout, OprInfo *oprinfo, int numOperators,
2344
2343
TypeInfo * tinfo , int numTypes )
2345
2344
{
2346
2345
int i ;
2347
- char q [MAXQUERYLEN ];
2348
- char leftarg [MAXQUERYLEN ];
2349
- char rightarg [MAXQUERYLEN ];
2350
- char commutator [MAXQUERYLEN ];
2351
- char negator [MAXQUERYLEN ];
2352
- char restrictor [MAXQUERYLEN ];
2353
- char join [MAXQUERYLEN ];
2354
- char sort1 [MAXQUERYLEN ];
2355
- char sort2 [MAXQUERYLEN ];
2346
+ char q [MAX_QUERY_SIZE ];
2347
+ char leftarg [MAX_QUERY_SIZE / 8 ];
2348
+ char rightarg [MAX_QUERY_SIZE / 8 ];
2349
+ char commutator [MAX_QUERY_SIZE / 8 ];
2350
+ char negator [MAX_QUERY_SIZE / 8 ];
2351
+ char restrictor [MAX_QUERY_SIZE / 8 ];
2352
+ char join [MAX_QUERY_SIZE / 8 ];
2353
+ char sort1 [MAX_QUERY_SIZE / 8 ];
2354
+ char sort2 [MAX_QUERY_SIZE / 8 ];
2356
2355
2357
2356
for (i = 0 ; i < numOperators ; i ++ )
2358
2357
{
@@ -2460,11 +2459,11 @@ dumpAggs(FILE *fout, AggInfo *agginfo, int numAggs,
2460
2459
TypeInfo * tinfo , int numTypes )
2461
2460
{
2462
2461
int i ;
2463
- char q [MAXQUERYLEN ];
2464
- char sfunc1 [MAXQUERYLEN ];
2465
- char sfunc2 [MAXQUERYLEN ];
2466
- char basetype [MAXQUERYLEN ];
2467
- char finalfunc [MAXQUERYLEN ];
2462
+ char q [MAX_QUERY_SIZE ];
2463
+ char sfunc1 [MAX_QUERY_SIZE ];
2464
+ char sfunc2 [MAX_QUERY_SIZE ];
2465
+ char basetype [MAX_QUERY_SIZE ];
2466
+ char finalfunc [MAX_QUERY_SIZE ];
2468
2467
char comma1 [2 ],
2469
2468
comma2 [2 ];
2470
2469
@@ -2667,10 +2666,11 @@ dumpACL(FILE *fout, TableInfo tbinfo)
2667
2666
else
2668
2667
{
2669
2668
* eqpos = '\0' ; /* it's ok to clobber aclbuf */
2670
- if (strncmp (tok , "group " ,strlen ("group " )) == 0 )
2671
- fprintf (fout , "GROUP %s;\n" ,
2672
- fmtId (tok + sizeof ("group " ) - 1 , force_quotes ));
2673
- else fprintf (fout , "%s;\n" , fmtId (tok , force_quotes ));
2669
+ if (strncmp (tok , "group " , strlen ("group " )) == 0 )
2670
+ fprintf (fout , "GROUP %s;\n" ,
2671
+ fmtId (tok + strlen ("group " ), force_quotes ));
2672
+ else
2673
+ fprintf (fout , "%s;\n" , fmtId (tok , force_quotes ));
2674
2674
}
2675
2675
}
2676
2676
free (priv );
@@ -2694,7 +2694,7 @@ dumpTables(FILE *fout, TableInfo *tblinfo, int numTables,
2694
2694
int i ,
2695
2695
j ,
2696
2696
k ;
2697
- char q [MAXQUERYLEN ];
2697
+ char q [MAX_QUERY_SIZE ];
2698
2698
char * serialSeq = NULL ; /* implicit sequence name created
2699
2699
* by SERIAL datatype */
2700
2700
const char * serialSeqSuffix = "_id_seq" ; /* suffix for implicit
@@ -2873,9 +2873,9 @@ dumpIndices(FILE *fout, IndInfo *indinfo, int numIndices,
2873
2873
indclass ;
2874
2874
int nclass ;
2875
2875
2876
- char q [MAXQUERYLEN ],
2877
- id1 [MAXQUERYLEN ],
2878
- id2 [MAXQUERYLEN ];
2876
+ char q [MAX_QUERY_SIZE ],
2877
+ id1 [MAX_QUERY_SIZE ],
2878
+ id2 [MAX_QUERY_SIZE ];
2879
2879
PGresult * res ;
2880
2880
2881
2881
for (i = 0 ; i < numIndices ; i ++ )
@@ -3213,7 +3213,7 @@ dumpSequence(FILE *fout, TableInfo tbinfo)
3213
3213
char cycled ,
3214
3214
called ,
3215
3215
* t ;
3216
- char query [MAXQUERYLEN ];
3216
+ char query [MAX_QUERY_SIZE ];
3217
3217
3218
3218
sprintf (query ,
3219
3219
"SELECT sequence_name, last_value, increment_by, max_value, "
@@ -3310,7 +3310,7 @@ dumpRules(FILE *fout, const char *tablename,
3310
3310
int nrules ;
3311
3311
int i ,
3312
3312
t ;
3313
- char query [MAXQUERYLEN ];
3313
+ char query [MAX_QUERY_SIZE ];
3314
3314
3315
3315
int i_definition ;
3316
3316
0 commit comments