Thread: pg_dumpall default database

pg_dumpall default database

From
Dave Page
Date:
Per discussion on -hackers, the attached patch allow the default
database to be specified on the pg_dumpall command line, eg.

pg_dumpall [options...] [dbname]

If dbname is not specified, postgres/template1 are used per current
behaviour. If a connection cannot be made to dbname, an error is
returned and pg_dumpall exits. I've also added a similar error handler
to catch failures to connect to postgres and pg_dumpall (currently, the
dump will still be attempted).

This patch should be applied on top of my previous patch
(pg_dumpall_global_objects2.diff)

Regards, Dave
diff -c -r pgsql.orig/doc/src/sgml/ref/pg_dumpall.sgml pgsql/doc/src/sgml/ref/pg_dumpall.sgml
*** pgsql.orig/doc/src/sgml/ref/pg_dumpall.sgml    Mon Jan 15 13:26:07 2007
--- pgsql/doc/src/sgml/ref/pg_dumpall.sgml    Mon Jan 15 13:34:31 2007
***************
*** 23,28 ****
--- 23,29 ----
    <cmdsynopsis>
     <command>pg_dumpall</command>
     <arg rep="repeat"><replaceable>option</replaceable></arg>
+    <arg><replaceable>dbname</replaceable></arg>
    </cmdsynopsis>
   </refsynopsisdiv>

***************
*** 354,359 ****
--- 355,372 ----
         </para>
        </listitem>
       </varlistentry>
+
+      <varlistentry>
+       <term><replaceable class="parameter">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>
     </variablelist>
    </para>
   </refsect1>
diff -c -r pgsql.orig/src/bin/pg_dump/pg_dumpall.c pgsql/src/bin/pg_dump/pg_dumpall.c
*** pgsql.orig/src/bin/pg_dump/pg_dumpall.c    Mon Jan 15 13:26:07 2007
--- pgsql/src/bin/pg_dump/pg_dumpall.c    Mon Jan 15 12:52:34 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;
***************
*** 299,304 ****
--- 300,312 ----
      if (use_setsessauth)
          appendPQExpBuffer(pgdumpopts, " --use-set-session-authorization");

