add missing options to pg_dumpall

Started by Christopher Kings-Lynneabout 22 years ago9 messagespatches
Jump to latest
#1Christopher Kings-Lynne
chriskl@familyhealth.com.au

Hi,

This patch adds the following options to pg_dumpall, to be passed to
pg_dump:

-S, --superuser=NAME

-O, --no-owner

-X disable-dollar-quoting, --disable-dollar-quoting

-X disable-triggers, --disable-triggers

Chris

Attachments:

pg_dumpall.txt.gzapplication/x-gzip; name=pg_dumpall.txt.gzDownload
#2Bruce Momjian
bruce@momjian.us
In reply to: Christopher Kings-Lynne (#1)
Re: add missing options to pg_dumpall

Patch applied. Thanks.

---------------------------------------------------------------------------

Christopher Kings-Lynne wrote:

Hi,

This patch adds the following options to pg_dumpall, to be passed to
pg_dump:

-S, --superuser=NAME

-O, --no-owner

-X disable-dollar-quoting, --disable-dollar-quoting

-X disable-triggers, --disable-triggers

Chris

[ application/x-gzip is not supported, skipping... ]

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#3Stefan Kaltenbrunner
stefan@kaltenbrunner.cc
In reply to: Bruce Momjian (#2)
Re: add missing options to pg_dumpall

Bruce Momjian wrote:

Patch applied. Thanks.

thanks - that's wonderful news :-)

However the patch as it went in has a minor cosmetic issues with the
display of the --help output.
Maybe something like the attached patch should be applied to restore
the alphabetical option ordering and make the output more like the
pg_dump output.

Stefan

Attachments:

pg_dumpall_help_order_fix.difftext/plain; name=pg_dumpall_help_order_fix.diffDownload+9-9
#4Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Stefan Kaltenbrunner (#3)
Re: add missing options to pg_dumpall

Hmmm, and I need to resurrect the -X use-set-session-authorization flag
for pg_dumpall as well...patch coming soon...

Chris

Stefan Kaltenbrunner wrote:

Show quoted text

Bruce Momjian wrote:

Patch applied. Thanks.

thanks - that's wonderful news :-)

However the patch as it went in has a minor cosmetic issues with the
display of the --help output.
Maybe something like the attached patch should be applied to restore the
alphabetical option ordering and make the output more like the pg_dump
output.

Stefan

------------------------------------------------------------------------

Index: src/bin/pg_dump/pg_dumpall.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_dump/pg_dumpall.c,v
retrieving revision 1.44
diff -u -r1.44 pg_dumpall.c
--- src/bin/pg_dump/pg_dumpall.c	12 Jul 2004 14:35:45 -0000	1.44
+++ src/bin/pg_dump/pg_dumpall.c	14 Jul 2004 17:56:04 -0000
@@ -310,26 +310,26 @@
printf(_("Usage:\n"));
printf(_("  %s [OPTION]...\n"), progname);
-	printf(_("\nOptions:\n"));
+	printf(_("\nGeneral options:\n"));
+	printf(_("  -i, --ignore-version     proceed even when server version mismatches\n"
+			 "                           pg_dumpall version\n"));
+	printf(_("  --help                   show this help, then exit\n"));
+	printf(_("  --version                output version information, then exit\n"));
+	printf(_("\nOptions controlling the output content:\n"));
printf(_("  -a, --data-only          dump only the data, not the schema\n"));
printf(_("  -c, --clean              clean (drop) databases prior to create\n"));
printf(_("  -d, --inserts            dump data as INSERT, rather than COPY, commands\n"));
printf(_("  -D, --column-inserts     dump data as INSERT commands with column names\n"));
printf(_("  -g, --globals-only       dump only global objects, no databases\n"));
-	printf(_("  -i, --ignore-version     proceed even when server version mismatches\n"
-			 "                           pg_dumpall version\n"));
-	printf(_("  -s, --schema-only        dump only the schema, no data\n"));
-	printf(_("  -S, --superuser=NAME     specify the superuser user name to use in the dump\n"));
printf(_("  -o, --oids               include OIDs in dump\n"));
printf(_("  -O, --no-owner           do not output commands to set object ownership\n"));
-	printf(_("  -v, --verbose            verbose mode\n"));
+	printf(_("  -s, --schema-only        dump only the schema, no data\n"));
+	printf(_("  -S, --superuser=NAME     specify the superuser user name to use in the dump\n"));
printf(_("  -x, --no-privileges      do not dump privileges (grant/revoke)\n"));
printf(_("  -X disable-dollar-quoting, --disable-dollar-quoting\n"
"                           disable dollar quoting, use SQL standard quoting\n"));
printf(_("  -X disable-triggers, --disable-triggers\n"
-			 "                           disable triggers during data-only restore\n"));
-	printf(_("  --help                   show this help, then exit\n"));
-	printf(_("  --version                output version information, then exit\n"));
+	         "                           disable triggers during data-only restore\n"));

