Re: [HACKERS] Patch BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory
On Wed, 22 Dec 2010 21:02:35 -0500 (EST) Bruce Momjian br...@momjian.us wrote: Alvaro Herrera wrote: Excerpts from Quan Zongliang's message of mar dic 21 18:36:11 -0300 2010: On Mon, 29 Nov 2010 10:29:17 -0300 Alvaro Herrera alvhe...@commandprompt.com wrote: I think the way this should work is that you call postmaster with a new switch and it prints out its configuration, after reading the appropriate config file(s). That way it handles all the little details such as figuring out the correct config file, hadle include files, etc. This output would be presumably easier to parse and more trustworthy. Sorry for my late reply. I will check the source of postmaster. Actually Bruce Momjian is now working on a different fix: unix_socket_directory would be added to postmaster.pid, allowing pg_ctl to find it. Yes, I will apply this patch tomorrow and it will be in 9.1. Thanks for the report. Nice work. -- Quan Zongliang quanzongli...@gmail.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] Patch BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory
Alvaro Herrera wrote: Excerpts from Quan Zongliang's message of mar dic 21 18:36:11 -0300 2010: On Mon, 29 Nov 2010 10:29:17 -0300 Alvaro Herrera alvhe...@commandprompt.com wrote: I think the way this should work is that you call postmaster with a new switch and it prints out its configuration, after reading the appropriate config file(s). That way it handles all the little details such as figuring out the correct config file, hadle include files, etc. This output would be presumably easier to parse and more trustworthy. Sorry for my late reply. I will check the source of postmaster. Actually Bruce Momjian is now working on a different fix: unix_socket_directory would be added to postmaster.pid, allowing pg_ctl to find it. Yes, I will apply this patch tomorrow and it will be in 9.1. Thanks for the report. -- Bruce Momjian br...@momjian.ushttp://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. + -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] Patch BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory
On Mon, 29 Nov 2010 10:29:17 -0300 Alvaro Herrera alvhe...@commandprompt.com wrote: Excerpts from Quan Zongliang's message of sáb nov 27 06:03:12 -0300 2010: Hi, all I created a pg_ctl patch to fix: * BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory Allow pg_ctl to work properly with configuration files located outside the PGDATA directory I think the way this should work is that you call postmaster with a new switch and it prints out its configuration, after reading the appropriate config file(s). That way it handles all the little details such as figuring out the correct config file, hadle include files, etc. This output would be presumably easier to parse and more trustworthy. Right now we have --describe-config, which is missing the values for each config option. Sorry for my late reply. I will check the source of postmaster. -- Quan Zongliang quanzongli...@gmail.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] Patch BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory
Excerpts from Quan Zongliang's message of mar dic 21 18:36:11 -0300 2010: On Mon, 29 Nov 2010 10:29:17 -0300 Alvaro Herrera alvhe...@commandprompt.com wrote: I think the way this should work is that you call postmaster with a new switch and it prints out its configuration, after reading the appropriate config file(s). That way it handles all the little details such as figuring out the correct config file, hadle include files, etc. This output would be presumably easier to parse and more trustworthy. Sorry for my late reply. I will check the source of postmaster. Actually Bruce Momjian is now working on a different fix: unix_socket_directory would be added to postmaster.pid, allowing pg_ctl to find it. -- Álvaro Herrera alvhe...@commandprompt.com The PostgreSQL Company - Command Prompt, Inc. PostgreSQL Replication, Consulting, Custom Development, 24x7 support -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] Patch BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory
Excerpts from Quan Zongliang's message of sáb nov 27 06:03:12 -0300 2010: Hi, all I created a pg_ctl patch to fix: * BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory Allow pg_ctl to work properly with configuration files located outside the PGDATA directory I think the way this should work is that you call postmaster with a new switch and it prints out its configuration, after reading the appropriate config file(s). That way it handles all the little details such as figuring out the correct config file, hadle include files, etc. This output would be presumably easier to parse and more trustworthy. Right now we have --describe-config, which is missing the values for each config option. -- Álvaro Herrera alvhe...@commandprompt.com The PostgreSQL Company - Command Prompt, Inc. PostgreSQL Replication, Consulting, Custom Development, 24x7 support -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
[HACKERS] Patch BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory
Hi, all I created a pg_ctl patch to fix: * BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory Allow pg_ctl to work properly with configuration files located outside the PGDATA directory I tested it under Windows XP sp3. All of configuration files(postgresql.conf pg_hba.conf pg_ident.conf) are in c:\data, and data_dir is in C:\Program Files\PostgreSQL\9.0\data Check the attchment, please. Another question, after clone source with git I can not compile them: Bad format filename 'src\bin\scripts\submake-libpq' Former makefile like createdb: createdb.o ... keywords.o Now it is createdb: createdb.o ... keywords.o | submake-libpq How to do this? -- SEARCHING JOB. I can work on C/C++. Quan Zongliang quanzongli...@gmail.com diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c old mode 100644 new mode 100755 index 14d36b5..c708ba8 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -89,6 +89,8 @@ static char *register_username = NULL; static char *register_password = NULL; static char *argv0 = NULL; static bool allow_core_files = false; +static char *pgconf_portstr = NULL; +static char *pgconf_datadir = NULL; static void write_stderr(const char *fmt,...) @@ -455,41 +457,7 @@ test_postmaster_connection(bool do_checkpoint) * for valid port settings. */ if (!*portstr) - { - char **optlines; - - optlines = readfile(conf_file); - if (optlines != NULL) - { - for (; *optlines != NULL; optlines++) - { - p = *optlines; - - while (isspace((unsigned char) *p)) - p++; - if (strncmp(p, port, 4) != 0) - continue; - p += 4; - while (isspace((unsigned char) *p)) - p++; - if (*p != '=') - continue; - p++; - /* advance past any whitespace/quoting */ - while (isspace((unsigned char) *p) || *p == '\'' || *p == '') - p++; - /* find end of value (not including any ending quote/comment!) */ - q = p; - while (*q - !(isspace((unsigned char) *q) || -*q == '\'' || *q == '' || *q == '#')) - q++; - /* and save the argument value */ - strlcpy(portstr, p, Min((q - p) + 1, sizeof(portstr))); - /* keep looking, maybe there is another */ - } - } - } + strlcpy(portstr, pgconf_portstr, Min(sizeof(pgconf_portstr)+1, sizeof(portstr))); /* Check environment */ if (!*portstr getenv(PGPORT) != NULL) @@ -547,6 +515,75 @@ test_postmaster_connection(bool do_checkpoint) } +static void +read_conf_file(void) +{ + char**optlines; + char *p, *q; + bool isportnum, isdatadir, isquoted; + + optlines = readfile(conf_file); + if (optlines == NULL) + return; + + for (; *optlines != NULL; optlines++) + { + p = *optlines; + + while (isspace((unsigned char) *p)) + p++; + + if (strncmp(p, port, 4) == 0) + { + isportnum = true; + p += 4; + } + else if (strncmp(p, data_directory, 14) == 0) + { + isdatadir = true; + p += 14; + } + else + continue; + + while (isspace((unsigned char) *p)) + p++; + if (*p != '=') + continue; + p++; + isquoted = false; + /* advance past any whitespace/quoting */ + while (isspace((unsigned char) *p) || *p == '\'' || *p == '') + { + if (*p == '\'' || *p == '') + isquoted = true; + p++; + } + /* find end of value (not including any ending quote/comment!) */ + q = p; + while (*q + !((!isquoted isspace((unsigned char) *q)) || +*q == '\'' || *q == '' || *q == '#')) + q++; + /* and save the argument value