Re: Refactor handling of database attributes between pg_dump and pg_dumpall
Haribabu Kommi <kommi.haribabu@gmail.com>
From: Haribabu Kommi <kommi.haribabu@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Vaishnavi Prabakaran <vaishnaviprabakaran@gmail.com>, Thomas Munro <thomas.munro@enterprisedb.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>,
Andreas Karlsson <andreas@proxel.se>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2017-10-23T05:36:34Z
Lists: pgsql-hackers
On Sun, Oct 22, 2017 at 3:08 AM, Robert Haas <robertmhaas@gmail.com> wrote: > On Sat, Oct 21, 2017 at 1:30 AM, Haribabu Kommi > <kommi.haribabu@gmail.com> wrote: > > Before refactoring, pg_dumpall doesn't print "create database" commands > > for both tempalte1 and postgres database, but on the other hand pg_dump > > dump the create database commands with --create option. > > > > To keep the behavior of all the database attributes in the dump of both > > pg_dump and pg_dumpall, the code is unified and moved into pg_dump. > > But to retain the pg_dumpall behavior of not dumping the "create > database" > > commands, a new option is added to pg_dump to skip dumping the > > create database commands. > > > > The new option name is now "--skip-create-default-db", this can be used > > normal user also when try to dump the postgres database to not let create > > the database commands in the dump. > > I don't get this at all. If you don't want to create the database, > just don't pass the -C argument. It doesn't make sense to have a -C > argument which makes it create the database and then a > --skip-create-default-db argument which makes it sometimes not create > the database after all. Apologies for not providing much details. pg_dumpall is used to produce the following statements for database, "Create database" (other than default database) or "Alter database set tablespace" for default database (if required) ACL queries related to database Alter database config Alter database role config whereas, pg_dump used to produce only "create database statement". With the refactoring, all the pg_dumpall database statements are moved into pg_dump. -C/--create option of pg_dump produces all the statements of pg_dumpall. The --skip-default-create-db option is to make sure that it doesn't produce "Create database" statement and instead may produce "Alter database set tablespace" for default databases of (postgres and template1). -C/--create option is to control the entire database statements. --skip-create-default-db is option to control the "create" or "Alter" database statement for default database. During restore the dump, the -C/--create restores all the Database statements. comments? or any better approach? Regards, Hari Babu Fujitsu Australia
Commits
-
Move handling of database properties from pg_dumpall into pg_dump.
- b3f8401205af 11.0 landed
-
Allow pg_dumpall to dump roles w/o user passwords
- 9a83d56b38c8 10.0 cited
-
Fix pg_dumpall to work for databases flagged as read-only.
- 4bd371f6f886 9.4.0 cited