printf(_("\nConnection options:\n"));
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));

#5Bruce Momjian
bruce@momjian.us
In reply to: Stefan Kaltenbrunner (#3)
Re: add missing options to pg_dumpall

Stefan Kaltenbrunner wrote:

Bruce Momjian wrote:

Patch applied. Thanks.

thanks - that's wonderful news :-)

However the patch as it went in has a minor cosmetic issues with the
display of the --help output.
Maybe something like the attached patch should be applied to restore
the alphabetical option ordering and make the output more like the
pg_dump output.

Stefan

Index: src/bin/pg_dump/pg_dumpall.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_dump/pg_dumpall.c,v
retrieving revision 1.44
diff -u -r1.44 pg_dumpall.c
--- src/bin/pg_dump/pg_dumpall.c	12 Jul 2004 14:35:45 -0000	1.44
+++ src/bin/pg_dump/pg_dumpall.c	14 Jul 2004 17:56:04 -0000
@@ -310,26 +310,26 @@
printf(_("Usage:\n"));
printf(_("  %s [OPTION]...\n"), progname);
-	printf(_("\nOptions:\n"));
+	printf(_("\nGeneral options:\n"));
+	printf(_("  -i, --ignore-version     proceed even when server version mismatches\n"
+			 "                           pg_dumpall version\n"));
+	printf(_("  --help                   show this help, then exit\n"));
+	printf(_("  --version                output version information, then exit\n"));
+	printf(_("\nOptions controlling the output content:\n"));
printf(_("  -a, --data-only          dump only the data, not the schema\n"));
printf(_("  -c, --clean              clean (drop) databases prior to create\n"));
printf(_("  -d, --inserts            dump data as INSERT, rather than COPY, commands\n"));
printf(_("  -D, --column-inserts     dump data as INSERT commands with column names\n"));
printf(_("  -g, --globals-only       dump only global objects, no databases\n"));
-	printf(_("  -i, --ignore-version     proceed even when server version mismatches\n"
-			 "                           pg_dumpall version\n"));
-	printf(_("  -s, --schema-only        dump only the schema, no data\n"));
-	printf(_("  -S, --superuser=NAME     specify the superuser user name to use in the dump\n"));
printf(_("  -o, --oids               include OIDs in dump\n"));
printf(_("  -O, --no-owner           do not output commands to set object ownership\n"));
-	printf(_("  -v, --verbose            verbose mode\n"));
+	printf(_("  -s, --schema-only        dump only the schema, no data\n"));
+	printf(_("  -S, --superuser=NAME     specify the superuser user name to use in the dump\n"));
printf(_("  -x, --no-privileges      do not dump privileges (grant/revoke)\n"));
printf(_("  -X disable-dollar-quoting, --disable-dollar-quoting\n"
"                           disable dollar quoting, use SQL standard quoting\n"));
printf(_("  -X disable-triggers, --disable-triggers\n"
-			 "                           disable triggers during data-only restore\n"));
-	printf(_("  --help                   show this help, then exit\n"));
-	printf(_("  --version                output version information, then exit\n"));
+	         "                           disable triggers during data-only restore\n"));

