On Tue, 19 Dec 2023 at 02:06, Daniel Verite <dan...@manitou-mail.org> wrote: > > Hi, > > PFA a patch that attempts to fix the bug that \. on a line > by itself is handled incorrectly by COPY FROM ... CSV. > This issue has been discussed several times previously, > for instance in [1] and [2], and mentioned in the > doc for \copy in commit 42d3125. > > There's one case that works today: when > the line is part of a multi-line quoted section, > and the data is read from a file, not from the client. > In other situations, an error is raised or the data is cut at > the point of \. without an error. > > The patch addresses that issue in the server and in psql, > except for the case of inlined data, where \. cannot be > both valid data and an EOF marker at the same time, so > it keeps treating it as an EOF marker.
I noticed that these tests are passing without applying patch too: +++ b/src/test/regress/sql/copy.sql @@ -38,6 +38,17 @@ copy copytest2 from :'filename' csv quote '''' escape E'\\'; select * from copytest except select * from copytest2; +--- test unquoted .\ as data inside CSV + +truncate copytest2; + +insert into copytest2(test) values('line1'), ('\.'), ('line2'); +copy (select test from copytest2 order by test collate "C") to :'filename' csv; +-- get the data back in with copy +truncate copytest2; +copy copytest2(test) from :'filename' csv; +select test from copytest2 order by test collate "C"; I was not sure if this was intentional. Can we add a test which fails in HEAD and passes with the patch applied. Regards, Vignesh