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)
+