Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions src/grammar/flink/FlinkSqlParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -738,6 +738,15 @@ predicate
| KW_IS KW_JSON (KW_VALUE | KW_ARRAY | identifier)?
;

jsonFunctionBranch
: KW_NULL
| KW_EMPTY KW_ARRAY
| KW_EMPTY uid
| KW_TRUE
| KW_FALSE
| KW_UNKNOWN
;

likePredicate
: KW_NOT? kind=KW_LIKE quantifier=(KW_ANY | KW_ALL) (
LR_BRACKET RR_BRACKET
Expand Down Expand Up @@ -825,6 +834,36 @@ functionParam
| timeIntervalUnit
| timePointUnit
| expression
| jsonValueParams
| jsonQueryParams
| jsonObjectParams
| jsonArrayParams
;

jsonValueParams
: columnNamePath (uid columnType)? (
(uid | KW_NULL | KW_DEFAULT valueExpression) KW_ON KW_EMPTY
)? ((uid | KW_NULL | KW_DEFAULT valueExpression) KW_ON uid)?
;

jsonQueryParams
: columnNamePath ((KW_WITHOUT | KW_WITH uid?) KW_ARRAY? uid)? (
jsonFunctionBranch KW_ON KW_EMPTY
)? (jsonFunctionBranch KW_ON uid)?
;

// JSON 函数只能在 JSON_OBJECT 函数中使用
jsonObjectParams
: (
KW_KEY? columnNamePath KW_VALUE? (
valueExpression
| KW_JSON LR_BRACKET (valueExpression)* RR_BRACKET
)
)* ((KW_NULL | uid) KW_ON KW_NULL)?
;

jsonArrayParams
: valueExpression* ((KW_NULL | uid) KW_ON KW_NULL)?
;

dereferenceDefinition
Expand Down
7 changes: 6 additions & 1 deletion src/lib/flink/FlinkSqlParser.interp

Large diffs are not rendered by default.

Loading