Re: [pgsql-hackers-win32] PITR on Win32 - Archive and Restore - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: [pgsql-hackers-win32] PITR on Win32 - Archive and Restore |
Date | |
Msg-id | 200408121905.i7CJ5Bh20104@candle.pha.pa.us Whole thread Raw |
In response to | Re: [pgsql-hackers-win32] PITR on Win32 - Archive and Restore (Tom Lane <tgl@sss.pgh.pa.us>) |
List | pgsql-patches |
OK, patch attached and applied. --------------------------------------------------------------------------- Tom Lane wrote: > Bruce Momjian <pgman@candle.pha.pa.us> 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 **** <term><varname>archive_command</varname> (<type>string</type>)</term> <listitem> <para> ! 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 <literal>%p</> in the string is ! replaced ! by the absolute path of the file to archive, while any <literal>%f</> ! is replaced by the file name only. Write <literal>%%</> if you need ! to embed an actual <literal>%</> character in the command. For more ! information see <xref linkend="backup-archiving-wal">. This option ! can only be set at server start or in the ! <filename>postgresql.conf</filename> file. </para> </listitem> </varlistentry> --- 1435,1458 ---- <term><varname>archive_command</varname> (<type>string</type>)</term> <listitem> <para> ! 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 <literal>%p</> in the string is ! replaced by the absolute path of the file to archive, and any ! <literal>%f</> is replaced by the file name only. Use ! <literal>%%</> to embed an actual <literal>%</> character in the ! command. For more information see <xref ! linkend="backup-archiving-wal">. This option can only be set at ! server start or in the <filename>postgresql.conf</filename> ! file. ! </para> ! <para> ! It is important for the command to return a zero exit status only if ! it succeeds. Examples: ! <programlisting> ! archive_command = 'cp "%p" /mnt/server/archivedir/"%f"' ! archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32 ! </programlisting> </para> </listitem> </varlistentry> 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 by date: