Alvaro Herrera wrote:
> 
> Excerpts from Bruce Momjian's message of mi?? sep 28 13:48:28 -0300 2011:
> > Bruce Momjian wrote:
> > > OK, so it fails for all tables and you are using the newest version. 
> > > Thanks for all your work.  I am now guessing that pg_upgrade 9.1.X is
> > > just broken on Windows. 
> > > 
> > > Perhaps the variables set by pg_upgrade_support.so are not being passed
> > > into the server variables?  I know pg_upgrade 9.0.X worked on Windows
> > > because EnterpriseDB did extensive testing recently on this.   Has
> > > anyone used pg_upgrade 9.1.X on Windows?
> > 
> > OK, I have a new theory.  postmaster.c processes the -b
> > (binary-upgrade) flag by setting a C variable:
> > 
> >             case 'b':
> >                 /* Undocumented flag used for binary upgrades */
> >                 IsBinaryUpgrade = true;
> >                 break;
> > 
> > I am now wondering if this variable is not being passed down to the
> > sessions during Win32's EXEC_BACKEND.  Looking at the other postmaster
> > settings, these set GUC variables, which I assume are passed down.  Can
> > someone confirm this?
> 
> Well, you could compile it with -DEXEC_BACKEND to test it for yourself.
> 
> >  How should this be fixed?
> 
> Maybe it should be part of struct BackendParameters.

Thanks.  That's what I did, and tested the failure with -DEXEC_BACKEND,
and the fix with the patch, which is attached.  I am confident this will
fix Windows as well.

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
new file mode 100644
index 94b57fa..0a84d97
*** a/src/backend/postmaster/postmaster.c
--- b/src/backend/postmaster/postmaster.c
*************** typedef struct
*** 433,438 ****
--- 433,439 ----
  	TimestampTz PgStartTime;
  	TimestampTz PgReloadTime;
  	bool		redirection_done;
+ 	bool		IsBinaryUpgrade;
  #ifdef WIN32
  	HANDLE		PostmasterHandle;
  	HANDLE		initial_signal_pipe;
*************** save_backend_variables(BackendParameters
*** 4653,4658 ****
--- 4654,4660 ----
  	param->PgReloadTime = PgReloadTime;
  
  	param->redirection_done = redirection_done;
+ 	param->IsBinaryUpgrade = IsBinaryUpgrade;
  
  #ifdef WIN32
  	param->PostmasterHandle = PostmasterHandle;
*************** restore_backend_variables(BackendParamet
*** 4874,4879 ****
--- 4876,4882 ----
  	PgReloadTime = param->PgReloadTime;
  
  	redirection_done = param->redirection_done;
+ 	IsBinaryUpgrade = param->IsBinaryUpgrade;
  
  #ifdef WIN32
  	PostmasterHandle = param->PostmasterHandle;
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to