This is an automated email from the ASF dual-hosted git repository.

dlych pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 8bcc6d26254bc84eab8f1f08304ccd95582e316a
Author: Dmitry Lychagin <[email protected]>
AuthorDate: Mon Jan 25 16:39:18 2021 -0800

    [NO ISSUE][DOC] Document grouping sets syntax
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    - Document grouping sets in group by clause
    
    Change-Id: I28724daf0683c94419d41134c7c967e9958b9e5a
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9726
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Dmitry Lychagin <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
---
 asterixdb/asterix-doc/src/main/grammar/sqlpp.ebnf        | 14 ++++++++++++--
 asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md |  8 ++++++++
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/asterixdb/asterix-doc/src/main/grammar/sqlpp.ebnf 
b/asterixdb/asterix-doc/src/main/grammar/sqlpp.ebnf
index 62d333a..45d7d6e 100644
--- a/asterixdb/asterix-doc/src/main/grammar/sqlpp.ebnf
+++ b/asterixdb/asterix-doc/src/main/grammar/sqlpp.ebnf
@@ -76,12 +76,22 @@ LetClause ::= "LET" Variable "=" Expr ("," Variable "=" 
Expr)*
 
 WhereClause ::= "WHERE" Expr
 
-GroupByClause ::= "GROUP BY" Expr ("AS"? Identifier)? ( "," Expr ("AS"? 
Identifier)?)* GroupAsClause?
+GroupByClause ::= "GROUP BY" GroupingElement ("," GroupingElement)* 
GroupAsClause?
 
-HavingClause ::= "HAVING" Expr
+GroupingElement ::=  GroupByExprPair
+              | ( "(" GroupByExprPair ( "," GroupByExprPair )* ")")
+              | ( "GROUPING" "SETS" "(" GroupingElement ("," GroupingElement)* 
")" )
+              | ( ( "ROLLUP" | "CUBE" ) "(" OrdinaryGroupingSet ( "," 
OrdinaryGroupingSet )* ")" )
+              | ( "(" ")" )
+
+OrdinaryGroupingSet ::= GroupByExprPair | ( "(" GroupByExprPair ( "," 
GroupByExprPair )* ")")
+
+GroupByExprPair ::= Expr ("AS"? Identifier)?
 
 GroupAsClause ::= "GROUP AS" Identifier
 
+HavingClause ::= "HAVING" Expr
+
 Selection ::= WithClause? QueryBlock UnionOption* OrderByClause? ( LimitClause 
| OffsetClause )?
 
 UnionOption ::= "UNION ALL" (QueryBlock | Subquery)
diff --git a/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md 
b/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
index 17e6339..8076140 100644
--- a/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
+++ b/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
@@ -652,6 +652,14 @@ Grouping is especially important when manipulating 
hierarchies like the ones tha
 ### GroupByClause
 **![](../images/diagrams/GroupByClause.png)**
 
+### GroupingElement
+**![](../images/diagrams/GroupingElement.png)**
+
+### OrdinaryGroupingSet
+**![](../images/diagrams/OrdinaryGroupingSet.png)**
+
+### GroupByExprPair
+**![](../images/diagrams/GroupByExprPair.png)**
 
 ---
 

Reply via email to