Fixed but in _enableTriggersIfNecessary introduced by previous patches by me
authorPhilip Warner
Sun, 18 Mar 2001 03:45:12 +0000 (03:45 +0000)
committerPhilip Warner
Sun, 18 Mar 2001 03:45:12 +0000 (03:45 +0000)
which caused segfault in a data-only retore with BLOBs

src/bin/pg_dump/pg_backup_archiver.c

index 3e7c1b06d4d360c7b39794602904d5f17f35a2de..51f0aff0aacc636564aea8220641ab52daae2050 100644 (file)
@@ -471,10 +471,17 @@ static void _enableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te, RestoreO
     * command when one is available.
     */
     ahprintf(AH, "-- Enable triggers\n");
-   ahprintf(AH, "UPDATE pg_class SET reltriggers = "
+   if (te && te->name && strlen(te->name) > 0)
+   {
+       ahprintf(AH, "UPDATE pg_class SET reltriggers = "
                 "(SELECT count(*) FROM pg_trigger where pg_class.oid = tgrelid) "
                 "WHERE relname = '%s';\n\n",
                te->name);
+   } else {
+       ahprintf(AH, "UPDATE \"pg_class\" SET \"reltriggers\" = "
+                "(SELECT count(*) FROM pg_trigger where pg_class.oid = tgrelid) "
+                "WHERE \"relname\" !~ '^pg_';\n\n");
+   }
 
    /*
     * Restore the user connection from the start of this procedure