diff --git a/doc/src/sgml/ref/copy.sgml b/doc/src/sgml/ref/copy.sgml index 56e7223bd9f6f19bbfeb46372ea99f82dac6cc16..209ae01bd7a8f700aa88a9fa18fc272b16d88670 100644 --- a/doc/src/sgml/ref/copy.sgml +++ b/doc/src/sgml/ref/copy.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/copy.sgml,v 1.42 2003/04/15 13:25:08 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/copy.sgml,v 1.43 2003/04/19 19:55:37 momjian Exp $ PostgreSQL documentation --> @@ -289,7 +289,7 @@ COPY <replaceable class="parameter">table</replaceable> [ ( <replaceable class=" otherwise be taken as row or column delimiters. In particular, the following characters <emphasis>must</> be preceded by a backslash if they appear as part of a column value: backslash itself, - newline, and the current delimiter character. + newline, carriage return, and the current delimiter character. </para> <para> @@ -355,16 +355,16 @@ COPY <replaceable class="parameter">table</replaceable> [ ( <replaceable class=" It is strongly recommended that applications generating COPY data convert data newlines and carriage returns to the <literal>\n</> and <literal>\r</> sequences respectively. At present it is - possible to represent a data carriage return without any special quoting, - and to represent a data newline by a backslash and newline. However, - these representations will not be accepted by default in future releases. + possible to represent a data carriage return by a backslash and carriage + return, and to represent a data newline by a backslash and newline. + However, these representations might not be accepted in future releases. </para> <para> - Note that the end of each row is marked by a Unix-style newline - (<quote><literal>\n</></>). Presently, <command>COPY FROM</command> will not behave as - desired if given a file containing DOS- or Mac-style newlines. - This is expected to change in future releases. + <command>COPY TO</command> will terminate each row with a Unix-style + newline (<quote><literal>\n</></>), or carriage return/newline + ("\r\n") on MS Windows. <command>COPY FROM</command> can handle lines + ending with newlines, carriage returns, or carriage return/newlines. </para> </refsect2> @@ -393,7 +393,7 @@ COPY <replaceable class="parameter">table</replaceable> [ ( <replaceable class=" 12-byte sequence <literal>PGBCOPY\n\377\r\n\0</> --- note that the zero byte is a required part of the signature. (The signature is designed to allow easy identification of files that have been munged by a non-8-bit-clean -transfer. This signature will be changed by newline-translation +transfer. This signature will be changed by end-of-line-translation filters, dropped zero bytes, dropped high bits, or parity changes.) </para> </listitem> diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index fd85f48b592877ce2318e50e02c9b9c32a478adf..64e3c09e29fcebb1536e67548816e0484aa386b3 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.192 2003/04/19 00:02:29 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.193 2003/04/19 19:55:37 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -114,7 +114,7 @@ static int server_encoding; */ static void SendCopyBegin(bool binary); static void ReceiveCopyBegin(bool binary); -static void SendCopyEnd(bool binary); +static void SendCopyEnd(bool binary, bool pipe); static void CopySendData(void *databuf, int datasize); static void CopySendString(const char *str); static void CopySendChar(char c); @@ -178,7 +178,7 @@ ReceiveCopyBegin(bool binary) } static void -SendCopyEnd(bool binary) +SendCopyEnd(bool binary, bool pipe) { if (!binary) CopySendData("\\.\n", 3); @@ -680,7 +680,7 @@ DoCopy(const CopyStmt *stmt) if (!pipe) FreeFile(copy_file); else if (IsUnderPostmaster && !is_from) - SendCopyEnd(binary); + SendCopyEnd(binary, pipe); pfree(attribute_buf.data); /*