]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Add NULL regression tests.
authorBruce Momjian <bruce@momjian.us>
Fri, 10 Oct 2003 03:46:51 +0000 (03:46 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 10 Oct 2003 03:46:51 +0000 (03:46 +0000)
Manfred Koizar

src/test/regress/expected/copy2.out
src/test/regress/sql/copy2.sql

index df08fcd45a6e6c57fcdc92531a8dffc5a1093fa8..6345969a03670710cea0bc1d5fed4a311e392a62 100644 (file)
@@ -2,7 +2,7 @@ CREATE TABLE x (
        a serial,
        b int,
        c text not null default 'stuff',
-       d text not null,
+       d text,
        e text
 );
 NOTICE:  CREATE TABLE will create implicit sequence "x_a_seq" for "serial" column "x.a"
@@ -48,23 +48,38 @@ ERROR:  extra data after last expected column
 CONTEXT:  COPY x, line 1: "2002        232     40      50      60      70      80"
 -- various COPY options: delimiters, oids, NULL string
 COPY x (b, c, d, e) from stdin with oids delimiter ',' null 'x';
+COPY x from stdin WITH DELIMITER AS ';' NULL AS '';
+COPY x from stdin WITH DELIMITER AS ':' NULL AS '\\X';
 -- check results of copy in
 SELECT * FROM x;
-   a   | b  |   c   |   d    |          e           
--------+----+-------+--------+----------------------
- 10000 | 21 | 31    | 41     | before trigger fired
- 10001 | 22 | 32    | 42     | before trigger fired
- 10002 | 23 | 33    | 43     | before trigger fired
- 10003 | 24 | 34    | 44     | before trigger fired
- 10004 | 25 | 35    | 45     | before trigger fired
- 10005 | 26 | 36    | 46     | before trigger fired
-     6 |    | 45    | 80     | before trigger fired
-     1 |  1 | stuff | test_1 | after trigger fired
-     2 |  2 | stuff | test_2 | after trigger fired
-     3 |  3 | stuff | test_3 | after trigger fired
-     4 |  4 | stuff | test_4 | after trigger fired
-     5 |  5 | stuff | test_5 | after trigger fired
-(12 rows)
+   a   | b  |     c      |   d    |          e           
+-------+----+------------+--------+----------------------
+  9999 |    | \N         | NN     | before trigger fired
+ 10000 | 21 | 31         | 41     | before trigger fired
+ 10001 | 22 | 32         | 42     | before trigger fired
+ 10002 | 23 | 33         | 43     | before trigger fired
+ 10003 | 24 | 34         | 44     | before trigger fired
+ 10004 | 25 | 35         | 45     | before trigger fired
+ 10005 | 26 | 36         | 46     | before trigger fired
+     6 |    | 45         | 80     | before trigger fired
+     7 |    | x          | \x     | before trigger fired
+     8 |    | ,          | \,     | before trigger fired
+  3000 |    | c          |        | before trigger fired
+  4000 |    | C          |        | before trigger fired
+  4001 |  1 | empty      |        | before trigger fired
+  4002 |  2 | null       |        | before trigger fired
+  4003 |  3 | Backslash  | \      | before trigger fired
+  4004 |  4 | BackslashX | \X     | before trigger fired
+  4005 |  5 | N          | N      | before trigger fired
+  4006 |  6 | BackslashN | \N     | before trigger fired
+  4007 |  7 | XX         | XX     | before trigger fired
+  4008 |  8 | Delimiter  | :      | before trigger fired
+     1 |  1 | stuff      | test_1 | after trigger fired
+     2 |  2 | stuff      | test_2 | after trigger fired
+     3 |  3 | stuff      | test_3 | after trigger fired
+     4 |  4 | stuff      | test_4 | after trigger fired
+     5 |  5 | stuff      | test_5 | after trigger fired
+(25 rows)
 
 -- COPY w/ oids on a table w/o oids should fail
 CREATE TABLE no_oids (
@@ -80,6 +95,7 @@ COPY no_oids TO stdout WITH OIDS;
 ERROR:  table "no_oids" does not have OIDs
 -- check copy out
 COPY x TO stdout;
+9999   \N      \\N     NN      before trigger fired
 10000  21      31      41      before trigger fired
 10001  22      32      42      before trigger fired
 10002  23      33      43      before trigger fired
@@ -87,12 +103,25 @@ COPY x TO stdout;
 10004  25      35      45      before trigger fired
 10005  26      36      46      before trigger fired
 6      \N      45      80      before trigger fired
+7      \N      x       \\x     before trigger fired
+8      \N      ,       \\,     before trigger fired
+3000   \N      c       \N      before trigger fired
+4000   \N      C       \N      before trigger fired
+4001   1       empty           before trigger fired
+4002   2       null    \N      before trigger fired
+4003   3       Backslash       \\      before trigger fired
+4004   4       BackslashX      \\X     before trigger fired
+4005   5       N       N       before trigger fired
+4006   6       BackslashN      \\N     before trigger fired
+4007   7       XX      XX      before trigger fired
+4008   8       Delimiter       :       before trigger fired
 1      1       stuff   test_1  after trigger fired
 2      2       stuff   test_2  after trigger fired
 3      3       stuff   test_3  after trigger fired
 4      4       stuff   test_4  after trigger fired
 5      5       stuff   test_5  after trigger fired
 COPY x (c, e) TO stdout;
+\\N    before trigger fired
 31     before trigger fired
 32     before trigger fired
 33     before trigger fired
@@ -100,12 +129,25 @@ COPY x (c, e) TO stdout;
 35     before trigger fired
 36     before trigger fired
 45     before trigger fired
+x      before trigger fired
+,      before trigger fired
+c      before trigger fired
+C      before trigger fired
+empty  before trigger fired
+null   before trigger fired
+Backslash      before trigger fired
+BackslashX     before trigger fired
+N      before trigger fired
+BackslashN     before trigger fired
+XX     before trigger fired
+Delimiter      before trigger fired
 stuff  after trigger fired
 stuff  after trigger fired
 stuff  after trigger fired
 stuff  after trigger fired
 stuff  after trigger fired
 COPY x (b, e) TO stdout WITH NULL 'I''m null';
+I'm null       before trigger fired
 21     before trigger fired
 22     before trigger fired
 23     before trigger fired
@@ -113,6 +155,18 @@ COPY x (b, e) TO stdout WITH NULL 'I''m null';
 25     before trigger fired
 26     before trigger fired
 I'm null       before trigger fired
+I'm null       before trigger fired
+I'm null       before trigger fired
+I'm null       before trigger fired
+I'm null       before trigger fired
+1      before trigger fired
+2      before trigger fired
+3      before trigger fired
+4      before trigger fired
+5      before trigger fired
+6      before trigger fired
+7      before trigger fired
+8      before trigger fired
 1      after trigger fired
 2      after trigger fired
 3      after trigger fired
index 72c52dba11363f0a4cc6df255b24a03075be0855..52d8f563e3dfae93b5befcb7570e75ef99ac9f24 100644 (file)
@@ -2,7 +2,7 @@ CREATE TABLE x (
        a serial,
        b int,
        c text not null default 'stuff',
-       d text not null,
+       d text,
        e text
 );
 
@@ -27,6 +27,7 @@ CREATE TRIGGER trg_x_before BEFORE INSERT ON x
 FOR EACH ROW EXECUTE PROCEDURE fn_x_before();
 
 COPY x (a, b, c, d, e) from stdin;
+9999   \N      \\N     \NN     \N
 10000  21      31      41      51
 \.
 
@@ -74,6 +75,24 @@ COPY x from stdin;
 -- various COPY options: delimiters, oids, NULL string
 COPY x (b, c, d, e) from stdin with oids delimiter ',' null 'x';
 500000,x,45,80,90
+500001,x,\x,\\x,\\\x
+500002,x,\,,\\\,,\\
+\.
+
+COPY x from stdin WITH DELIMITER AS ';' NULL AS '';
+3000;;c;;
+\.
+
+COPY x from stdin WITH DELIMITER AS ':' NULL AS '\\X';
+4000:\X:C:\X:\X
+4001:1:empty::
+4002:2:null:\X:\X
+4003:3:Backslash:\\:\\
+4004:4:BackslashX:\\X:\\X
+4005:5:N:\N:\N
+4006:6:BackslashN:\\N:\\N
+4007:7:XX:\XX:\XX
+4008:8:Delimiter:\::\:
 \.
 
 -- check results of copy in