Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 9d45f22

Browse files
committed
Here is the patch for pg_dump not handling NULL values in 'insert'
mode properly. This will apply correctly to 1.09 & 2.0 sources. From David H. Bennett
1 parent bdb25db commit 9d45f22

File tree

1 file changed

+29
-24
lines changed

1 file changed

+29
-24
lines changed

src/bin/pg_dump/pg_dump.c

+29-24
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
*
2121
*
2222
* IDENTIFICATION
23-
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.15 1996/11/17 04:56:01 momjian Exp $
23+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.16 1996/11/20 22:32:55 momjian Exp $
2424
*
2525
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
2626
*
@@ -1456,31 +1456,36 @@ dumpClasses(TableInfo *tblinfo, int numTables, FILE *fout, const char *onlytable
14561456
fprintf(fout, "values (");
14571457
field=0;
14581458
do {
1459-
switch(PQftype(res,field)) {
1460-
case 21: case 22: case 23: /* int types */
1461-
case 810: case 910: /* oldint types */
1462-
case 1005: case 1006: case 1007: /* _int types */
1463-
case 700: case 701: /* float types */
1464-
case 1021: case 1022: /* _float types */
1465-
fprintf(fout, "%s", PQgetvalue(res,tuple,field));
1466-
break;
1467-
default:
1459+
if (PQgetisnull(res,tuple,field)) {
1460+
fprintf(fout,"NULL");
1461+
}
1462+
else {
1463+
switch(PQftype(res,field)) {
1464+
case 21: case 22: case 23: /* int types */
1465+
case 810: case 910: /* oldint types */
1466+
case 1005: case 1006: case 1007: /* _int types */
1467+
case 700: case 701: /* float types */
1468+
case 1021: case 1022: /* _float types */
1469+
fprintf(fout, "%s", PQgetvalue(res,tuple,field));
1470+
break;
1471+
default:
14681472

1469-
/* Before outputing string value, expand all
1470-
single quotes to twin single quotes -
1471-
dhb - 6/11/96 */
1472-
expsrc=PQgetvalue(res,tuple,field);
1473-
expdest=expandbuf;
1474-
while (*expsrc) {
1475-
*expdest++=*expsrc;
1476-
if (*expsrc == (char)0x27) /*sing. quote*/
1477-
*expdest++ = *expsrc;
1478-
expsrc++;
1479-
}
1480-
*expdest=*expsrc; /* null term. */
1473+
/* Before outputing string value, expand all
1474+
single quotes to twin single quotes -
1475+
dhb - 6/11/96 */
1476+
expsrc=PQgetvalue(res,tuple,field);
1477+
expdest=expandbuf;
1478+
while (*expsrc) {
1479+
*expdest++=*expsrc;
1480+
if (*expsrc == (char)0x27) /*sing. quote*/
1481+
*expdest++ = *expsrc;
1482+
expsrc++;
1483+
}
1484+
*expdest=*expsrc; /* null term. */
14811485

1482-
fprintf(fout, "'%s'", expandbuf);
1483-
break;
1486+
fprintf(fout, "'%s'", expandbuf);
1487+
break;
1488+
}
14841489
}
14851490
field++;
14861491
if(field != PQnfields(res))

0 commit comments

Comments
 (0)