Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitccca223

Browse files
committed
- Use subselect when enabling triggers,
- Use exact table names when enabling/disabling triggers
1 parente376cb6 commitccca223

File tree

1 file changed

+5
-21
lines changed

1 file changed

+5
-21
lines changed

‎src/bin/pg_dump/pg_backup_archiver.c

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ static void _disableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te, Restore
420420
*/
421421

422422
if (te&&te->name&&strlen(te->name)>0)
423-
ahprintf(AH,"UPDATE \"pg_class\" SET \"reltriggers\" = 0 WHERE \"relname\"~* '%s';\n",
423+
ahprintf(AH,"UPDATE \"pg_class\" SET \"reltriggers\" = 0 WHERE \"relname\"= '%s';\n\n",
424424
te->name);
425425
else
426426
ahprintf(AH,"UPDATE \"pg_class\" SET \"reltriggers\" = 0 WHERE \"relname\" !~ '^pg_';\n\n");
@@ -471,26 +471,10 @@ static void _enableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te, RestoreO
471471
* command when one is available.
472472
*/
473473
ahprintf(AH,"-- Enable triggers\n");
474-
ahprintf(AH,"BEGIN TRANSACTION;\n");
475-
ahprintf(AH,"CREATE TEMP TABLE \"tr\" (\"tmp_relname\" name, \"tmp_reltriggers\" smallint);\n");
476-
477-
/*
478-
* Just update the affected table, if known.
479-
*/
480-
if (te&&te->name&&strlen(te->name)>0)
481-
ahprintf(AH,"INSERT INTO \"tr\" SELECT C.\"relname\", count(T.\"oid\") FROM \"pg_class\" C,"
482-
" \"pg_trigger\" T WHERE C.\"oid\" = T.\"tgrelid\" AND C.\"relname\" ~* '%s' "
483-
" GROUP BY 1;\n",te->name);
484-
else
485-
ahprintf(AH,"INSERT INTO \"tr\" SELECT C.\"relname\", count(T.\"oid\") FROM \"pg_class\" C,"
486-
" \"pg_trigger\" T WHERE C.\"oid\" = T.\"tgrelid\" AND C.\"relname\" !~ '^pg_' "
487-
" GROUP BY 1;\n");
488-
489-
ahprintf(AH,"UPDATE \"pg_class\" SET \"reltriggers\" = TMP.\"tmp_reltriggers\" "
490-
"FROM \"tr\" TMP WHERE "
491-
"\"pg_class\".\"relname\" = TMP.\"tmp_relname\";\n");
492-
ahprintf(AH,"DROP TABLE \"tr\";\n");
493-
ahprintf(AH,"COMMIT TRANSACTION;\n\n");
474+
ahprintf(AH,"UPDATE pg_class SET reltriggers = "
475+
"(SELECT count(*) FROM pg_trigger where pg_class.oid = tgrelid) "
476+
"WHERE relname = '%s';\n\n",
477+
te->name);
494478

495479
/*
496480
* Restore the user connection from the start of this procedure

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp