Re: Fix pg_ctl restart bug

Bruce Momjian <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.patches
Message-ID <[email protected]>
Bruce Momjian wrote:
> I am attaching a minimal patch that will fix the bug in back branches. 
> Keep in mind that a patched pg_ctl will not be able to restart a backend
> that was not patched.

I think this patch will work for unpatched backends as well.  I am still
uncertain if it should be backpatched.

-- 
  Bruce Momjian  <[email protected]>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +


-- 
Sent via pgsql-patches mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches
/pgpatches/pg_ctl (text/x-diff, 1.9 KB)
Index: src/backend/postmaster/postmaster.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v
retrieving revision 1.551
diff -c -c -r1.551 postmaster.c
*** src/backend/postmaster/postmaster.c	11 Jan 2008 00:54:09 -0000	1.551
--- src/backend/postmaster/postmaster.c	26 Jun 2008 19:11:37 -0000
***************
*** 4163,4169 ****
  
  	fprintf(fp, "%s", fullprogname);
  	for (i = 1; i < argc; i++)
! 		fprintf(fp, " %s%s%s", SYSTEMQUOTE, argv[i], SYSTEMQUOTE);
  	fputs("\n", fp);
  
  	if (fclose(fp))
--- 4163,4169 ----
  
  	fprintf(fp, "%s", fullprogname);
  	for (i = 1; i < argc; i++)
! 		fprintf(fp, " \"%s\"", argv[i]);
  	fputs("\n", fp);
  
  	if (fclose(fp))
Index: src/bin/pg_ctl/pg_ctl.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/pg_ctl/pg_ctl.c,v
retrieving revision 1.92.2.3
diff -c -c -r1.92.2.3 pg_ctl.c
*** src/bin/pg_ctl/pg_ctl.c	29 Feb 2008 23:31:42 -0000	1.92.2.3
--- src/bin/pg_ctl/pg_ctl.c	26 Jun 2008 19:11:37 -0000
***************
*** 613,627 ****
  			{
  				char	   *arg1;
  
! 				arg1 = strchr(optline, *SYSTEMQUOTE);
! 				if (arg1 == NULL || arg1 == optline)
! 					post_opts = "";
! 				else
  				{
! 					*(arg1 - 1) = '\0'; /* this should be a space */
! 					post_opts = arg1;
  				}
! 				if (postgres_path != NULL)
  					postgres_path = optline;
  			}
  			else
--- 613,629 ----
  			{
  				char	   *arg1;
  
! 				/*
! 				 * Are we at the first option, as defined by space and
! 				 * double-quote?
! 				 */
! 				if ((arg1 = strstr(optline, " \"")) != NULL ||
! 				    (arg1 = strstr(optline, " -")) != NULL)
  				{
! 					*arg1 = '\0';	/* terminate so we get only program name */
! 					post_opts = arg1 + 1; /* point past whitespace */
  				}
! 				if (postgres_path == NULL)
  					postgres_path = optline;
  			}
  			else
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.