]> granicus.if.org Git - postgresql/commitdiff
Here is the patch for pg_dump not handling NULL values in 'insert'
authorBruce Momjian <bruce@momjian.us>
Wed, 20 Nov 1996 22:32:55 +0000 (22:32 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 20 Nov 1996 22:32:55 +0000 (22:32 +0000)
mode properly.  This will apply correctly to 1.09 & 2.0 sources.
From David H. Bennett

src/bin/pg_dump/pg_dump.c

index 2ed22392828fb1687723cafca191cb1e92a679b6..1a52c41457d15d78fae2d9c9b3e4f87ced0f2434 100644 (file)
@@ -20,7 +20,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.15 1996/11/17 04:56:01 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.16 1996/11/20 22:32:55 momjian Exp $
  *
  * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
  *
@@ -1456,31 +1456,36 @@ dumpClasses(TableInfo *tblinfo, int numTables, FILE *fout, const char *onlytable
                    fprintf(fout, "values (");
                    field=0;
                    do {
-                       switch(PQftype(res,field)) {
-                           case 21: case 22: case 23: /* int types */
-                           case 810: case 910: /* oldint types */
-                           case 1005: case 1006: case 1007: /* _int types */
-                           case 700: case 701: /* float types */
-                           case 1021: case 1022: /* _float types */
-                               fprintf(fout, "%s", PQgetvalue(res,tuple,field));
-                               break;
-                           default:  
+                       if (PQgetisnull(res,tuple,field)) {
+                            fprintf(fout,"NULL");
+                       }
+                       else {
+                           switch(PQftype(res,field)) {
+                               case 21: case 22: case 23: /* int types */
+                               case 810: case 910: /* oldint types */
+                               case 1005: case 1006: case 1007: /* _int types */
+                               case 700: case 701: /* float types */
+                               case 1021: case 1022: /* _float types */
+                                    fprintf(fout, "%s", PQgetvalue(res,tuple,field));
+                                    break;
+                               default:  
                            
-                               /* Before outputing string value, expand all
-                                  single quotes to twin single quotes -
-                                  dhb - 6/11/96 */
-                               expsrc=PQgetvalue(res,tuple,field);
-                               expdest=expandbuf;
-                               while (*expsrc) {
-                                   *expdest++=*expsrc;
-                                   if (*expsrc == (char)0x27) /*sing. quote*/
-                                       *expdest++ = *expsrc;
-                                   expsrc++;
-                               }
-                               *expdest=*expsrc; /* null term. */
+                                   /* Before outputing string value, expand all
+                                      single quotes to twin single quotes -
+                                      dhb - 6/11/96 */
+                                   expsrc=PQgetvalue(res,tuple,field);
+                                   expdest=expandbuf;
+                                   while (*expsrc) {
+                                       *expdest++=*expsrc;
+                                       if (*expsrc == (char)0x27) /*sing. quote*/
+                                           *expdest++ = *expsrc;
+                                       expsrc++;
+                                   }
+                                   *expdest=*expsrc; /* null term. */
                                
-                               fprintf(fout, "'%s'", expandbuf);
-                               break;
+                                   fprintf(fout, "'%s'", expandbuf);
+                                   break;
+                           }
                        }
                        field++;
                        if(field != PQnfields(res))