printf(_("\nConnection options:\n"));
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#6Bruce Momjian
bruce@momjian.us
In reply to: Stefan Kaltenbrunner (#3)
Re: add missing options to pg_dumpall

Your patch has been added to the PostgreSQL unapplied patches list at:

http://momjian.postgresql.org/cgi-bin/pgpatches

It will be applied as soon as one of the PostgreSQL committers reviews
and approves it.

---------------------------------------------------------------------------

\Stefan Kaltenbrunner wrote:

Bruce Momjian wrote:

Patch applied. Thanks.

thanks - that's wonderful news :-)

However the patch as it went in has a minor cosmetic issues with the
display of the --help output.
Maybe something like the attached patch should be applied to restore
the alphabetical option ordering and make the output more like the
pg_dump output.

Stefan

Index: src/bin/pg_dump/pg_dumpall.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_dump/pg_dumpall.c,v
retrieving revision 1.44
diff -u -r1.44 pg_dumpall.c
--- src/bin/pg_dump/pg_dumpall.c	12 Jul 2004 14:35:45 -0000	1.44
+++ src/bin/pg_dump/pg_dumpall.c	14 Jul 2004 17:56:04 -0000
@@ -310,26 +310,26 @@
printf(_("Usage:\n"));
printf(_("  %s [OPTION]...\n"), progname);
-	printf(_("\nOptions:\n"));
+	printf(_("\nGeneral options:\n"));
+	printf(_("  -i, --ignore-version     proceed even when server version mismatches\n"
+			 "                           pg_dumpall version\n"));
+	printf(_("  --help                   show this help, then exit\n"));
+	printf(_("  --version                output version information, then exit\n"));
+	printf(_("\nOptions controlling the output content:\n"));
printf(_("  -a, --data-only          dump only the data, not the schema\n"));
printf(_("  -c, --clean              clean (drop) databases prior to create\n"));
printf(_("  -d, --inserts            dump data as INSERT, rather than COPY, commands\n"));
printf(_("  -D, --column-inserts     dump data as INSERT commands with column names\n"));
printf(_("  -g, --globals-only       dump only global objects, no databases\n"));
-	printf(_("  -i, --ignore-version     proceed even when server version mismatches\n"
-			 "                           pg_dumpall version\n"));
-	printf(_("  -s, --schema-only        dump only the schema, no data\n"));
-	printf(_("  -S, --superuser=NAME     specify the superuser user name to use in the dump\n"));
printf(_("  -o, --oids               include OIDs in dump\n"));
printf(_("  -O, --no-owner           do not output commands to set object ownership\n"));
-	printf(_("  -v, --verbose            verbose mode\n"));
+	printf(_("  -s, --schema-only        dump only the schema, no data\n"));
+	printf(_("  -S, --superuser=NAME     specify the superuser user name to use in the dump\n"));
printf(_("  -x, --no-privileges      do not dump privileges (grant/revoke)\n"));
printf(_("  -X disable-dollar-quoting, --disable-dollar-quoting\n"
"                           disable dollar quoting, use SQL standard quoting\n"));
printf(_("  -X disable-triggers, --disable-triggers\n"
-			 "                           disable triggers during data-only restore\n"));
-	printf(_("  --help                   show this help, then exit\n"));
-	printf(_("  --version                output version information, then exit\n"));
+	         "                           disable triggers during data-only restore\n"));

printf(_("\nConnection options:\n"));
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#7Bruce Momjian
bruce@momjian.us
In reply to: Stefan Kaltenbrunner (#3)
Re: add missing options to pg_dumpall

Oops, patch coming from Christopher. Removed.

---------------------------------------------------------------------------

Stefan Kaltenbrunner wrote:

Bruce Momjian wrote:

Patch applied. Thanks.

thanks - that's wonderful news :-)

However the patch as it went in has a minor cosmetic issues with the
display of the --help output.
Maybe something like the attached patch should be applied to restore
the alphabetical option ordering and make the output more like the
pg_dump output.

Stefan

Index: src/bin/pg_dump/pg_dumpall.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_dump/pg_dumpall.c,v
retrieving revision 1.44
diff -u -r1.44 pg_dumpall.c
--- src/bin/pg_dump/pg_dumpall.c	12 Jul 2004 14:35:45 -0000	1.44
+++ src/bin/pg_dump/pg_dumpall.c	14 Jul 2004 17:56:04 -0000
@@ -310,26 +310,26 @@
printf(_("Usage:\n"));
printf(_("  %s [OPTION]...\n"), progname);
-	printf(_("\nOptions:\n"));
+	printf(_("\nGeneral options:\n"));
+	printf(_("  -i, --ignore-version     proceed even when server version mismatches\n"
+			 "                           pg_dumpall version\n"));
+	printf(_("  --help                   show this help, then exit\n"));
+	printf(_("  --version                output version information, then exit\n"));
+	printf(_("\nOptions controlling the output content:\n"));
printf(_("  -a, --data-only          dump only the data, not the schema\n"));
printf(_("  -c, --clean              clean (drop) databases prior to create\n"));
printf(_("  -d, --inserts            dump data as INSERT, rather than COPY, commands\n"));
printf(_("  -D, --column-inserts     dump data as INSERT commands with column names\n"));
printf(_("  -g, --globals-only       dump only global objects, no databases\n"));
-	printf(_("  -i, --ignore-version     proceed even when server version mismatches\n"
-			 "                           pg_dumpall version\n"));
-	printf(_("  -s, --schema-only        dump only the schema, no data\n"));
-	printf(_("  -S, --superuser=NAME     specify the superuser user name to use in the dump\n"));
printf(_("  -o, --oids               include OIDs in dump\n"));
printf(_("  -O, --no-owner           do not output commands to set object ownership\n"));
-	printf(_("  -v, --verbose            verbose mode\n"));
+	printf(_("  -s, --schema-only        dump only the schema, no data\n"));
+	printf(_("  -S, --superuser=NAME     specify the superuser user name to use in the dump\n"));
printf(_("  -x, --no-privileges      do not dump privileges (grant/revoke)\n"));
printf(_("  -X disable-dollar-quoting, --disable-dollar-quoting\n"
"                           disable dollar quoting, use SQL standard quoting\n"));
printf(_("  -X disable-triggers, --disable-triggers\n"
-			 "                           disable triggers during data-only restore\n"));
-	printf(_("  --help                   show this help, then exit\n"));
-	printf(_("  --version                output version information, then exit\n"));
+	         "                           disable triggers during data-only restore\n"));

