Re: [COMMITTERS] pgsql: Handle carriage returns and line feeds in - Mailing list pgsql-patches
From | Andrew Dunstan |
---|---|
Subject | Re: [COMMITTERS] pgsql: Handle carriage returns and line feeds in |
Date | |
Msg-id | 42338AB1.9030704@dunslane.net Whole thread Raw |
Responses |
Re: [COMMITTERS] pgsql: Handle carriage returns and line feeds in COPY
Re: [COMMITTERS] pgsql: Handle carriage returns and line feeds in COPY |
List | pgsql-patches |
Neil Conway wrote: > Bruce Momjian wrote: > >> Handle carriage returns and line feeds in COPY CSV mode. > > > Would it be possible to have some regression tests for this? will this do? cheers andrew Index: src/test/regress/input/copy.source =================================================================== RCS file: /home/cvsmirror/pgsql/src/test/regress/input/copy.source,v retrieving revision 1.10 diff -c -r1.10 copy.source *** src/test/regress/input/copy.source 27 Oct 2000 20:00:20 -0000 1.10 --- src/test/regress/input/copy.source 13 Mar 2005 00:30:11 -0000 *************** *** 54,56 **** --- 54,89 ---- COPY bt_f8_heap FROM '@abs_srcdir@/data/hash.data'; + --- test copying in CSV mode with various styles + --- of embedded line ending characters + + create temp table copytest ( + style text, + test text, + filler int); + + insert into copytest values('DOS','abc\r\ndef',1); + insert into copytest values('Unix','abc\ndef',2); + insert into copytest values('Mac','abc\rdef',3); + insert into copytest values('esc\\ape','a\\r\\\r\\\n\\nb',4); + + copy copytest to '@abs_builddir@/results/copytest.csv' csv; + + create temp table copytest2 (like copytest); + + copy copytest2 from '@abs_builddir@/results/copytest.csv' csv; + + select * from copytest except select * from copytest2; + + truncate copytest2; + + --- same test but with an escape char different from quote char + + copy copytest to '@abs_builddir@/results/copytest.csv' csv quote '\'' escape '\\'; + + copy copytest2 from '@abs_builddir@/results/copytest.csv' csv quote '\'' escape '\\'; + + select * from copytest except select * from copytest2; + + + Index: src/test/regress/output/copy.source =================================================================== RCS file: /home/cvsmirror/pgsql/src/test/regress/output/copy.source,v retrieving revision 1.8 diff -c -r1.8 copy.source *** src/test/regress/output/copy.source 27 Oct 2000 20:00:22 -0000 1.8 --- src/test/regress/output/copy.source 13 Mar 2005 00:30:11 -0000 *************** *** 31,33 **** --- 31,60 ---- COPY bt_name_heap FROM '@abs_srcdir@/data/hash.data'; COPY bt_txt_heap FROM '@abs_srcdir@/data/desc.data'; COPY bt_f8_heap FROM '@abs_srcdir@/data/hash.data'; + --- test copying in CSV mode with various styles + --- of embedded line ending characters + create temp table copytest ( + style text, + test text, + filler int); + insert into copytest values('DOS','abc\r\ndef',1); + insert into copytest values('Unix','abc\ndef',2); + insert into copytest values('Mac','abc\rdef',3); + insert into copytest values('esc\\ape','a\\r\\\r\\\n\\nb',4); + copy copytest to '@abs_builddir@/results/copytest.csv' csv; + create temp table copytest2 (like copytest); + copy copytest2 from '@abs_builddir@/results/copytest.csv' csv; + select * from copytest except select * from copytest2; + style | test | filler + -------+------+-------- + (0 rows) + + truncate copytest2; + --- same test but with an escape char different from quote char + copy copytest to '@abs_builddir@/results/copytest.csv' csv quote '\'' escape '\\'; + copy copytest2 from '@abs_builddir@/results/copytest.csv' csv quote '\'' escape '\\'; + select * from copytest except select * from copytest2; + style | test | filler + -------+------+-------- + (0 rows) +
pgsql-patches by date: