From: Michael Paquier Date: Wed, 2 Nov 2022 00:57:54 +0000 (+0900) Subject: Add more tests for COPY with incorrect option combinations X-Git-Tag: REL_16_BETA1~1398 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=451d1164b9d0cce6acd0b3d0790f09db4c56be0a;p=postgresql.git Add more tests for COPY with incorrect option combinations 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/Y2DNm9u7hzIxCXHn@paquier.xyz --- diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out index 5f3685e9efe..090ef6c7a8c 100644 --- a/src/test/regress/expected/copy2.out +++ b/src/test/regress/expected/copy2.out @@ -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 diff --git a/src/test/regress/sql/copy2.sql b/src/test/regress/sql/copy2.sql index b3c16af48ee..b0de82c3aa9 100644 --- a/src/test/regress/sql/copy2.sql +++ b/src/test/regress/sql/copy2.sql @@ -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;