You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tw...@apache.org on 2021/05/19 12:31:12 UTC
[flink] branch release-1.13 updated: [hotfix][docs] Update SQL
grammar for WITH and sub queries
This is an automated email from the ASF dual-hosted git repository.
twalthr pushed a commit to branch release-1.13
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/release-1.13 by this push:
new d7c5f89 [hotfix][docs] Update SQL grammar for WITH and sub queries
d7c5f89 is described below
commit d7c5f89a857e0b204e774fb7f3917f2782045d4e
Author: Timo Walther <tw...@apache.org>
AuthorDate: Wed May 19 14:25:27 2021 +0200
[hotfix][docs] Update SQL grammar for WITH and sub queries
---
.../docs/dev/table/sql/queries/overview.md | 116 +++++++++++----------
.../content/docs/dev/table/sql/queries/overview.md | 116 +++++++++++----------
2 files changed, 122 insertions(+), 110 deletions(-)
diff --git a/docs/content.zh/docs/dev/table/sql/queries/overview.md b/docs/content.zh/docs/dev/table/sql/queries/overview.md
index 6cc22ea..649adcd 100644
--- a/docs/content.zh/docs/dev/table/sql/queries/overview.md
+++ b/docs/content.zh/docs/dev/table/sql/queries/overview.md
@@ -246,9 +246,10 @@ The following BNF-grammar describes the superset of supported SQL features in ba
{{< expand Grammar >}}
```sql
query:
- values
+ values
+ | WITH withItem [ , withItem ]* query
| {
- select
+ select
| selectWithoutFrom
| query UNION [ ALL ] query
| query EXCEPT query
@@ -259,64 +260,70 @@ query:
[ OFFSET start { ROW | ROWS } ]
[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY]
+withItem:
+ name
+ [ '(' column [, column ]* ')' ]
+ AS '(' query ')'
+
orderItem:
- expression [ ASC | DESC ]
+ expression [ ASC | DESC ]
select:
- SELECT [ ALL | DISTINCT ]
- { * | projectItem [, projectItem ]* }
- FROM tableExpression
- [ WHERE booleanExpression ]
- [ GROUP BY { groupItem [, groupItem ]* } ]
- [ HAVING booleanExpression ]
- [ WINDOW windowName AS windowSpec [, windowName AS windowSpec ]* ]
+ SELECT [ ALL | DISTINCT ]
+ { * | projectItem [, projectItem ]* }
+ FROM tableExpression
+ [ WHERE booleanExpression ]
+ [ GROUP BY { groupItem [, groupItem ]* } ]
+ [ HAVING booleanExpression ]
+ [ WINDOW windowName AS windowSpec [, windowName AS windowSpec ]* ]
selectWithoutFrom:
- SELECT [ ALL | DISTINCT ]
- { * | projectItem [, projectItem ]* }
+ SELECT [ ALL | DISTINCT ]
+ { * | projectItem [, projectItem ]* }
projectItem:
- expression [ [ AS ] columnAlias ]
+ expression [ [ AS ] columnAlias ]
| tableAlias . *
tableExpression:
- tableReference [, tableReference ]*
+ tableReference [, tableReference ]*
| tableExpression [ NATURAL ] [ LEFT | RIGHT | FULL ] JOIN tableExpression [ joinCondition ]
joinCondition:
- ON booleanExpression
+ ON booleanExpression
| USING '(' column [, column ]* ')'
tableReference:
- tablePrimary
- [ matchRecognize ]
- [ [ AS ] alias [ '(' columnAlias [, columnAlias ]* ')' ] ]
+ tablePrimary
+ [ matchRecognize ]
+ [ [ AS ] alias [ '(' columnAlias [, columnAlias ]* ')' ] ]
tablePrimary:
- [ TABLE ] tablePath [ dynamicTableOptions ] [systemTimePeriod] [[AS] correlationName]
+ [ TABLE ] tablePath [ dynamicTableOptions ] [systemTimePeriod] [[AS] correlationName]
| LATERAL TABLE '(' functionName '(' expression [, expression ]* ')' ')'
+ | [ LATERAL ] '(' query ')'
| UNNEST '(' expression ')'
tablePath:
- [ [ catalogName . ] schemaName . ] tableName
+ [ [ catalogName . ] databaseName . ] tableName
systemTimePeriod:
- FOR SYSTEM_TIME AS OF dateTimeExpression
+ FOR SYSTEM_TIME AS OF dateTimeExpression
dynamicTableOptions:
- /*+ OPTIONS(key=val [, key=val]*) */
+ /*+ OPTIONS(key=val [, key=val]*) */
key:
- stringLiteral
+ stringLiteral
val:
- stringLiteral
+ stringLiteral
values:
- VALUES expression [, expression ]*
+ VALUES expression [, expression ]*
groupItem:
- expression
+ expression
| '(' ')'
| '(' expression [, expression ]* ')'
| CUBE '(' expression [, expression ]* ')'
@@ -339,45 +346,44 @@ windowSpec:
')'
matchRecognize:
- MATCH_RECOGNIZE '('
- [ PARTITION BY expression [, expression ]* ]
- [ ORDER BY orderItem [, orderItem ]* ]
- [ MEASURES measureColumn [, measureColumn ]* ]
- [ ONE ROW PER MATCH ]
- [ AFTER MATCH
- ( SKIP TO NEXT ROW
- | SKIP PAST LAST ROW
- | SKIP TO FIRST variable
- | SKIP TO LAST variable
- | SKIP TO variable )
- ]
- PATTERN '(' pattern ')'
- [ WITHIN intervalLiteral ]
- DEFINE variable AS condition [, variable AS condition ]*
- ')'
+ MATCH_RECOGNIZE '('
+ [ PARTITION BY expression [, expression ]* ]
+ [ ORDER BY orderItem [, orderItem ]* ]
+ [ MEASURES measureColumn [, measureColumn ]* ]
+ [ ONE ROW PER MATCH ]
+ [ AFTER MATCH
+ ( SKIP TO NEXT ROW
+ | SKIP PAST LAST ROW
+ | SKIP TO FIRST variable
+ | SKIP TO LAST variable
+ | SKIP TO variable )
+ ]
+ PATTERN '(' pattern ')'
+ [ WITHIN intervalLiteral ]
+ DEFINE variable AS condition [, variable AS condition ]*
+ ')'
measureColumn:
- expression AS alias
+ expression AS alias
pattern:
- patternTerm [ '|' patternTerm ]*
+ patternTerm [ '|' patternTerm ]*
patternTerm:
- patternFactor [ patternFactor ]*
+ patternFactor [ patternFactor ]*
patternFactor:
- variable [ patternQuantifier ]
+ variable [ patternQuantifier ]
patternQuantifier:
- '*'
- | '*?'
- | '+'
- | '+?'
- | '?'
- | '??'
- | '{' { [ minRepeat ], [ maxRepeat ] } '}' ['?']
- | '{' repeat '}'
-
+ '*'
+ | '*?'
+ | '+'
+ | '+?'
+ | '?'
+ | '??'
+ | '{' { [ minRepeat ], [ maxRepeat ] } '}' ['?']
+ | '{' repeat '}'
```
{{< /expand >}}
diff --git a/docs/content/docs/dev/table/sql/queries/overview.md b/docs/content/docs/dev/table/sql/queries/overview.md
index da0c054..3d8b179 100644
--- a/docs/content/docs/dev/table/sql/queries/overview.md
+++ b/docs/content/docs/dev/table/sql/queries/overview.md
@@ -246,9 +246,10 @@ The following BNF-grammar describes the superset of supported SQL features in ba
{{< expand Grammar >}}
```sql
query:
- values
+ values
+ | WITH withItem [ , withItem ]* query
| {
- select
+ select
| selectWithoutFrom
| query UNION [ ALL ] query
| query EXCEPT query
@@ -259,64 +260,70 @@ query:
[ OFFSET start { ROW | ROWS } ]
[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY]
+withItem:
+ name
+ [ '(' column [, column ]* ')' ]
+ AS '(' query ')'
+
orderItem:
- expression [ ASC | DESC ]
+ expression [ ASC | DESC ]
select:
- SELECT [ ALL | DISTINCT ]
- { * | projectItem [, projectItem ]* }
- FROM tableExpression
- [ WHERE booleanExpression ]
- [ GROUP BY { groupItem [, groupItem ]* } ]
- [ HAVING booleanExpression ]
- [ WINDOW windowName AS windowSpec [, windowName AS windowSpec ]* ]
+ SELECT [ ALL | DISTINCT ]
+ { * | projectItem [, projectItem ]* }
+ FROM tableExpression
+ [ WHERE booleanExpression ]
+ [ GROUP BY { groupItem [, groupItem ]* } ]
+ [ HAVING booleanExpression ]
+ [ WINDOW windowName AS windowSpec [, windowName AS windowSpec ]* ]
selectWithoutFrom:
- SELECT [ ALL | DISTINCT ]
- { * | projectItem [, projectItem ]* }
+ SELECT [ ALL | DISTINCT ]
+ { * | projectItem [, projectItem ]* }
projectItem:
- expression [ [ AS ] columnAlias ]
+ expression [ [ AS ] columnAlias ]
| tableAlias . *
tableExpression:
- tableReference [, tableReference ]*
+ tableReference [, tableReference ]*
| tableExpression [ NATURAL ] [ LEFT | RIGHT | FULL ] JOIN tableExpression [ joinCondition ]
joinCondition:
- ON booleanExpression
+ ON booleanExpression
| USING '(' column [, column ]* ')'
tableReference:
- tablePrimary
- [ matchRecognize ]
- [ [ AS ] alias [ '(' columnAlias [, columnAlias ]* ')' ] ]
+ tablePrimary
+ [ matchRecognize ]
+ [ [ AS ] alias [ '(' columnAlias [, columnAlias ]* ')' ] ]
tablePrimary:
- [ TABLE ] tablePath [ dynamicTableOptions ] [systemTimePeriod] [[AS] correlationName]
+ [ TABLE ] tablePath [ dynamicTableOptions ] [systemTimePeriod] [[AS] correlationName]
| LATERAL TABLE '(' functionName '(' expression [, expression ]* ')' ')'
+ | [ LATERAL ] '(' query ')'
| UNNEST '(' expression ')'
tablePath:
- [ [ catalogName . ] schemaName . ] tableName
+ [ [ catalogName . ] databaseName . ] tableName
systemTimePeriod:
- FOR SYSTEM_TIME AS OF dateTimeExpression
+ FOR SYSTEM_TIME AS OF dateTimeExpression
dynamicTableOptions:
- /*+ OPTIONS(key=val [, key=val]*) */
+ /*+ OPTIONS(key=val [, key=val]*) */
key:
- stringLiteral
+ stringLiteral
val:
- stringLiteral
+ stringLiteral
values:
- VALUES expression [, expression ]*
+ VALUES expression [, expression ]*
groupItem:
- expression
+ expression
| '(' ')'
| '(' expression [, expression ]* ')'
| CUBE '(' expression [, expression ]* ')'
@@ -339,45 +346,44 @@ windowSpec:
')'
matchRecognize:
- MATCH_RECOGNIZE '('
- [ PARTITION BY expression [, expression ]* ]
- [ ORDER BY orderItem [, orderItem ]* ]
- [ MEASURES measureColumn [, measureColumn ]* ]
- [ ONE ROW PER MATCH ]
- [ AFTER MATCH
- ( SKIP TO NEXT ROW
- | SKIP PAST LAST ROW
- | SKIP TO FIRST variable
- | SKIP TO LAST variable
- | SKIP TO variable )
- ]
- PATTERN '(' pattern ')'
- [ WITHIN intervalLiteral ]
- DEFINE variable AS condition [, variable AS condition ]*
- ')'
+ MATCH_RECOGNIZE '('
+ [ PARTITION BY expression [, expression ]* ]
+ [ ORDER BY orderItem [, orderItem ]* ]
+ [ MEASURES measureColumn [, measureColumn ]* ]
+ [ ONE ROW PER MATCH ]
+ [ AFTER MATCH
+ ( SKIP TO NEXT ROW
+ | SKIP PAST LAST ROW
+ | SKIP TO FIRST variable
+ | SKIP TO LAST variable
+ | SKIP TO variable )
+ ]
+ PATTERN '(' pattern ')'
+ [ WITHIN intervalLiteral ]
+ DEFINE variable AS condition [, variable AS condition ]*
+ ')'
measureColumn:
- expression AS alias
+ expression AS alias
pattern:
- patternTerm [ '|' patternTerm ]*
+ patternTerm [ '|' patternTerm ]*
patternTerm:
- patternFactor [ patternFactor ]*
+ patternFactor [ patternFactor ]*
patternFactor:
- variable [ patternQuantifier ]
+ variable [ patternQuantifier ]
patternQuantifier:
- '*'
- | '*?'
- | '+'
- | '+?'
- | '?'
- | '??'
- | '{' { [ minRepeat ], [ maxRepeat ] } '}' ['?']
- | '{' repeat '}'
-
+ '*'
+ | '*?'
+ | '+'
+ | '+?'
+ | '?'
+ | '??'
+ | '{' { [ minRepeat ], [ maxRepeat ] } '}' ['?']
+ | '{' repeat '}'
```
{{< /expand >}}