+     /* If there is an argument left, assume it's a database name */
+     if (optind < argc)
+     {
+         pgdb = argv[optind];
+         optind++;
+     }
+
      if (optind < argc)
      {
          fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
***************
*** 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
--- 345,384 ----
      }

      /*
!      * 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

Re: pg_dumpall default database

From
Peter Eisentraut
Date:
Am Montag, 15. Januar 2007 14:44 schrieb Dave Page:
> Per discussion on -hackers, the attached patch allow the default
> database to be specified on the pg_dumpall command line, eg.
>
> pg_dumpall [options...] [dbname]

I think this should be a separate option.  Otherwise it would be too easy to
confuse this with how pg_dump treats the argument.
--
Peter Eisentraut
http://developer.postgresql.org/~petere/

Re: pg_dumpall default database

From
Dave Page
Date:
Peter Eisentraut wrote:
> Am Montag, 15. Januar 2007 14:44 schrieb Dave Page:
>> Per discussion on -hackers, the attached patch allow the default
>> database to be specified on the pg_dumpall command line, eg.
>>
>> pg_dumpall [options...] [dbname]
>
> I think this should be a separate option.  Otherwise it would be too easy to
> confuse this with how pg_dump treats the argument.

You're thinking the user might expect it dump all of that database? Not
sure I agree with that, but I'm not wedded to the syntax. Any other
opinions?

Regards, Dave.

Re: pg_dumpall default database

From
Neil Conway
Date:
On Mon, 2007-01-15 at 17:07 +0000, Dave Page wrote:
> You're thinking the user might expect it dump all of that database? Not
> sure I agree with that, but I'm not wedded to the syntax. Any other
> opinions?

I agree with Peter: specifying the database name as implemented seems
like it would be prone to confusion.

-Neil



Re: pg_dumpall default database

From
Dave Page
Date:
Neil Conway wrote:
> On Mon, 2007-01-15 at 17:07 +0000, Dave Page wrote:
>> You're thinking the user might expect it dump all of that database? Not
>> sure I agree with that, but I'm not wedded to the syntax. Any other
>> opinions?
>
> I agree with Peter: specifying the database name as implemented seems
> like it would be prone to confusion.

OK, updated patch attached. This has

-E <dbname> or --default-database=<dbname>

Regards, Dave.
diff -c -r pgsql.orig/doc/src/sgml/ref/pg_dumpall.sgml pgsql/doc/src/sgml/ref/pg_dumpall.sgml
*** pgsql.orig/doc/src/sgml/ref/pg_dumpall.sgml    Mon Jan 15 13:26:07 2007
--- pgsql/doc/src/sgml/ref/pg_dumpall.sgml    Mon Jan 15 21:06:23 2007
***************
*** 312,318 ****
--- 312,332 ----

     <variablelist>
       <varlistentry>
+       <term>-E <replaceable>dbname</replaceable></term>
+       <term>--default-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>-h <replaceable>host</replaceable></term>
+       <term>--host=<replaceable>host</replaceable></term>
        <listitem>
         <para>
          Specifies the host name of the machine on which the database
***************
*** 326,331 ****
--- 340,346 ----

       <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/src/bin/pg_dump/pg_dumpall.c
*** pgsql.orig/src/bin/pg_dump/pg_dumpall.c    Mon Jan 15 13:26:07 2007
--- pgsql/src/bin/pg_dump/pg_dumpall.c    Mon Jan 15 20:58:25 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;
***************
*** 93,98 ****
--- 94,100 ----
          {"inserts", no_argument, NULL, 'd'},
          {"attribute-inserts", no_argument, NULL, 'D'},
          {"column-inserts", no_argument, NULL, 'D'},
+         {"default-database", required_argument, NULL, 'E'},
          {"globals-only", no_argument, NULL, 'g'},
          {"host", required_argument, NULL, 'h'},
          {"ignore-version", no_argument, NULL, 'i'},
***************
*** 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, "acdDE:gh:ioOp:rsS:tU:vWxX:", long_options, &optindex)) != -1)
      {
          switch (c)
          {
***************
*** 182,187 ****
--- 184,193 ----
              case 'D':
                  appendPQExpBuffer(pgdumpopts, " -%c", c);
                  break;
+
+             case 'E':
+                 pgdb = optarg;
+                 break;

              case 'g':
                  globals_only = true;
***************
*** 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
***************
*** 443,448 ****
--- 474,481 ----
               "                           OWNER TO commands\n"));

      printf(_("\nConnection options:\n"));
+     printf(_("  -E,--default-database=dbname\n"
+              "                             specify an alternate default database\n"));
      printf(_("  -h, --host=HOSTNAME      database server host or socket directory\n"));
      printf(_("  -p, --port=PORT          database server port number\n"));
      printf(_("  -U, --username=NAME      connect as specified database user\n"));

Re: pg_dumpall default database

From
Tom Lane
Date:
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.

            regards, tom lane

Re: pg_dumpall default database

From
"Albe Laurenz"
Date:
Dave Page wrote:
>> I agree with Peter: specifying the database name as implemented seems
>> like it would be prone to confusion.
>
> OK, updated patch attached. This has
>
> -E <dbname> or --default-database=<dbname>

Ouch. This calls for confusion with the -E flag of pg_dump,
which means 'encoding'. Something else might be better.

It would be nice to be able to specify the encoding for
pg_dumpall, though, rather than having to set PG_CLIENTENCODING.

Yours,
Laurenz Albe

Re: pg_dumpall default database

From
Dave Page
Date:
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"));

Re: pg_dumpall default database

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