Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e3c1393

Browse filesBrowse files
committed
SQL/JSON: Prevent ON EMPTY for EXISTS columns in JSON_TABLE()
Due to an oversight in de36004, 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
1 parent 0ad8153 commit e3c1393
Copy full SHA for e3c1393

File tree

Expand file treeCollapse file tree

3 files changed

+11
-3
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+11
-3
lines changed

‎src/backend/parser/gram.y

Copy file name to clipboardExpand all lines: src/backend/parser/gram.y
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14265,7 +14265,7 @@ json_table_column_definition:
1426514265
}
1426614266
| ColId Typename
1426714267
EXISTS json_table_column_path_clause_opt
14268-
json_behavior_clause_opt
14268+
json_on_error_clause_opt
1426914269
{
1427014270
JsonTableColumn *n = makeNode(JsonTableColumn);
1427114271

@@ -14276,8 +14276,8 @@ json_table_column_definition:
1427614276
n->wrapper = JSW_NONE;
1427714277
n->quotes = JS_QUOTES_UNSPEC;
1427814278
n->pathspec = (JsonTablePathSpec *) $4;
14279-
n->on_empty = (JsonBehavior *) linitial($5);
14280-
n->on_error = (JsonBehavior *) lsecond($5);
14279+
n->on_empty = NULL;
14280+
n->on_error = (JsonBehavior *) $5;
1428114281
n->location = @1;
1428214282
$$ = (Node *) n;
1428314283
}

‎src/test/regress/expected/sqljson_jsontable.out

Copy file name to clipboardExpand all lines: src/test/regress/expected/sqljson_jsontable.out
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,3 +1067,8 @@ CREATE OR REPLACE VIEW public.jsonb_table_view7 AS
10671067
) sub
10681068
DROP VIEW jsonb_table_view7;
10691069
DROP TABLE s;
1070+
-- Prevent ON EMPTY specification on EXISTS columns
1071+
SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int exists empty object on empty));
1072+
ERROR: syntax error at or near "empty"
1073+
LINE 1: ...sonb '1', '$' COLUMNS (a int exists empty object on empty));
1074+
^

‎src/test/regress/sql/sqljson_jsontable.sql

Copy file name to clipboardExpand all lines: src/test/regress/sql/sqljson_jsontable.sql
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,3 +518,6 @@ SELECT sub.* FROM s,
518518
\sv jsonb_table_view7
519519
DROP VIEW jsonb_table_view7;
520520
DROP TABLE s;
521+
522+
-- Prevent ON EMPTY specification on EXISTS columns
523+
SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int exists empty object on empty));

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.