Skip to content
Snippets Groups Projects
Commit 9c48cae3 authored by Bruce Momjian's avatar Bruce Momjian
Browse files

Add pipe parameter to COPY function to allow proper line termination.

parent 3df163ad
Branches
Tags
No related merge requests found
<!--
$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>
......
......@@ -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);
/*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment