Re: [HACKERS] Patch BUG #5103: pg_ctl -w (re)start fails with custom unix_socket_directory

2010-12-23 Thread Quan Zongliang
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

2010-12-22 Thread Bruce Momjian
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

2010-12-21 Thread Quan Zongliang
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

2010-12-21 Thread Alvaro Herrera
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

2010-11-29 Thread Alvaro Herrera
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

2010-11-27 Thread Quan Zongliang
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