mirror of https://github.com/postgres/postgres
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
This commit is contained in:
parent
31a89ddeb8
commit
a5bee67c36
|
@ -1082,6 +1082,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>
|
||||
|
||||
|
|
|
@ -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 ((linelen == 3 && memcmp(fgresult, "\\.\n", 3) == 0) ||
|
||||
(linelen == 4 && memcmp(fgresult, "\\.\r\n", 4) == 0))
|
||||
|
|
Loading…
Reference in New Issue