Commit 10249abf authored by Bruce Momjian's avatar Bruce Momjian

Cleanup Win32 COPY handling, and move archive examples to SGML.

parent 43ea65a0
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.275 2004/08/08 20:17:33 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.276 2004/08/12 19:03:17 momjian Exp $
--> -->
<Chapter Id="runtime"> <Chapter Id="runtime">
...@@ -1435,16 +1435,24 @@ SET ENABLE_SEQSCAN TO OFF; ...@@ -1435,16 +1435,24 @@ SET ENABLE_SEQSCAN TO OFF;
<term><varname>archive_command</varname> (<type>string</type>)</term> <term><varname>archive_command</varname> (<type>string</type>)</term>
<listitem> <listitem>
<para> <para>
The shell command to execute to archive a completed segment of the The shell command to execute to archive a completed segment of
WAL file series. If this is an empty string (which is the default), the WAL file series. If this is an empty string (the default),
WAL archiving is disabled. Any <literal>%p</> in the string is WAL archiving is disabled. Any <literal>%p</> in the string is
replaced replaced by the absolute path of the file to archive, and any
by the absolute path of the file to archive, while any <literal>%f</> <literal>%f</> is replaced by the file name only. Use
is replaced by the file name only. Write <literal>%%</> if you need <literal>%%</> to embed an actual <literal>%</> character in the
to embed an actual <literal>%</> character in the command. For more command. For more information see <xref
information see <xref linkend="backup-archiving-wal">. This option linkend="backup-archiving-wal">. This option can only be set at
can only be set at server start or in the server start or in the <filename>postgresql.conf</filename>
<filename>postgresql.conf</filename> file. 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> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.161 2004/08/12 18:34:45 momjian Exp $ * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.162 2004/08/12 19:03:23 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -1962,18 +1962,6 @@ RestoreArchivedFile(char *path, const char *xlogfname, ...@@ -1962,18 +1962,6 @@ RestoreArchivedFile(char *path, const char *xlogfname,
/* %p: full path of target file */ /* %p: full path of target file */
sp++; sp++;
StrNCpy(dp, xlogpath, endp-dp); 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); make_native_path(dp);
dp += strlen(dp); dp += strlen(dp);
break; break;
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.6 2004/08/09 16:26:06 tgl Exp $ * $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.7 2004/08/12 19:03:34 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -436,17 +436,8 @@ pgarch_archiveXlog(char *xlog) ...@@ -436,17 +436,8 @@ pgarch_archiveXlog(char *xlog)
/* %p: full path of source file */ /* %p: full path of source file */
sp++; sp++;
StrNCpy(dp, pathname, endp-dp); StrNCpy(dp, pathname, endp-dp);
#ifndef WIN32 make_native_path(dp);
dp += strlen(dp); dp += strlen(dp);
#else
/* On Windows, change / to \ in the substituted path */
while (*dp)
{
if (*dp == '/')
*dp = '\\';
dp++;
}
#endif
break; break;
case 'f': case 'f':
/* %f: filename of source file */ /* %f: filename of source file */
......
...@@ -117,16 +117,6 @@ ...@@ -117,16 +117,6 @@
# - Archiving - # - Archiving -
#archive_command = '' # command to use to archive a logfile segment #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
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/port/path.c,v 1.28 2004/08/12 18:32:52 momjian Exp $ * $PostgreSQL: pgsql/src/port/path.c,v 1.29 2004/08/12 19:03:44 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -88,8 +88,17 @@ last_dir_separator(const char *filename) ...@@ -88,8 +88,17 @@ last_dir_separator(const char *filename)
/* /*
* make_native_path * make_native_path - on WIN32, change / to \ in the 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 void
make_native_path(char *filename) make_native_path(char *filename)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment