Add tests for more row patterns with COPY FROM .. (ON_ERROR ignore)
authorMichael Paquier <[email protected]>
Wed, 13 Mar 2024 05:19:21 +0000 (14:19 +0900)
committerMichael Paquier <[email protected]>
Wed, 13 Mar 2024 05:19:21 +0000 (14:19 +0900)
While digging into the code of this feature, I got confused by the fact
that a line is skipped when a value cannot be converted to its expected
attribute even if the line has fewer attributes than the target
relation.  The tests had a check for the case of an empty line, this
commit a couple more patterns where a line is incomplete, but skipped
because of a conversion error.

Reviewed-by: Bharath Rupireddy
Discussion: https://postgr.es/m/[email protected]

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

index 25c401ce3443c1dfd6f8128df6a70d1ea9120d2c..f98c2d1c4ebda1c6d20f5528e39018c44e6215c3 100644 (file)
@@ -730,13 +730,14 @@ COPY check_ign_err FROM STDIN WITH (on_error stop);
 ERROR:  invalid input syntax for type integer: "a"
 CONTEXT:  COPY check_ign_err, line 2, column n: "a"
 COPY check_ign_err FROM STDIN WITH (on_error ignore);
-NOTICE:  4 rows were skipped due to data type incompatibility
+NOTICE:  6 rows were skipped due to data type incompatibility
 SELECT * FROM check_ign_err;
  n |  m  | k 
 ---+-----+---
  1 | {1} | 1
  5 | {5} | 5
-(2 rows)
+ 8 | {8} | 8
+(3 rows)
 
 -- test datatype error that can't be handled as soft: should fail
 CREATE TABLE hard_err(foo widget);
index b5e549e8563ea70e88bcd8992b0147d7252ec39e..afaaa37e52e8a2f0936be70018eae82ef661494c 100644 (file)
@@ -515,6 +515,9 @@ a   {2} 2
 4  {a, 4}  4
 
 5  {5} 5
+6  a
+7  {7} a
+8  {8} 8
 \.
 SELECT * FROM check_ign_err;