Re: [BUGS] BUG #4128: The postmaster.opts.default file is begin ignored - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [BUGS] BUG #4128: The postmaster.opts.default file is begin ignored
Date
Msg-id 200806260112.m5Q1C9802872@momjian.us
Whole thread Raw
List pgsql-patches
Tom Lane wrote:
> Peter Eisentraut <peter_e@gmx.net> writes:
> > Tom Lane wrote:
> >> We've mostly deprecated setting options on the postmaster command
> >> line already, so why do we need another obscure way to do that?
>
> > As long as we support the pg_ctl -o option, the file still necessary so that
> > you get the same options after a restart.
>
> No, it's the "postmaster.opts.default" file that I'm complaining about,
> not the postmaster.opts file.

The attached applied patch removes the use of the
"postmaster.opts.default" file by pg_ctl.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://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.45
diff -c -c -r1.45 pg_ctl-ref.sgml
*** doc/src/sgml/ref/pg_ctl-ref.sgml    23 Apr 2008 13:44:58 -0000    1.45
--- doc/src/sgml/ref/pg_ctl-ref.sgml    26 Jun 2008 01:04:44 -0000
***************
*** 406,425 ****
     </varlistentry>

     <varlistentry>
-     <term><filename>postmaster.opts.default</filename></term>
-
-     <listitem>
-      <para>
-       If this file exists in the data directory,
-       <application>pg_ctl</application> (in <option>start</option>
-       mode) will pass the contents of the file as options to the
-       <command>postgres</command> command, unless overridden by the
-       <option>-o</option> option.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
      <term><filename>postmaster.opts</filename></term>

      <listitem>
--- 406,411 ----
Index: src/bin/pg_ctl/pg_ctl.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/pg_ctl/pg_ctl.c,v
retrieving revision 1.98
diff -c -c -r1.98 pg_ctl.c
*** src/bin/pg_ctl/pg_ctl.c    24 Apr 2008 14:23:43 -0000    1.98
--- src/bin/pg_ctl/pg_ctl.c    26 Jun 2008 01:04:44 -0000
***************
*** 140,146 ****
  static bool test_postmaster_connection(bool);
  static bool postmaster_is_alive(pid_t pid);

- static char def_postopts_file[MAXPGPATH];
  static char postopts_file[MAXPGPATH];
  static char pid_file[MAXPGPATH];
  static char conf_file[MAXPGPATH];
--- 140,145 ----
***************
*** 575,616 ****
  static void
  read_post_opts(void)
  {
-     char       *optline = NULL;
-
      if (post_opts == NULL)
      {
          char      **optlines;
-         int            len;

!         optlines = readfile(ctl_command == RESTART_COMMAND ?
!                             postopts_file : def_postopts_file);
!         if (optlines == NULL)
          {
!             if (ctl_command == START_COMMAND || ctl_command == RUN_AS_SERVICE_COMMAND)
!                 post_opts = "";
!             else
              {
                  write_stderr(_("%s: could not read file \"%s\"\n"), progname, postopts_file);
                  exit(1);
              }
!         }
!         else if (optlines[0] == NULL || optlines[1] != NULL)
!         {
!             write_stderr(_("%s: option file \"%s\" must have exactly one line\n"),
!                          progname, ctl_command == RESTART_COMMAND ?
!                          postopts_file : def_postopts_file);
!             exit(1);
!         }
!         else
!         {
!             optline = optlines[0];
!             len = strcspn(optline, "\r\n");
!             optline[len] = '\0';
!
!             if (ctl_command == RESTART_COMMAND)
              {
                  char       *arg1;

                  arg1 = strchr(optline, *SYSTEMQUOTE);
                  if (arg1 == NULL || arg1 == optline)
                      post_opts = "";
--- 574,608 ----
  static void
  read_post_opts(void)
  {
      if (post_opts == NULL)
      {
          char      **optlines;

!         post_opts = "";        /* defatult */
!         if (ctl_command == RESTART_COMMAND)
          {
!             optlines = readfile(postopts_file);
!             if (optlines == NULL)
              {
                  write_stderr(_("%s: could not read file \"%s\"\n"), progname, postopts_file);
                  exit(1);
              }
!             else if (optlines[0] == NULL || optlines[1] != NULL)
              {
+                 write_stderr(_("%s: option file \"%s\" must have exactly one line\n"),
+                              progname, postopts_file);
+                 exit(1);
+             }
+             else
+             {
+                 int            len;
+                 char       *optline = NULL;
                  char       *arg1;

+                 optline = optlines[0];
+                 len = strcspn(optline, "\r\n");
+                 optline[len] = '\0';
+
                  arg1 = strchr(optline, *SYSTEMQUOTE);
                  if (arg1 == NULL || arg1 == optline)
                      post_opts = "";
***************
*** 622,629 ****
                  if (postgres_path != NULL)
                      postgres_path = optline;
              }
-             else
-                 post_opts = optline;
          }
      }
  }
--- 614,619 ----
***************
*** 1894,1900 ****

      if (pg_data)
      {
-         snprintf(def_postopts_file, MAXPGPATH, "%s/postmaster.opts.default", pg_data);
          snprintf(postopts_file, MAXPGPATH, "%s/postmaster.opts", pg_data);
          snprintf(pid_file, MAXPGPATH, "%s/postmaster.pid", pg_data);
          snprintf(conf_file, MAXPGPATH, "%s/postgresql.conf", pg_data);
--- 1884,1889 ----

pgsql-patches by date:

Previous
From: "Dickson S. Guedes"
Date:
Subject: Re: TODO item: Have psql show current values for a sequence
Next
From: Bruce Momjian
Date:
Subject: Fix pg_ctl restart bug