diff options
| author | Michael Paquier | 2024-10-16 23:45:56 +0000 |
|---|---|---|
| committer | Michael Paquier | 2024-10-16 23:45:56 +0000 |
| commit | c06a4746b1be841dee998a75f9a52b2d06348ca7 (patch) | |
| tree | 30718279efc060d4b552a8457e2787b330552c8c /src/test | |
| parent | a30c1ca21c584cb0917a5e6fbe086164cd8bec6a (diff) | |
Fix validation of COPY FORCE_NOT_NULL/FORCE_NULL for the all-column cases
This commit adds missing checks for COPY FORCE_NOT_NULL and FORCE_NULL
when applied to all columns via "*". These options now correctly
require CSV mode and are disallowed in COPY TO, making their behavior
consistent with FORCE_QUOTE.
Some regression tests are added to verify the correct behavior for the
all-columns case, including FORCE_QUOTE, which was not tested.
Backpatch down to 17, where support for the all-column grammar with
FORCE_NOT_NULL and FORCE_NULL has been added.
Author: Joel Jacobson
Reviewed-by: Zhang Mingli
Discussion: https://postgr.es/m/65030d1d-5f90-4fa4-92eb-f5f50389858e@app.fastmail.com
Backpatch-through: 17
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/copy2.out | 12 | ||||
| -rw-r--r-- | src/test/regress/sql/copy2.sql | 6 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out index 94063b5f141..695b1b2d635 100644 --- a/src/test/regress/expected/copy2.out +++ b/src/test/regress/expected/copy2.out @@ -98,16 +98,28 @@ LINE 1: COPY x from stdin (on_error unsupported); ^ COPY x from stdin (format TEXT, force_quote(a)); ERROR: COPY FORCE_QUOTE requires CSV mode +COPY x from stdin (format TEXT, force_quote *); +ERROR: COPY FORCE_QUOTE requires CSV mode COPY x from stdin (format CSV, force_quote(a)); ERROR: COPY FORCE_QUOTE cannot be used with COPY FROM +COPY x from stdin (format CSV, force_quote *); +ERROR: COPY FORCE_QUOTE cannot be used with COPY FROM COPY x from stdin (format TEXT, force_not_null(a)); ERROR: COPY FORCE_NOT_NULL requires CSV mode +COPY x from stdin (format TEXT, force_not_null *); +ERROR: COPY FORCE_NOT_NULL requires CSV mode COPY x to stdout (format CSV, force_not_null(a)); ERROR: COPY FORCE_NOT_NULL cannot be used with COPY TO +COPY x to stdout (format CSV, force_not_null *); +ERROR: COPY FORCE_NOT_NULL cannot be used with COPY TO COPY x from stdin (format TEXT, force_null(a)); ERROR: COPY FORCE_NULL requires CSV mode +COPY x from stdin (format TEXT, force_null *); +ERROR: COPY FORCE_NULL requires CSV mode COPY x to stdout (format CSV, force_null(a)); ERROR: COPY FORCE_NULL cannot be used with COPY TO +COPY x to stdout (format CSV, force_null *); +ERROR: COPY FORCE_NULL cannot be used with COPY TO COPY x to stdout (format BINARY, on_error unsupported); ERROR: COPY ON_ERROR cannot be used with COPY TO LINE 1: COPY x to stdout (format BINARY, on_error unsupported); diff --git a/src/test/regress/sql/copy2.sql b/src/test/regress/sql/copy2.sql index 8687e4e4cab..6b75b6c7ea8 100644 --- a/src/test/regress/sql/copy2.sql +++ b/src/test/regress/sql/copy2.sql @@ -75,11 +75,17 @@ COPY x from stdin (format BINARY, null 'x'); COPY x from stdin (format BINARY, on_error ignore); COPY x from stdin (on_error unsupported); COPY x from stdin (format TEXT, force_quote(a)); +COPY x from stdin (format TEXT, force_quote *); COPY x from stdin (format CSV, force_quote(a)); +COPY x from stdin (format CSV, force_quote *); COPY x from stdin (format TEXT, force_not_null(a)); +COPY x from stdin (format TEXT, force_not_null *); COPY x to stdout (format CSV, force_not_null(a)); +COPY x to stdout (format CSV, force_not_null *); COPY x from stdin (format TEXT, force_null(a)); +COPY x from stdin (format TEXT, force_null *); COPY x to stdout (format CSV, force_null(a)); +COPY x to stdout (format CSV, force_null *); COPY x to stdout (format BINARY, on_error unsupported); COPY x from stdin (log_verbosity unsupported); |
