Tom Lane wrote: > Andrew Dunstan <[EMAIL PROTECTED]> writes: > > Bruce Momjian wrote: > >> How about an environment variable to control the timeout? Is that > >> cleaner? > > > I don't see why it should be. I think Peter's --timeout suggestion > > should be just fine. > > I wrote a moment ago that the user can hit control-C when he gets bored, > but that argument only works for interactive use of pg_ctl. In a script > I think you'd want a --timeout option. I don't see the advantage of > an environment variable in either scenario.
I have implemented pg_ctl -t secs timeout option with the attached patch. It still defaults to 60. I did not code the 'ping' option. -- Bruce Momjian <[EMAIL PROTECTED]> http://momjian.us EnterpriseDB http://postgres.enterprisedb.com + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/ref/pg_ctl-ref.sgml =================================================================== RCS file: /cvsroot/pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v retrieving revision 1.42 diff -c -c -r1.42 pg_ctl-ref.sgml *** doc/src/sgml/ref/pg_ctl-ref.sgml 10 Nov 2007 04:52:17 -0000 1.42 --- doc/src/sgml/ref/pg_ctl-ref.sgml 10 Nov 2007 05:03:03 -0000 *************** *** 24,29 **** --- 24,30 ---- <command>pg_ctl</command> <arg choice="plain">start</arg> <arg>-w</arg> + <arg>-t <replaceable>seconds</replaceable></arg> <arg>-s</arg> <arg>-D <replaceable>datadir</replaceable></arg> <arg>-l <replaceable>filename</replaceable></arg> *************** *** 47,52 **** --- 48,54 ---- <command>pg_ctl</command> <arg choice="plain">restart</arg> <arg>-w</arg> + <arg>-t <replaceable>seconds</replaceable></arg> <arg>-s</arg> <arg>-D <replaceable>datadir</replaceable></arg> <arg>-c</arg> *************** *** 80,85 **** --- 82,88 ---- <arg>-P <replaceable>password</replaceable></arg> <arg>-D <replaceable>datadir</replaceable></arg> <arg>-w</arg> + <arg>-t <replaceable>seconds</replaceable></arg> <arg>-o <replaceable>options</replaceable></arg> <sbr> <command>pg_ctl</command> *************** *** 261,271 **** </varlistentry> <varlistentry> <term><option>-w</option></term> <listitem> <para> ! Wait for the start or shutdown to complete. Times out after ! 60 seconds. This is the default for shutdowns. A successful shutdown is indicated by removal of the <acronym>PID</acronym> file. For starting up, a successful <command>psql -l</command> indicates success. <command>pg_ctl</command> will attempt to --- 264,284 ---- </varlistentry> <varlistentry> + <term><option>-t</option></term> + <listitem> + <para> + Seconds to wait for start or shutdown to complete when + the <option>-w</> option is used. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>-w</option></term> <listitem> <para> ! Wait for the start or shutdown to complete. The default wait time ! is 60 seconds. This is the default option for shutdowns. A successful shutdown is indicated by removal of the <acronym>PID</acronym> file. For starting up, a successful <command>psql -l</command> indicates success. <command>pg_ctl</command> will attempt to Index: src/bin/pg_ctl/pg_ctl.c =================================================================== RCS file: /cvsroot/pgsql/src/bin/pg_ctl/pg_ctl.c,v retrieving revision 1.85 diff -c -c -r1.85 pg_ctl.c *** src/bin/pg_ctl/pg_ctl.c 31 Oct 2007 10:55:25 -0000 1.85 --- src/bin/pg_ctl/pg_ctl.c 10 Nov 2007 05:03:04 -0000 *************** *** 1465,1485 **** printf(_("%s is a utility to start, stop, restart, reload configuration files,\n" "report the status of a PostgreSQL server, or signal a PostgreSQL process.\n\n"), progname); printf(_("Usage:\n")); ! printf(_(" %s start [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n"), progname); printf(_(" %s stop [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n"), progname); ! printf(_(" %s restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]\n"), progname); printf(_(" %s reload [-D DATADIR] [-s]\n"), progname); printf(_(" %s status [-D DATADIR]\n"), progname); printf(_(" %s kill SIGNALNAME PID\n"), progname); #if defined(WIN32) || defined(__CYGWIN__) printf(_(" %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" ! " [-w] [-o \"OPTIONS\"]\n"), progname); printf(_(" %s unregister [-N SERVICENAME]\n"), progname); #endif printf(_("\nCommon options:\n")); printf(_(" -D, --pgdata DATADIR location of the database storage area\n")); printf(_(" -s, --silent only print errors, no informational messages\n")); printf(_(" -w wait until operation completes\n")); printf(_(" -W do not wait until operation completes\n")); printf(_(" --help show this help, then exit\n")); --- 1465,1487 ---- printf(_("%s is a utility to start, stop, restart, reload configuration files,\n" "report the status of a PostgreSQL server, or signal a PostgreSQL process.\n\n"), progname); printf(_("Usage:\n")); ! printf(_(" %s start [-w] [-t secs] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n"), progname); printf(_(" %s stop [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n"), progname); ! printf(_(" %s restart [-w] [-t secs] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n\ ! [-o \"OPTIONS\"]\n"), progname); printf(_(" %s reload [-D DATADIR] [-s]\n"), progname); printf(_(" %s status [-D DATADIR]\n"), progname); printf(_(" %s kill SIGNALNAME PID\n"), progname); #if defined(WIN32) || defined(__CYGWIN__) printf(_(" %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" ! " [-w] [-t timeout] [-o \"OPTIONS\"]\n"), progname); printf(_(" %s unregister [-N SERVICENAME]\n"), progname); #endif printf(_("\nCommon options:\n")); printf(_(" -D, --pgdata DATADIR location of the database storage area\n")); printf(_(" -s, --silent only print errors, no informational messages\n")); + printf(_(" -t secs seconds to wait when using -w option\n")); printf(_(" -w wait until operation completes\n")); printf(_(" -W do not wait until operation completes\n")); printf(_(" --help show this help, then exit\n")); *************** *** 1592,1597 **** --- 1594,1600 ---- {"mode", required_argument, NULL, 'm'}, {"pgdata", required_argument, NULL, 'D'}, {"silent", no_argument, NULL, 's'}, + {"timeout", required_argument, NULL, 't'}, {"core-files", no_argument, NULL, 'c'}, {NULL, 0, NULL, 0} }; *************** *** 1704,1709 **** --- 1707,1715 ---- case 's': silent_mode = true; break; + case 't': + wait_seconds = atoi(optarg); + break; case 'U': if (strchr(optarg, '\\')) register_username = xstrdup(optarg);
---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match