Thread: add missing options to pg_dumpall

add missing options to pg_dumpall

From
Christopher Kings-Lynne
Date:
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


Attachment

Re: add missing options to pg_dumpall

From
Bruce Momjian
Date:
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

Re: add missing options to pg_dumpall

From
Stefan Kaltenbrunner
Date:
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"));

Re: add missing options to pg_dumpall

From
Christopher Kings-Lynne
Date:
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:

> 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"));

Re: add missing options to pg_dumpall

From
Bruce Momjian
Date:
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

Re: add missing options to pg_dumpall

From
Bruce Momjian
Date:
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

Re: add missing options to pg_dumpall

From
Bruce Momjian
Date:
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

Re: add missing options to pg_dumpall

From
Christopher Kings-Lynne
Date:
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


Attachment

Re: add missing options to pg_dumpall

From
Bruce Momjian
Date:
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