mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
SQL/JSON: Prevent ON EMPTY for EXISTS columns in JSON_TABLE()
Due to an oversight in de3600452b
, the ON EMPTY clause was
incorrectly allowed in the EXISTS column. Fix the grammar to prevent
this.
Discussion: https://postgr.es/m/CA%2BHiwqHh3YDXTpccgAo4CdfV9Mhy%2Bmg%3Doh6t8rfM5uLW1BJN4g%40mail.gmail.com
This commit is contained in:
@ -14265,7 +14265,7 @@ json_table_column_definition:
|
|||||||
}
|
}
|
||||||
| ColId Typename
|
| ColId Typename
|
||||||
EXISTS json_table_column_path_clause_opt
|
EXISTS json_table_column_path_clause_opt
|
||||||
json_behavior_clause_opt
|
json_on_error_clause_opt
|
||||||
{
|
{
|
||||||
JsonTableColumn *n = makeNode(JsonTableColumn);
|
JsonTableColumn *n = makeNode(JsonTableColumn);
|
||||||
|
|
||||||
@ -14276,8 +14276,8 @@ json_table_column_definition:
|
|||||||
n->wrapper = JSW_NONE;
|
n->wrapper = JSW_NONE;
|
||||||
n->quotes = JS_QUOTES_UNSPEC;
|
n->quotes = JS_QUOTES_UNSPEC;
|
||||||
n->pathspec = (JsonTablePathSpec *) $4;
|
n->pathspec = (JsonTablePathSpec *) $4;
|
||||||
n->on_empty = (JsonBehavior *) linitial($5);
|
n->on_empty = NULL;
|
||||||
n->on_error = (JsonBehavior *) lsecond($5);
|
n->on_error = (JsonBehavior *) $5;
|
||||||
n->location = @1;
|
n->location = @1;
|
||||||
$$ = (Node *) n;
|
$$ = (Node *) n;
|
||||||
}
|
}
|
||||||
|
@ -1067,3 +1067,8 @@ CREATE OR REPLACE VIEW public.jsonb_table_view7 AS
|
|||||||
) sub
|
) sub
|
||||||
DROP VIEW jsonb_table_view7;
|
DROP VIEW jsonb_table_view7;
|
||||||
DROP TABLE s;
|
DROP TABLE s;
|
||||||
|
-- Prevent ON EMPTY specification on EXISTS columns
|
||||||
|
SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int exists empty object on empty));
|
||||||
|
ERROR: syntax error at or near "empty"
|
||||||
|
LINE 1: ...sonb '1', '$' COLUMNS (a int exists empty object on empty));
|
||||||
|
^
|
||||||
|
@ -518,3 +518,6 @@ SELECT sub.* FROM s,
|
|||||||
\sv jsonb_table_view7
|
\sv jsonb_table_view7
|
||||||
DROP VIEW jsonb_table_view7;
|
DROP VIEW jsonb_table_view7;
|
||||||
DROP TABLE s;
|
DROP TABLE s;
|
||||||
|
|
||||||
|
-- Prevent ON EMPTY specification on EXISTS columns
|
||||||
|
SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int exists empty object on empty));
|
||||||
|
Reference in New Issue
Block a user