Re: [HACKERS] pg_regress config - Mailing list pgsql-patches

From Andrew Dunstan
Subject Re: [HACKERS] pg_regress config
Date
Msg-id 46DEFEE1.30400@dunslane.net
Whole thread Raw
Responses Re: [HACKERS] pg_regress config  (Magnus Hagander <magnus@hagander.net>)
List pgsql-patches

Magnus Hagander wrote:
> Andrew Dunstan wrote:
>
>> I would like to add an argument to pg_regress that allows us to set some
>> config options for the temp install. Specifically right now I am
>> interested in setting the following:
>>
>>  log_line_prefix = '[%c] '
>>  log_statement = 'all'
>>  log_connections = 'true'
>>
>> But I think it makes more sense to provide for a general option setting
>> mechanism, such as --extra_config=/path/to/some/file
>>
>> This would dovetail neatly with the recent suggestion that we might
>> provide for buildfarm members to run several config sets.
>>
>> Thoughts?
>>
>
> I think the file makes a lot more sense - would keep you from ending up
> with really horrible commandlines. Also, it would make it easier if you
> want to set up different configs manually (the buildfarm script can
> always manage).
>

OK, patch attached. I called the option 'temp-config' to go with
'temp-install'.

> What about the ability to pass options to initdb, while you're at it?
> Like changing the locale? (which will break the scripts, but it should
> only break them in predictable locations)
>
>
>

Sufficient unto the day is the evil thereof. We can handle that another
time.

What I will do however is add some ability to use this to the makefiles
and the vcregress script.

cheers

andrew
Index: src/test/regress/pg_regress.c
===================================================================
RCS file: /cvsroot/pgsql/src/test/regress/pg_regress.c,v
retrieving revision 1.36
diff -c -r1.36 pg_regress.c
*** src/test/regress/pg_regress.c    18 Jul 2007 21:19:17 -0000    1.36
--- src/test/regress/pg_regress.c    5 Sep 2007 19:06:50 -0000
***************
*** 76,81 ****
--- 76,82 ----
  static _stringlist *schedulelist = NULL;
  static _stringlist *extra_tests = NULL;
  static char *temp_install = NULL;
+ static char *temp_config = NULL;
  static char *top_builddir = NULL;
  static int    temp_port = 65432;
  static bool nolocale = false;
***************
*** 1718,1728 ****
      printf(_("                            (can be used multiple times to concatenate)\n"));
      printf(_("  --srcdir=DIR              absolute path to source directory (for VPATH builds)\n"));
      printf(_("  --temp-install=DIR        create a temporary installation in DIR\n"));
-     printf(_("  --no-locale               use C locale\n"));
      printf(_("\n"));
      printf(_("Options for \"temp-install\" mode:\n"));
      printf(_("  --top-builddir=DIR        (relative) path to top level build directory\n"));
      printf(_("  --temp-port=PORT          port number to start temp postmaster on\n"));
      printf(_("\n"));
      printf(_("Options for using an existing installation:\n"));
      printf(_("  --host=HOST               use postmaster running on HOST\n"));
--- 1719,1730 ----
      printf(_("                            (can be used multiple times to concatenate)\n"));
      printf(_("  --srcdir=DIR              absolute path to source directory (for VPATH builds)\n"));
      printf(_("  --temp-install=DIR        create a temporary installation in DIR\n"));
      printf(_("\n"));
      printf(_("Options for \"temp-install\" mode:\n"));
+     printf(_("  --no-locale               use C locale\n"));
      printf(_("  --top-builddir=DIR        (relative) path to top level build directory\n"));
      printf(_("  --temp-port=PORT          port number to start temp postmaster on\n"));
+     printf(_("  --temp-config=PATH        append contents of PATH to temporary config\n"));
      printf(_("\n"));
      printf(_("Options for using an existing installation:\n"));
      printf(_("  --host=HOST               use postmaster running on HOST\n"));
***************
*** 1766,1771 ****
--- 1768,1774 ----
          {"psqldir", required_argument, NULL, 16},
          {"srcdir", required_argument, NULL, 17},
          {"create-role", required_argument, NULL, 18},
+         {"temp-config", required_argument, NULL, 19},
          {NULL, 0, NULL, 0}
      };

***************
*** 1874,1879 ****
--- 1877,1885 ----
              case 18:
                  split_to_stringlist(strdup(optarg), ", ", &extraroles);
                  break;
+             case 19:
+                 temp_config = strdup(optarg);
+                 break;
              default:
                  /* getopt_long already emitted a complaint */
                  fprintf(stderr, _("\nTry \"%s -h\" for more information.\n"),
***************
*** 1962,1967 ****
--- 1968,1999 ----
              exit_nicely(2);
          }

+         /* add any extra config specified to the postgresql.conf */
+         if (temp_config != NULL)
+         {
+             FILE * extra_conf;
+             FILE * pg_conf;
+             char line_buf[1024];
+
+             snprintf(buf, sizeof(buf),"%s/data/postgresql.conf", temp_install);
+             pg_conf = fopen(buf,"a");
+             if (pg_conf == NULL)
+             {
+                 fprintf(stderr, _("\n%s: could not open %s for adding extra config:\nError was %s\n"), progname, buf,
strerror(errno));
+                 exit_nicely(2);
+             }
+             extra_conf = fopen(temp_config,"r");
+             if (extra_conf == NULL)
+             {
+                 fprintf(stderr, _("\n%s: could not open %s to read extra config:\nError was %s\n"), progname, buf,
strerror(errno));
+                 exit_nicely(2);
+             }
+             while(fgets(line_buf, sizeof(line_buf),extra_conf) != NULL)
+                 fputs(line_buf, pg_conf);
+             fclose(extra_conf);
+             fclose(pg_conf);
+         }
+
          /*
           * Start the temp postmaster
           */

pgsql-patches by date:

Previous
From: Chris Browne
Date:
Subject: Re: Lazy xid assignment V4
Next
From: Tom Lane
Date:
Subject: Re: HOT patch - version 15