diff options
author | Amit Langote <amitlan@postgresql.org> | 2024-06-28 13:59:57 +0900 |
---|---|---|
committer | Amit Langote <amitlan@postgresql.org> | 2024-06-28 14:01:43 +0900 |
commit | 55e56c84da99fe7becda2194563f48bb3083c2d1 (patch) | |
tree | 6084cedc60bb73dcbb8e3fedbb9bb0cc81e84eab /src/test/regress/sql/sqljson_jsontable.sql | |
parent | e3c1393efc31ac70de7b68e9a283ec3f2d7f9bd2 (diff) | |
download | postgresql-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_jsontable.sql')
-rw-r--r-- | src/test/regress/sql/sqljson_jsontable.sql | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/test/regress/sql/sqljson_jsontable.sql b/src/test/regress/sql/sqljson_jsontable.sql index bda57981481..f1d99a8a736 100644 --- a/src/test/regress/sql/sqljson_jsontable.sql +++ b/src/test/regress/sql/sqljson_jsontable.sql @@ -521,3 +521,10 @@ DROP TABLE s; -- Prevent ON EMPTY specification on EXISTS columns SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int exists empty object on empty)); + +-- Test ON ERROR / EMPTY value validity for the function and column types; +-- all fail +SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int) NULL ON ERROR); +SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int true on empty)); +SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int omit quotes true on error)); +SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int exists empty object on error)); |