printf(_("\nConnection options:\n"));
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#8Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Bruce Momjian (#7)
Re: add missing options to pg_dumpall

OK,

Here is another patch that fixes a stack of pg_dump bugs:

* Fix help text ordering

* Add back --set-session-authorization to pg_dumpall. Updated the docs
for that. Updated help for that.

* Dump ALTER USER commands for the cluster owner ("pgsql"). These are
dumped AFTER the create user and create database commands in case the
permissions to do these have been revoked.

* Dump ALTER OWNER for public schema (because it's possible to change
it). This was done by adding TOC entries for the public schema, and
filtering them out at archiver time. I also save the owner in the TOC
entry just for the public schema.

* Suppress dumping single quotes around schema_path and DateStyle
options when they are set using ALTER USER or ALTER DATABASE. Added a
comment to the steps in guc.c to remind people to update that list.

* Fix dumping in --clean mode against a pre-7.3 server. It just sets
all drop statements to assume the public schema, allowing it to restore
without error.

* Cleaned up text output. eg. Don't output -- Tablespaces comment if
there are none. Same for groups and users.

* Make the commands to DELETE FROM pg_shadow and DELETE FROM pg_group
only be output when -c mode is enabled. I'm not sure why that hasn't
been done before?!?!

This should be good for application asap, after which I will start on
regression dumping 7.0-7.4 databases.

Chris

Attachments:

pg_dump_fixes3.txt.gzapplication/x-gzip; name=pg_dump_fixes3.txt.gzDownload
#9Bruce Momjian
bruce@momjian.us
In reply to: Christopher Kings-Lynne (#8)
Re: add missing options to pg_dumpall

Patch applied. Thanks.

---------------------------------------------------------------------------

Christopher Kings-Lynne wrote:

OK,

Here is another patch that fixes a stack of pg_dump bugs:

* Fix help text ordering

* Add back --set-session-authorization to pg_dumpall. Updated the docs
for that. Updated help for that.

* Dump ALTER USER commands for the cluster owner ("pgsql"). These are
dumped AFTER the create user and create database commands in case the
permissions to do these have been revoked.

* Dump ALTER OWNER for public schema (because it's possible to change
it). This was done by adding TOC entries for the public schema, and
filtering them out at archiver time. I also save the owner in the TOC
entry just for the public schema.

* Suppress dumping single quotes around schema_path and DateStyle
options when they are set using ALTER USER or ALTER DATABASE. Added a
comment to the steps in guc.c to remind people to update that list.

* Fix dumping in --clean mode against a pre-7.3 server. It just sets
all drop statements to assume the public schema, allowing it to restore
without error.

* Cleaned up text output. eg. Don't output -- Tablespaces comment if
there are none. Same for groups and users.

* Make the commands to DELETE FROM pg_shadow and DELETE FROM pg_group
only be output when -c mode is enabled. I'm not sure why that hasn't
been done before?!?!

This should be good for application asap, after which I will start on
regression dumping 7.0-7.4 databases.

Chris

[ application/x-gzip is not supported, skipping... ]

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073