[patch] pg_ctl init extension
Attached patch extends pg_ctl command with init option.
pg_ctl -D /var/lib/postgres [-s] init
This should replace usage of initdb command which has problematic name
as we already discussed several times. Initdb binary will be still
there, but it can be renamed and move into execlib dir in the future.
Patch does not contains documentation changes. They will depends on
decision which database initialization method will be preferred.
Zdenek
Attachments:
pg_ctl.patchtext/x-patch; CHARSET=US-ASCII; name=pg_ctl.patchDownload+45-7
On tor, 2009-09-17 at 21:43 +0200, Zdenek Kotala wrote:
Attached patch extends pg_ctl command with init option.
pg_ctl -D /var/lib/postgres [-s] init
This should replace usage of initdb command which has problematic name
as we already discussed several times. Initdb binary will be still
there, but it can be renamed and move into execlib dir in the future.
If the name is a problem, why not change the name? What you are
proposing above is effectively a very elaborate name change, so why not
go for a simpler one?
--On 17. September 2009 23:00:12 +0300 Peter Eisentraut <peter_e@gmx.net>
wrote:
f the name is a problem, why not change the name? What you are
proposing above is effectively a very elaborate name change, so why not
go for a simpler one?
I don't like the solution by using -o "<initdb options>" to push down
command line options to initdb. I always had the opinion that this was (and
is) a valid workaround for postgres itself, but it doesn't feel correct to
expose that further to initdb and its purposes.
My 2 cents...
--
Thanks
Bernd
Peter Eisentraut píše v čt 17. 09. 2009 v 23:00 +0300:
On tor, 2009-09-17 at 21:43 +0200, Zdenek Kotala wrote:
Attached patch extends pg_ctl command with init option.
pg_ctl -D /var/lib/postgres [-s] init
This should replace usage of initdb command which has problematic name
as we already discussed several times. Initdb binary will be still
there, but it can be renamed and move into execlib dir in the future.If the name is a problem, why not change the name? What you are
proposing above is effectively a very elaborate name change, so why not
go for a simpler one?
The idea is to have one command for server control. By my opinion init
logically belongs to group of command like start/stop. It is also
possible to add parameter for init+start in one command and so on.
If you look on ZFS you have only two commands to manage everything, it
is easy and you can start to use ZFS very quickly. I think this patch
increase usability/adoption od postgreSQL for newbies.
And second big advantage is that it would be possible easily extend
pg_ctl to cope with different postgresql versions (e.g. "pg_ctl -v 8.2
-D . init"). There is no reason why pg_ctl couldn't start different
postgreSQL version depends on PG_VERSION in data directory.
Zdenek
Bernd Helmle píše v čt 17. 09. 2009 v 23:26 +0200:
--On 17. September 2009 23:00:12 +0300 Peter Eisentraut <peter_e@gmx.net>
wrote:f the name is a problem, why not change the name? What you are
proposing above is effectively a very elaborate name change, so why not
go for a simpler one?I don't like the solution by using -o "<initdb options>" to push down
command line options to initdb. I always had the opinion that this was (and
is) a valid workaround for postgres itself, but it doesn't feel correct to
expose that further to initdb and its purposes.
hmm, I could modify it that all args after init keyword will be pass to
the initdb like this:
pg_ctl -D /tmp/db init [<my favorite switches>]
initdb [<my favorite switches>]
and "pg_ctl -h init" will show help which commands are allowed.
Zdenek
On tor, 2009-09-17 at 21:43 +0200, Zdenek Kotala wrote:
Attached patch extends pg_ctl command with init option.
pg_ctl -D /var/lib/postgres [-s] init
This should replace usage of initdb command which has problematic name
as we already discussed several times. Initdb binary will be still
there, but it can be renamed and move into execlib dir in the future.Patch does not contains documentation changes. They will depends on
decision which database initialization method will be preferred.
OK, let's see. The patch is pretty straightforward, but does anyone
else actually want this? Comments?
Peter Eisentraut píše v so 14. 11. 2009 v 10:41 +0200:
On tor, 2009-09-17 at 21:43 +0200, Zdenek Kotala wrote:
Attached patch extends pg_ctl command with init option.
pg_ctl -D /var/lib/postgres [-s] init
This should replace usage of initdb command which has problematic name
as we already discussed several times. Initdb binary will be still
there, but it can be renamed and move into execlib dir in the future.Patch does not contains documentation changes. They will depends on
decision which database initialization method will be preferred.OK, let's see. The patch is pretty straightforward, but does anyone
else actually want this? Comments?
Maybe we could ask on general where is more admins. I will send voting
email.
thanks for looking on this
Zdenek
Peter Eisentraut wrote:
The patch is pretty straightforward,
but does anyone else actually want this? Comments?
I agree that the initdb name seems odd next to the other executable
names, but the functionality seems a little out of place to me in
pg_ctl. The other options all correspond (more or less) to LSB init
script actions (and we've been talking about the desirability of
making that a closer fit); while this is something which would *not
be appropriate* in an init script. We could filter this option out
in the script, but it seemed like you wanted to keep the script as
short and simple as possible....
-Kevin
Import Notes
Resolved by subject fallback
"Kevin Grittner" <Kevin.Grittner@wicourts.gov> writes:
Peter Eisentraut wrote:
The patch is pretty straightforward,
but does anyone else actually want this? Comments?
I agree that the initdb name seems odd next to the other executable
names, but the functionality seems a little out of place to me in
pg_ctl. The other options all correspond (more or less) to LSB init
script actions (and we've been talking about the desirability of
making that a closer fit); while this is something which would *not
be appropriate* in an init script.
Well, it's not appropriate or safe as a default action, but there
already is a nonstandard "service postgresql init" action in at least
the PGDG and Red Hat init scripts. In fact, I believe that Zdenek's
entire rationale for this is predicated on the assumption that he can
eventually make initdb's disappearance transparent, if he can get
people used to using such a thing instead of initdb'ing by hand.
regards, tom lane
On lör, 2009-11-14 at 14:50 +0100, Zdenek Kotala wrote:
Peter Eisentraut píše v so 14. 11. 2009 v 10:41 +0200:
On tor, 2009-09-17 at 21:43 +0200, Zdenek Kotala wrote:
Attached patch extends pg_ctl command with init option.
pg_ctl -D /var/lib/postgres [-s] init
This should replace usage of initdb command which has problematic name
as we already discussed several times. Initdb binary will be still
there, but it can be renamed and move into execlib dir in the future.Patch does not contains documentation changes. They will depends on
decision which database initialization method will be preferred.OK, let's see. The patch is pretty straightforward, but does anyone
else actually want this? Comments?Maybe we could ask on general where is more admins. I will send voting
email.
I think this is over now. There was some support, some "don't care, but
could make sense", and no one violently objecting, so please finish the
patch up with documentation, and it can go in as far as I'm concerned.
Someone was proposing that pg_ctl initdb be an alias to pg_ctl init.
Perhaps you could add that.
I attached updated patch and doc patch.
Zdenek
Peter Eisentraut píše v so 21. 11. 2009 v 13:19 +0200:
Show quoted text
On lör, 2009-11-14 at 14:50 +0100, Zdenek Kotala wrote:
Peter Eisentraut píše v so 14. 11. 2009 v 10:41 +0200:
On tor, 2009-09-17 at 21:43 +0200, Zdenek Kotala wrote:
Attached patch extends pg_ctl command with init option.
pg_ctl -D /var/lib/postgres [-s] init
This should replace usage of initdb command which has problematic name
as we already discussed several times. Initdb binary will be still
there, but it can be renamed and move into execlib dir in the future.Patch does not contains documentation changes. They will depends on
decision which database initialization method will be preferred.OK, let's see. The patch is pretty straightforward, but does anyone
else actually want this? Comments?Maybe we could ask on general where is more admins. I will send voting
email.I think this is over now. There was some support, some "don't care, but
could make sense", and no one violently objecting, so please finish the
patch up with documentation, and it can go in as far as I'm concerned.Someone was proposing that pg_ctl initdb be an alias to pg_ctl init.
Perhaps you could add that.
I just noticed that there was an updated patch here that never made its
way onto the CommitFest app listing. I just fixed that and took a quick
look at it. I was in favor of this code change, but I have to say even
I don't really like how it ended up getting documented--and I'm sure
there are others would be downright hostile toward it.
The biggest problem is that all of the places that used to say
"<command><initdb>" when talking about creating a cluster now just say
"database cluster initialization"--with no link to a section covering
that topic. That's not a good forward step. The part I'm more
favorable toward that I expect other people to really cringe at is that
the examples showing how to manually run initdb have all been switched
to use "pg_ctl initdb" too.
If we're going to have a smooth transition toward supporting both styles
of working in the next release, I think what needs to happen to the
documentation here is adding a very clear section saying that "initdb"
and "pg_ctl initdb" are the same thing, and noting why both forms
exist. Maybe a short note in both pg_ctl and initdb pointing at each
other; not sure yet what's best. Then update all the current places
that say "initdb" that have been rewritten in this doc patch to
"database cluster initialization" to reference things appropriate still.
Going as far as making all the examples exclusively use the pg_ctl form
right now is probably more than the community at large wants to handle
just yet I suspect. At best, maybe we could make some or all of those
either use both forms, or link them to the new discussion of
alternatives section.
I'm glad we made some progress (and are basically at code complete now)
on this patch this round. Given that this patch doesn't have a large
amount of support, I think that the remaining work here is fine-tuning
the documentation to cover the new option available without introducing
and abrupt change people won't like. I'm going to mark this "returned
with feedback" for now since I think that's going to take a bit more
work than we really have time for right now, particularly given the
limited number of people who care about this change. Zdenek, once this
CommitFest clears out, I can help out with getting the documentation
parts here smoothed over so this is in proper shape to commit during the
next one; I don't think there's anything left you need to do.
--
Greg Smith 2ndQuadrant Baltimore, MD
PostgreSQL Training, Services and Support
greg@2ndQuadrant.com www.2ndQuadrant.com
Greg Smith <greg@2ndquadrant.com> writes:
The biggest problem is that all of the places that used to say
"<command><initdb>" when talking about creating a cluster now just say
"database cluster initialization"--with no link to a section covering
that topic. That's not a good forward step. The part I'm more
favorable toward that I expect other people to really cringe at is that
the examples showing how to manually run initdb have all been switched
to use "pg_ctl initdb" too.
That's easily dealt with ;-) ... just rip out all those parts of the
diff. I think all that needs to be done in the docs is to list the initdb
option in the pg_ctl reference page.
If you think it's code-complete, let's just commit the code and not
try to have a re-education project going on with the docs.
regards, tom lane
Greg,
thanks for your useful comments. I attached new doc patch version. I
removed example changes and add link to create database cluster (I hope)
everywhere. Please, look on it and let me know if there is still
something what should be changed.
Thanks Zdenek
Greg Smith píše v ne 06. 12. 2009 v 22:29 -0500:
Show quoted text
I just noticed that there was an updated patch here that never made its
way onto the CommitFest app listing. I just fixed that and took a quick
look at it. I was in favor of this code change, but I have to say even
I don't really like how it ended up getting documented--and I'm sure
there are others would be downright hostile toward it.The biggest problem is that all of the places that used to say
"<command><initdb>" when talking about creating a cluster now just say
"database cluster initialization"--with no link to a section covering
that topic. That's not a good forward step. The part I'm more
favorable toward that I expect other people to really cringe at is that
the examples showing how to manually run initdb have all been switched
to use "pg_ctl initdb" too.If we're going to have a smooth transition toward supporting both styles
of working in the next release, I think what needs to happen to the
documentation here is adding a very clear section saying that "initdb"
and "pg_ctl initdb" are the same thing, and noting why both forms
exist. Maybe a short note in both pg_ctl and initdb pointing at each
other; not sure yet what's best. Then update all the current places
that say "initdb" that have been rewritten in this doc patch to
"database cluster initialization" to reference things appropriate still.Going as far as making all the examples exclusively use the pg_ctl form
right now is probably more than the community at large wants to handle
just yet I suspect. At best, maybe we could make some or all of those
either use both forms, or link them to the new discussion of
alternatives section.I'm glad we made some progress (and are basically at code complete now)
on this patch this round. Given that this patch doesn't have a large
amount of support, I think that the remaining work here is fine-tuning
the documentation to cover the new option available without introducing
and abrupt change people won't like. I'm going to mark this "returned
with feedback" for now since I think that's going to take a bit more
work than we really have time for right now, particularly given the
limited number of people who care about this change. Zdenek, once this
CommitFest clears out, I can help out with getting the documentation
parts here smoothed over so this is in proper shape to commit during the
next one; I don't think there's anything left you need to do.
Attachments:
pg_init_doc_02.patchtext/x-patch; CHARSET=US-ASCII; name=pg_init_doc_02.patchDownload+63-34
Zdenek Kotala wrote:
thanks for your useful comments. I attached new doc patch version. I
removed example changes and add link to create database cluster (I hope)
everywhere. Please, look on it and let me know if there is still
something what should be changed.
That looks much better. There's only one bit that sticks out oddly now:
+ Note: The <command>initdb</command> might be invoked by
+ <command>pg_ctl initdb</command> and <command>initdb</command> cannot be in
+ default path on a <productname>PostgreSQL</productname> installations.
What is that supposed to mean exactly?
--
Greg Smith 2ndQuadrant Baltimore, MD
PostgreSQL Training, Services and Support
greg@2ndQuadrant.com www.2ndQuadrant.com
Greg Smith píše v út 08. 12. 2009 v 22:44 -0500:
Zdenek Kotala wrote:
thanks for your useful comments. I attached new doc patch version. I
removed example changes and add link to create database cluster (I hope)
everywhere. Please, look on it and let me know if there is still
something what should be changed.That looks much better. There's only one bit that sticks out oddly now:
+ Note: The <command>initdb</command> might be invoked by + <command>pg_ctl initdb</command> and <command>initdb</command> cannot be in + default path on a <productname>PostgreSQL</productname> installations.What is that supposed to mean exactly?
Ahh, It is somethink what I want to do, but it is not ready yet in this
patch, but I already documented it. Idea is to install initdb and
postgres into libexecdir and packager can select if libexecdir will be
equal bindir or not.
The paragraph should be removed at this moment. Shell I send modified
patch or does committer remove it before commit?
thanks Zdenek
On Dec 9, 2009, at 8:32 AM, Zdenek Kotala <Zdenek.Kotala@Sun.COM> wrote:
Greg Smith píše v út 08. 12. 2009 v 22:44 -0500:
Zdenek Kotala wrote:
thanks for your useful comments. I attached new doc patch
version. I
removed example changes and add link to create database cluster (I
hope)
everywhere. Please, look on it and let me know if there is still
something what should be changed.That looks much better. There's only one bit that sticks out oddly
now:+ Note: The <command>initdb</command> might be invoked by + <command>pg_ctl initdb</command> and <command>initdb</command> cannot be in + default path on a <productname>PostgreSQL</productname> installations.What is that supposed to mean exactly?
Ahh, It is somethink what I want to do, but it is not ready yet in
this
patch, but I already documented it. Idea is to install initdb and
postgres into libexecdir and packager can select if libexecdir will be
equal bindir or not.The paragraph should be removed at this moment. Shell I send modified
patch or does committer remove it before commit?
I think Peter claimed this one but as far as I am concerned, I would
always rather have an updated patch.
...Robert
Robert Haas píše v st 09. 12. 2009 v 08:56 -0500:
On Dec 9, 2009, at 8:32 AM, Zdenek Kotala <Zdenek.Kotala@Sun.COM> wrote:
<snip>
Ahh, It is somethink what I want to do, but it is not ready yet in
this
patch, but I already documented it. Idea is to install initdb and
postgres into libexecdir and packager can select if libexecdir will be
equal bindir or not.The paragraph should be removed at this moment. Shell I send modified
patch or does committer remove it before commit?I think Peter claimed this one but as far as I am concerned, I would
always rather have an updated patch.
OK, here it is.
Thanks Zdenek
Attachments:
pg_init_doc_03.patchtext/x-patch; CHARSET=US-ASCII; name=pg_init_doc_03.patchDownload+62-34
On ons, 2009-12-09 at 15:18 +0100, Zdenek Kotala wrote:
Robert Haas píše v st 09. 12. 2009 v 08:56 -0500:
On Dec 9, 2009, at 8:32 AM, Zdenek Kotala <Zdenek.Kotala@Sun.COM> wrote:
<snip>
Ahh, It is somethink what I want to do, but it is not ready yet in
this
patch, but I already documented it. Idea is to install initdb and
postgres into libexecdir and packager can select if libexecdir will be
equal bindir or not.The paragraph should be removed at this moment. Shell I send modified
patch or does committer remove it before commit?I think Peter claimed this one but as far as I am concerned, I would
always rather have an updated patch.OK, here it is.
Committed with some adjustments.