Re: [HACKERS] Configuration patch - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [HACKERS] Configuration patch
Date
Msg-id 200405272211.i4RMBUG28339@candle.pha.pa.us
Whole thread Raw
In response to Configuration patch  (pgsql@mohawksoft.com)
Responses Re: [HACKERS] Configuration patch
List pgsql-patches
I am working on integrating this patch now.

What is the logic if checkConfigDir().  It seems incompleted or wrong.

Your code had:

+       if(S_ISREG(stat_buf.st_mode))           /* It's a regular file, so assume it's an explict */
+       {
+               return TRUE;
+       }
+       else if(S_ISDIR(stat_buf.st_mode))      /* It's a directory, is it a config or system dir */
+       {
+               snprintf(path, sizeof(path), "%s/global/pg_control", checkdir);
+               /* If this is not found, then, hey it wasn't going to work as a data dir either. */
+               if(stat(path, &stat_buf) == -1)
+                       return TRUE;
+       }
+       return FALSE;

The last stat() seems to say that if the directory has no
global/pg_control, then it is good a a config-only directory, and if not
it is a data directory.  Is that right?

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

pgsql@mohawksoft.com wrote:
> This patch incorporates a number of changes suggested by the group. The
> purpose of this patch is to move postgresql to a position where all
> configuration options are specified in one place. The postgresql.conf file
> could completely document a postgresql environment.
>
>
> It adds this functionality:
>
> The "-D' option will work as it always has if it is set to a standard
> postgresql database cluster directory. If it is set to a "postgresql.conf"
> file, it will use that file for configuration. If it is set to a directory
> which is not a cluster directory, i.e. "/somepath/etc" it will look for
> pg_hba.conf, pg_ident.conf, and postgresql.conf there.
>
> For postgresql to work only with a configuration file, some options have
> been added:
>
> include = '/etc/postgres/debug.conf'
> pgdata = '/vol01/postgres'
> hba_conf = '/etc/postgres/pg_hba_conf'
> ident_conf = '/etc/postgres/pg_ident.conf'
> runtime_pidfile = '/var/run/postgresql.conf'
> tablespace = '/somevol/somepath'
>
> "include" allows files with configuration parameters to be included.
>
> "pgdata" (used to be data_dir in old patch) tells PostgreSQL where it's
> database cluster directory is located.
>
> "hba_conf" tells PostgreSQL where to find pg_hba.conf file.
>
> "ident_conf" tells PostgreSQL where to find pg_ident.conf.
>
> "runtime_pidfile" tells postgres to write it's PID to a file that would be
> used by external applications. It is *NOT* the pid file which postgresql
> uses.
>
> "tablespace" allows postgresql to use alternate locations without
> environment variables. Using SIGHUP, tablespaces are reloaded. This allows
> you to add tablespaces to a running PostgreSQL process. (I know this has a
> limited lifetime, but it may make "CREATE DATABASE ... WITH LOCATION" a
> little bit more sane in the meantime.

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: win32 locale fixes
Next
From: pgsql@mohawksoft.com
Date:
Subject: Re: [HACKERS] Configuration patch