]> granicus.if.org Git - postgresql/commitdiff
Fixed but in _enableTriggersIfNecessary introduced by previous patches by me
authorPhilip Warner <pjw@rhyme.com.au>
Sun, 18 Mar 2001 03:45:12 +0000 (03:45 +0000)
committerPhilip Warner <pjw@rhyme.com.au>
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