aboutsummaryrefslogtreecommitdiff
path: root/src/test/regress/sql/sqljson_queryfuncs.sql
diff options
context:
space:
mode:
authorAmit Langote <amitlan@postgresql.org>2024-06-28 13:59:57 +0900
committerAmit Langote <amitlan@postgresql.org>2024-06-28 14:01:43 +0900
commit55e56c84da99fe7becda2194563f48bb3083c2d1 (patch)
tree6084cedc60bb73dcbb8e3fedbb9bb0cc81e84eab /src/test/regress/sql/sqljson_queryfuncs.sql
parente3c1393efc31ac70de7b68e9a283ec3f2d7f9bd2 (diff)
downloadpostgresql-55e56c84da99fe7becda2194563f48bb3083c2d1.tar.gz
postgresql-55e56c84da99fe7becda2194563f48bb3083c2d1.zip
SQL/JSON: Validate values in ON ERROR/EMPTY clauses
Currently, the grammar allows any supported values in the ON ERROR and ON EMPTY clauses for SQL/JSON functions, regardless of whether the values are appropriate for the function. This commit ensures that during parse analysis, the provided value is checked for validity for the given function and throws a syntax error if it is not. While at it, this fixes some omissions in the documentation of the ON ERROR/EMPTY clauses for JSON_TABLE(). Reported-by: Jian He <jian.universality@gmail.com> Reviewed-by: Jian He <jian.universality@gmail.com> Discussion: https://postgr.es/m/CACJufxFgWGqpESSYzyJ6tSurr3vFYBSNEmCfkGyB_dMdptFnZQ%40mail.gmail.com
Diffstat (limited to 'src/test/regress/sql/sqljson_queryfuncs.sql')
-rw-r--r--src/test/regress/sql/sqljson_queryfuncs.sql5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/test/regress/sql/sqljson_queryfuncs.sql b/src/test/regress/sql/sqljson_queryfuncs.sql
index dc6380141b8..4586fdb8a4e 100644
--- a/src/test/regress/sql/sqljson_queryfuncs.sql
+++ b/src/test/regress/sql/sqljson_queryfuncs.sql
@@ -459,3 +459,8 @@ SELECT json_value('"aaa"', path RETURNING json) FROM jsonpaths;
SELECT JSON_QUERY(jsonb 'null', '$xyz' PASSING 1 AS xy);
SELECT JSON_QUERY(jsonb 'null', '$xy' PASSING 1 AS xyz);
SELECT JSON_QUERY(jsonb 'null', '$xyz' PASSING 1 AS xyz);
+
+-- Test ON ERROR / EMPTY value validity for the function; all fail.
+SELECT JSON_EXISTS(jsonb '1', '$' DEFAULT 1 ON ERROR);
+SELECT JSON_VALUE(jsonb '1', '$' EMPTY ON ERROR);
+SELECT JSON_QUERY(jsonb '1', '$' TRUE ON ERROR);