Re: include_dir catch-22

Lists: pgsql-hackers
From: Craig Ringer <craig(at)2ndquadrant(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: include_dir catch-22
Date: 2014-06-18 07:30:06
Message-ID: 53A13FFE.6000607@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

There is, IMO, a significant oversight with the include_dir feature.

If a distributor wants to enable it by default at initdb time, they
can't just turn it on in postgresql.conf.sample, because initdb will die
when the postgres backend refuses to start because the configdir is missing.

Yet the configdir cannot exist, or initdb will refuse to run.

IMO we should just treat the configdir as implicitly if_exists, but
otherwise, there needs to be a separate if_exists option.

I'll gladly submit a patch to fix this for 9.4, I just want an opinion
on which way to go first.

("initdb then 'sed' the config file afterwards" is not an answer)

--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services


From: Craig Ringer <craig(at)2ndquadrant(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: include_dir catch-22
Date: 2014-06-18 08:06:29
Message-ID: 53A14885.2090008@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 06/18/2014 03:30 PM, Craig Ringer wrote:
> There is, IMO, a significant oversight with the include_dir feature.
>
> If a distributor wants to enable it by default at initdb time, they
> can't just turn it on in postgresql.conf.sample, because initdb will die
> when the postgres backend refuses to start because the configdir is missing.
>
> Yet the configdir cannot exist, or initdb will refuse to run.
>
> IMO we should just treat the configdir as implicitly if_exists, but
> otherwise, there needs to be a separate if_exists option.
>
> I'll gladly submit a patch to fix this for 9.4, I just want an opinion
> on which way to go first.

Oh, and while it's possible for include_if_exists, you get a spammy
initdb like:

creating template1 database in testdb/base/1 ... LOG: skipping missing
configuration file "/home/ec2-user/testdb/some.conf"
< 2014-06-18 04:05:15.194 EDT >LOG: skipping missing configuration file
"/home/ec2-user/testdb/some.conf"
ok
initializing pg_authid ... LOG: skipping missing configuration file
"/home/ec2-user/testdb/some.conf"
< 2014-06-18 04:05:15.894 EDT >LOG: skipping missing configuration file
"/home/ec2-user/testdb/some.conf"
ok
initializing dependencies ... LOG: skipping missing configuration file
"/home/ec2-user/testdb/some.conf"
< 2014-06-18 04:05:15.927 EDT >LOG: skipping missing configuration file
"/home/ec2-user/testdb/some.conf"
ok

--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services