summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2025-09-03 08:33:54 +0900
committerFujii Masao <fujii@postgresql.org>2025-09-03 08:35:55 +0900
commit229911c4bf9a4acfb2b81cff148fd8391e0a577b (patch)
tree427b912fcd752371409c67f515b3db87f1e0ed82 /src
parent510777a2d56b5de5f55d3e995c0d0242eb630eb1 (diff)
Add HINT for COPY TO when WHERE clause is used.
COPY TO does not support a WHERE clause, and currently fails with the error: ERROR: WHERE clause not allowed with COPY TO Since the intended behavior can be achieved by using COPY (SELECT ... WHERE ...) TO, this commit adds a HINT to the error message: HINT: Try the COPY (SELECT ... WHERE ...) TO variant. This makes the error more informative and helps users quickly find the alternative usage. Author: Atsushi Torikoshi <torikoshia@oss.nttdata.com> Reviewed-by: Jim Jones <jim.jones@uni-muenster.de> Discussion: https://postgr.es/m/3520c224c5ffac0113aef84a9179f37e@oss.nttdata.com
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/gram.y1
-rw-r--r--src/test/regress/expected/copy2.out1
2 files changed, 2 insertions, 0 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index db43034b9db..9fd48acb1f8 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -3442,6 +3442,7 @@ CopyStmt: COPY opt_binary qualified_name opt_column_list
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg("WHERE clause not allowed with COPY TO"),
+ errhint("Try the COPY (SELECT ... WHERE ...) TO variant."),
parser_errposition(@11)));
n->options = NIL;
diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out
index caa3c44f0d0..f3fdce23459 100644
--- a/src/test/regress/expected/copy2.out
+++ b/src/test/regress/expected/copy2.out
@@ -163,6 +163,7 @@ COPY x TO stdout WHERE a = 1;
ERROR: WHERE clause not allowed with COPY TO
LINE 1: COPY x TO stdout WHERE a = 1;
^
+HINT: Try the COPY (SELECT ... WHERE ...) TO variant.
COPY x from stdin WHERE a = 50004;
COPY x from stdin WHERE a > 60003;
COPY x from stdin WHERE f > 60003;