aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Warner <pjw@rhyme.com.au>2001-03-18 03:45:12 +0000
committerPhilip Warner <pjw@rhyme.com.au>2001-03-18 03:45:12 +0000
commit5c1b00450c9b6c0e1f70db26e92fd79f7119223b (patch)
tree95f23ff1088c8c2bd3bdce154f0e32d77f705357
parentfd5bac6d2713cee93afe0adba6ac514f29530015 (diff)
downloadpostgresql-5c1b00450c9b6c0e1f70db26e92fd79f7119223b.tar.gz
postgresql-5c1b00450c9b6c0e1f70db26e92fd79f7119223b.zip
Fixed but in _enableTriggersIfNecessary introduced by previous patches by me
which caused segfault in a data-only retore with BLOBs
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index 3e7c1b06d4d..51f0aff0aac 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -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