Re: pg_dumpall default database - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: pg_dumpall default database
Date
Msg-id 200701250246.l0P2kj302435@momjian.us
Whole thread Raw
In response to Re: pg_dumpall default database  (Dave Page <dpage@postgresql.org>)
List pgsql-patches
Patch applied.  Thanks.

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

Dave Page wrote:
> Tom Lane wrote:
> > Dave Page <dpage@postgresql.org> writes:
> >> OK, updated patch attached. This has
> >
> >> -E <dbname> or --default-database=<dbname>
> >
> > Not sure that "default" database is a particularly helpful adjective;
> > why shouldn't the switch just be --database?
> >
> > Other than that, looks fine.
>
> Updated to -l, --database to address yours, and Albe's concerns.
>
> Regards, Dave

> diff -c -r pgsql.orig/doc/src/sgml/ref/pg_dumpall.sgml pgsql.defaultdb/doc/src/sgml/ref/pg_dumpall.sgml
> *** pgsql.orig/doc/src/sgml/ref/pg_dumpall.sgml    Mon Jan 15 13:26:07 2007
> --- pgsql.defaultdb/doc/src/sgml/ref/pg_dumpall.sgml    Tue Jan 16 09:23:19 2007
> ***************
> *** 313,318 ****
> --- 313,319 ----
>      <variablelist>
>        <varlistentry>
>         <term>-h <replaceable>host</replaceable></term>
> +       <term>--host=<replaceable>host</replaceable></term>
>         <listitem>
>          <para>
>           Specifies the host name of the machine on which the database
> ***************
> *** 323,331 ****
> --- 324,346 ----
>          </para>
>         </listitem>
>        </varlistentry>
> +
> +      <varlistentry>
> +       <term>-l <replaceable>dbname</replaceable></term>
> +       <term>--database=<replaceable>dbname</replaceable></term>
> +       <listitem>
> +        <para>
> +          Specifies the name of the database to connect to to dump global
> +          objects and discover what other databases should be dumped. If
> +          not specified, the <quote>postgres</quote> database will be used,
> +          and if that does not exist, <quote>template1</quote> will be used.
> +        </para>
> +       </listitem>
> +      </varlistentry>
>
>        <varlistentry>
>         <term>-p <replaceable>port</replaceable></term>
> +       <term>--port=<replaceable>port</replaceable></term>
>         <listitem>
>          <para>
>           Specifies the TCP port or local Unix domain socket file
> ***************
> *** 338,343 ****
> --- 353,359 ----
>
>        <varlistentry>
>         <term>-U <replaceable>username</replaceable></term>
> +       <term>--username=<replaceable>username</replaceable></term>
>         <listitem>
>          <para>
>           Connect as the given user.
> ***************
> *** 347,352 ****
> --- 363,369 ----
>
>        <varlistentry>
>         <term>-W</term>
> +         <term>--password</term>
>         <listitem>
>          <para>
>           Force a password prompt.  This should happen automatically if
> diff -c -r pgsql.orig/src/bin/pg_dump/pg_dumpall.c pgsql.defaultdb/src/bin/pg_dump/pg_dumpall.c
> *** pgsql.orig/src/bin/pg_dump/pg_dumpall.c    Mon Jan 15 13:26:07 2007
> --- pgsql.defaultdb/src/bin/pg_dump/pg_dumpall.c    Tue Jan 16 09:26:03 2007
> ***************
> *** 75,80 ****
> --- 75,81 ----
>       char       *pghost = NULL;
>       char       *pgport = NULL;
>       char       *pguser = NULL;
> +     char       *pgdb = NULL;
>       bool        force_password = false;
>       bool        data_only = false;
>       bool        globals_only = false;
> ***************
> *** 96,101 ****
> --- 97,103 ----
>           {"globals-only", no_argument, NULL, 'g'},
>           {"host", required_argument, NULL, 'h'},
>           {"ignore-version", no_argument, NULL, 'i'},
> +         {"database", required_argument, NULL, 'l'},
>           {"oids", no_argument, NULL, 'o'},
>           {"no-owner", no_argument, NULL, 'O'},
>           {"port", required_argument, NULL, 'p'},
> ***************
> *** 165,171 ****
>
>       pgdumpopts = createPQExpBuffer();
>
> !     while ((c = getopt_long(argc, argv, "acdDgh:ioOp:rsS:tU:vWxX:", long_options, &optindex)) != -1)
>       {
>           switch (c)
>           {
> --- 167,173 ----
>
>       pgdumpopts = createPQExpBuffer();
>
> !     while ((c = getopt_long(argc, argv, "acdDgh:il:oOp:rsS:tU:vWxX:", long_options, &optindex)) != -1)
>       {
>           switch (c)
>           {
> ***************
> *** 201,206 ****
> --- 203,212 ----
>                   ignoreVersion = true;
>                   appendPQExpBuffer(pgdumpopts, " -i");
>                   break;
> +
> +             case 'l':
> +                 pgdb = optarg;
> +                 break;
>
>               case 'o':
>                   appendPQExpBuffer(pgdumpopts, " -o");
> ***************
> *** 337,351 ****
>       }
>
>       /*
> !      * First try to connect to database "postgres", and failing that
>        * "template1".  "postgres" is the preferred choice for 8.1 and later
>        * servers, but it usually will not exist on older ones.
>        */
> !     conn = connectDatabase("postgres", pghost, pgport, pguser,
>                              force_password, false);
> !     if (!conn)
> !         conn = connectDatabase("template1", pghost, pgport, pguser,
> !                                force_password, true);
>
>       /*
>        * Get the active encoding and the standard_conforming_strings setting, so
> --- 343,382 ----
>       }
>
>       /*
> !      * If there was a database specified on the command line, use that,
> !      * otherwise try to connect to database "postgres", and failing that
>        * "template1".  "postgres" is the preferred choice for 8.1 and later
>        * servers, but it usually will not exist on older ones.
>        */
> !     if (pgdb)
> !     {
> !         conn = connectDatabase(pgdb, pghost, pgport, pguser,
> !                                 force_password, false);
> !
> !         if (!conn)
> !         {
> !             fprintf(stderr, _("%s: could not connect to database \"%s\"\n"),
> !                     progname, pgdb);
> !             exit(1);
> !         }
> !     }
> !     else
> !     {
> !         conn = connectDatabase("postgres", pghost, pgport, pguser,
>                              force_password, false);
> !         if (!conn)
> !             conn = connectDatabase("template1", pghost, pgport, pguser,
> !                                     force_password, true);
> !
> !         if (!conn)
> !         {
> !             fprintf(stderr, _("%s: could not connect to databases \"postgres\" or \"template1\". Please specify an
alternativedatabase\n"), 
> !                     progname);
> !             fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
> !                     progname);
> !             exit(1);
> !         }
> !     }
>
>       /*
>        * Get the active encoding and the standard_conforming_strings setting, so
> ***************
> *** 444,449 ****
> --- 475,481 ----
>
>       printf(_("\nConnection options:\n"));
>       printf(_("  -h, --host=HOSTNAME      database server host or socket directory\n"));
> +     printf(_("  -l, --database=dbname    specify an alternate default database\n"));
>       printf(_("  -p, --port=PORT          database server port number\n"));
>       printf(_("  -U, --username=NAME      connect as specified database user\n"));
>       printf(_("  -W, --password           force password prompt (should happen automatically)\n"));

>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Allow dumping of roles or tablespaces
Next
From: Bruce Momjian
Date:
Subject: Re: pg_dumpall -f option