On Tue, 19 Dec 2023 at 16:57, Daniel Verite <dan...@manitou-mail.org> wrote: > > vignesh C wrote: > > > I noticed that these tests are passing without applying patch too: > > > +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. > > Thanks for checking this out. > Indeed, that was not intentional. I've been using static files > in my tests and forgot that if the data was produced with > COPY OUT, it would quote backslash-dot so that COPY IN could > reload it without problem. > > PFA an updated version that uses \qecho to produce the > data instead of COPY OUT. This test on unpatched HEAD > shows that copytest2 is missing 2 rows after COPY IN.
Thanks for the updated patch, any reason why this is handled only in csv. postgres=# copy test1 from '/home/vignesh/postgres/inst/bin/copy1.out'; COPY 1 postgres=# select * from test1; c1 ------- line1 (1 row) postgres=# copy test1 from '/home/vignesh/postgres/inst/bin/copy1.out' csv; COPY 1 postgres=# select * from test1; c1 ------- line1 \. line2 (3 rows) As the documentation at [1] says: An end-of-data marker is not necessary when reading from a file, since the end of file serves perfectly well; it is needed only when copying data to or from client applications using pre-3.0 client protocol. [1] - https://www.postgresql.org/docs/devel/sql-copy.html Regards, Vignesh