Add more tests for COPY with incorrect option combinations
authorMichael Paquier <[email protected]>
Wed, 2 Nov 2022 00:57:54 +0000 (09:57 +0900)
committerMichael Paquier <[email protected]>
Wed, 2 Nov 2022 00:57:54 +0000 (09:57 +0900)
Based on the existing coverage report, some combinations were not
checked at all, so add some tests to do so.  Spotted while looking at
the area.

Discussion: https://postgr.es/m/[email protected]

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

index 5f3685e9efe5270d1f330c4c31d991d70ed8a2eb..090ef6c7a8c9c3c5069e3d2edb9b757108baaa97 100644 (file)
@@ -77,6 +77,23 @@ COPY x from stdin (encoding 'sql_ascii', encoding 'sql_ascii');
 ERROR:  conflicting or redundant options
 LINE 1: COPY x from stdin (encoding 'sql_ascii', encoding 'sql_ascii...
                                                  ^
+-- incorrect options
+COPY x to stdin (format BINARY, delimiter ',');
+ERROR:  cannot specify DELIMITER in BINARY mode
+COPY x to stdin (format BINARY, null 'x');
+ERROR:  cannot specify NULL in BINARY mode
+COPY x to stdin (format TEXT, force_quote(a));
+ERROR:  COPY force quote available only in CSV mode
+COPY x from stdin (format CSV, force_quote(a));
+ERROR:  COPY force quote only available using COPY TO
+COPY x to stdout (format TEXT, force_not_null(a));
+ERROR:  COPY force not null available only in CSV mode
+COPY x to stdin (format CSV, force_not_null(a));
+ERROR:  COPY force not null only available using COPY FROM
+COPY x to stdout (format TEXT, force_null(a));
+ERROR:  COPY force null available only in CSV mode
+COPY x to stdin (format CSV, force_null(a));
+ERROR:  COPY force null only available using COPY FROM
 -- too many columns in column list: should fail
 COPY x (a, b, c, d, e, d, c) from stdin;
 ERROR:  column "d" specified more than once
index b3c16af48eec8503901263c61843ff2a43421c82..b0de82c3aa92964ad70dae81a41d424a2767a12f 100644 (file)
@@ -67,6 +67,16 @@ COPY x from stdin (force_null (a), force_null (b));
 COPY x from stdin (convert_selectively (a), convert_selectively (b));
 COPY x from stdin (encoding 'sql_ascii', encoding 'sql_ascii');
 
+-- incorrect options
+COPY x to stdin (format BINARY, delimiter ',');
+COPY x to stdin (format BINARY, null 'x');
+COPY x to stdin (format TEXT, force_quote(a));
+COPY x from stdin (format CSV, force_quote(a));
+COPY x to stdout (format TEXT, force_not_null(a));
+COPY x to stdin (format CSV, force_not_null(a));
+COPY x to stdout (format TEXT, force_null(a));
+COPY x to stdin (format CSV, force_null(a));
+
 -- too many columns in column list: should fail
 COPY x (a, b, c, d, e, d, c) from stdin;