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

Commit4bd371f

Browse files
committed
Fix pg_dumpall to work for databases flagged as read-only.
pg_dumpall's charter is to be able to recreate a database cluster'scontents in a virgin installation, but it was failing to honor thatcontract if the cluster had any ALTER DATABASE SETdefault_transaction_read_only settings. By including a SET commandfor the connection for each connection opened by pg_dumpall output,errors are avoided and the source cluster is successfullyrecreated.There was discussion of whether to also set this for the connectionapplying pg_dump output, but it was felt that it was both lessappropriate in that context, and far easier to work around.Backpatch to all supported branches.
1 parent34fa72e commit4bd371f

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

‎src/bin/pg_dump/pg_dumpall.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,9 @@ main(int argc, char *argv[])
452452
* database we're connected to at the moment is fine.
453453
*/
454454

455+
/* Restore will need to write to the target cluster */
456+
fprintf(OPF,"SET default_transaction_read_only = off;\n\n");
457+
455458
/* Replicate encoding and std_strings in output */
456459
fprintf(OPF,"SET client_encoding = '%s';\n",
457460
pg_encoding_to_char(encoding));
@@ -1598,6 +1601,17 @@ dumpDatabases(PGconn *conn)
15981601

15991602
fprintf(OPF,"\\connect %s\n\n",fmtId(dbname));
16001603

1604+
/*
1605+
* Restore will need to write to the target cluster. This connection
1606+
* setting is emitted for pg_dumpall rather than in the code also used
1607+
* by pg_dump, so that a cluster with databases or users which have
1608+
* this flag turned on can still be replicated through pg_dumpall
1609+
* without editing the file or stream. With pg_dump there are many
1610+
* other ways to allow the file to be used, and leaving it out allows
1611+
* users to protect databases from being accidental restore targets.
1612+
*/
1613+
fprintf(OPF,"SET default_transaction_read_only = off;\n\n");
1614+
16011615
if (filename)
16021616
fclose(OPF);
16031617

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp