Re: [pgsql-hackers-win32] PITR on Win32 - Archive and Restore

Поиск
Список
Период
Сортировка
Искать
От
Bruce Momjian
Тема
Re: [pgsql-hackers-win32] PITR on Win32 - Archive and Restore
Дата
Msg-id
200408121905.i7CJ5Bh20104@candle.pha.pa.us
Ответ на
Список
Дерево обсуждения
Re: [pgsql-hackers-win32] PITR on Win32 - Archive and Restore Bruce Momjian <pgman@candle.pha.pa.us>

OK, patch attached and applied.

---------------------------------------------------------------------------

Tom Lane wrote:
> Bruce Momjian  writes:
> > The attached applied patch cleans up our implementation and documents
> > its purpose. I also added some examples for 'archive_command'.
> 
> If you're going to do that, do it in both places ... you missed
> pgarch.c.
> 
> Also, I would say that the large block comment belongs with
> make_native_path, not with its caller.
> 
> > ! #
> >   # If archive_command is '' then archiving is disabled.  Otherwise, set it
> > ! # to a command to copy a file to the proper place.  Any %p in the string 
> > ! # is replaced by the absolute path of the file to archive, while any %f is 
> > ! # replaced by the file name only.  NOTE: it is important for the command to 
> > ! # return zero exit status only if it succeeds.
> > ! #
> > ! # Examples:
> > ! # 	archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
> > ! # 	archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Win32
> > ! 
> 
> This text should probably be removed from postgresql.conf.sample
> altogether; we are not in the habit of providing more than one-line
> documentation there.  I stuck it in there as a quick and dirty thing
> because we didn't have archive_command in the SGML docs at the time.
> But now we do, and I'd say this info should be moved to runtime.sgml.
> 
> 			regards, tom lane
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: doc/src/sgml/runtime.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/runtime.sgml,v
retrieving revision 1.275
diff -c -c -r1.275 runtime.sgml
*** doc/src/sgml/runtime.sgml	8 Aug 2004 20:17:33 -0000	1.275
--- doc/src/sgml/runtime.sgml	12 Aug 2004 18:54:37 -0000
***************
*** 1435,1450 ****
        archive_command (string)
        
         
!         The shell command to execute to archive a completed segment of the
! 	WAL file series.  If this is an empty string (which is the default),
! 	WAL archiving is disabled.  Any %p</> in the string is
! 	replaced 
! 	by the absolute path of the file to archive, while any %f</>
! 	is replaced by the file name only.  Write %%</> if you need
! 	to embed an actual %</> character in the command.  For more
! 	information see .  This option
! 	can only be set at server start or in the
! 	postgresql.conf file.
         
        
       
--- 1435,1458 ----
        archive_command (string)
        
         
!         The shell command to execute to archive a completed segment of
!         the WAL file series. If this is an empty string (the default),
!         WAL archiving is disabled. Any %p</> in the string is
!         replaced by the absolute path of the file to archive, and any
!         %f</> is replaced by the file name only. Use
!         %%</> to embed an actual %</> character in the
!         command. For more information see . This option can only be set at
!         server start or in the postgresql.conf
!         file.
!        
!        
!         It is important for the command to return a zero exit status only if
! 	it succeeds.  Examples:
! 
! archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
! archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Win32
! 
         
        
       
Index: src/backend/access/transam/xlog.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/access/transam/xlog.c,v
retrieving revision 1.161
diff -c -c -r1.161 xlog.c
*** src/backend/access/transam/xlog.c	12 Aug 2004 18:34:45 -0000	1.161
--- src/backend/access/transam/xlog.c	12 Aug 2004 18:54:50 -0000
***************
*** 1962,1979 ****
  					/* %p: full path of target file */
  					sp++;
  					StrNCpy(dp, xlogpath, endp-dp);
- 					/*
- 					 *	make_native_path() is required because WIN32 COPY is
- 					 *	an internal CMD.EXE command and doesn't process
- 					 *	forward slashes in the same way as external commands.
- 					 *	Quoting the first argument to COPY does not convert
- 					 *	forward to backward slashes, but COPY does properly
- 					 *	process quoted forward slashes in the second argument.
- 					 *
- 					 *	COPY works with quoted forward slashes in the first argument
- 					 *	only if the current directory is the same as the directory
- 					 *	of the first argument.
- 					 */
  					make_native_path(dp);
  					dp += strlen(dp);
  					break;
--- 1962,1967 ----
Index: src/backend/postmaster/pgarch.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/postmaster/pgarch.c,v
retrieving revision 1.6
diff -c -c -r1.6 pgarch.c
*** src/backend/postmaster/pgarch.c	9 Aug 2004 16:26:06 -0000	1.6
--- src/backend/postmaster/pgarch.c	12 Aug 2004 18:54:52 -0000
***************
*** 436,452 ****
  					/* %p: full path of source file */
  					sp++;
  					StrNCpy(dp, pathname, endp-dp);
! #ifndef WIN32
  					dp += strlen(dp);
- #else
- 					/* On Windows, change / to \ in the substituted path */
- 					while (*dp)
- 					{
- 						if (*dp == '/')
- 							*dp = '\\';
- 						dp++;
- 					}
- #endif
  					break;
  				case 'f':
  					/* %f: filename of source file */
--- 436,443 ----
  					/* %p: full path of source file */
  					sp++;
  					StrNCpy(dp, pathname, endp-dp);
! 					make_native_path(dp);
  					dp += strlen(dp);
  					break;
  				case 'f':
  					/* %f: filename of source file */
Index: src/backend/utils/misc/postgresql.conf.sample
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/utils/misc/postgresql.conf.sample,v
retrieving revision 1.125
diff -c -c -r1.125 postgresql.conf.sample
*** src/backend/utils/misc/postgresql.conf.sample	12 Aug 2004 18:32:37 -0000	1.125
--- src/backend/utils/misc/postgresql.conf.sample	12 Aug 2004 18:54:55 -0000
***************
*** 117,132 ****
  # - Archiving -
  
  #archive_command = ''		# command to use to archive a logfile segment
- #
- # If archive_command is '' then archiving is disabled.  Otherwise, set it
- # to a command to copy a file to the proper place.  Any %p in the string 
- # is replaced by the absolute path of the file to archive, while any %f is 
- # replaced by the file name only.  NOTE: it is important for the command to 
- # return zero exit status only if it succeeds.
- #
- # Examples:
- # 	archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
- # 	archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Win32
  
  
  #---------------------------------------------------------------------------
--- 117,122 ----
Index: src/port/path.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/port/path.c,v
retrieving revision 1.28
diff -c -c -r1.28 path.c
*** src/port/path.c	12 Aug 2004 18:32:52 -0000	1.28
--- src/port/path.c	12 Aug 2004 18:55:02 -0000
***************
*** 88,95 ****
  
  
  /*
!  *	make_native_path
!  *	On WIN32, change / to \ in the path.
   */
  void
  make_native_path(char *filename)
--- 88,104 ----
  
  
  /*
!  *	make_native_path - on WIN32, change / to \ in the path
!  *
!  *	This is required because WIN32 COPY is an internal CMD.EXE
!  *	command and doesn't process forward slashes in the same way
!  *	as external commands.  Quoting the first argument to COPY
!  *	does not convert forward to backward slashes, but COPY does
!  *	properly process quoted forward slashes in the second argument.
!  *
!  *	COPY works with quoted forward slashes in the first argument
!  *	only if the current directory is the same as the directory
!  *	of the first argument.
   */
  void
  make_native_path(char *filename)
В списке pgsql-patches по дате отправления
От: Tom Lane
Дата:
От: Oliver Jowett
Дата:
FAQ