diff options
author | Bruce Momjian <bruce@momjian.us> | 2023-11-03 13:57:58 -0400 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2023-11-03 13:57:58 -0400 |
commit | 7186596db64a038150f03a02f3fcf9edb9f149c5 (patch) | |
tree | be576115dd3549ae7cf1e2e500aea73716a52285 | |
parent | bf7584e4c7f759e7584b82f9353f61ba4a9d3f21 (diff) | |
download | postgresql-7186596db64a038150f03a02f3fcf9edb9f149c5.tar.gz postgresql-7186596db64a038150f03a02f3fcf9edb9f149c5.zip |
doc: \copy can get data values \. and end-of-input confused
Reported-by: Svante Richter
Discussion: https://postgr.es/m/fcd57e4-8f23-4c3e-a5db-2571d09208e2@beta.fastmail.com
Backpatch-through: 11
-rw-r--r-- | doc/src/sgml/ref/psql-ref.sgml | 4 | ||||
-rw-r--r-- | src/bin/psql/copy.c | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 1802330b703..2673684ace3 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -1075,6 +1075,10 @@ testdb=> destination, because all data must pass through the client/server connection. For large amounts of data the <acronym>SQL</acronym> command might be preferable. + Also, because of this pass-through method, <literal>\copy + ... from</literal> in <acronym>CSV</acronym> mode will erroneously + treat a <literal>\.</literal> data value alone on a line as an + end-of-input marker. </para> </tip> diff --git a/src/bin/psql/copy.c b/src/bin/psql/copy.c index f59db8d7bd0..92934725383 100644 --- a/src/bin/psql/copy.c +++ b/src/bin/psql/copy.c @@ -629,6 +629,7 @@ handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary, PGresult **res) * This code erroneously assumes '\.' on a line alone * inside a quoted CSV string terminates the \copy. * https://www.postgresql.org/message-id/E1TdNVQ-0001ju-GO@wrigleys.postgresql.org + * https://www.postgresql.org/message-id/bfcd57e4-8f23-4c3e-a5db-2571d09208e2@beta.fastmail.com */ if (strcmp(buf, "\\.\n") == 0 || strcmp(buf, "\\.\r\n") == 0) |