Till Westmann has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/410

Change subject: ASTERIXDB-922: trailing commas in lists
......................................................................

ASTERIXDB-922: trailing commas in lists

Change-Id: I608f8bd94bf61c37709d3c9df0fc20dd28ea52b5
---
A 
asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.1.ddl.aql
A 
asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.2.update.aql
A 
asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.3.query.aql
A 
asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.1.ddl.aql
A 
asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.2.update.aql
A 
asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.3.query.aql
A 
asterix-app/src/test/resources/runtimets/results/list/ordered-list-constructor_04/ordered-list-constructor_04.1.adm
A 
asterix-app/src/test/resources/runtimets/results/list/unordered-list-constructor_04/unordered-list-constructor_04.1.adm
M asterix-app/src/test/resources/runtimets/testsuite.xml
M asterix-aql/src/main/javacc/AQL.jj
10 files changed, 60 insertions(+), 22 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/10/410/1

diff --git 
a/asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.1.ddl.aql
 
b/asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.1.ddl.aql
new file mode 100644
index 0000000..754ea81
--- /dev/null
+++ 
b/asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.1.ddl.aql
@@ -0,0 +1,3 @@
+drop dataverse test if exists;
+create dataverse test;
+
diff --git 
a/asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.2.update.aql
 
b/asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ 
b/asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.2.update.aql
diff --git 
a/asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.3.query.aql
 
b/asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.3.query.aql
new file mode 100644
index 0000000..2c4da91
--- /dev/null
+++ 
b/asterix-app/src/test/resources/runtimets/queries/list/ordered-list-constructor_04/ordered-list-constructor_04.3.query.aql
@@ -0,0 +1,3 @@
+use dataverse test;
+
+[ 1, "two", null, ]
diff --git 
a/asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.1.ddl.aql
 
b/asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.1.ddl.aql
new file mode 100644
index 0000000..754ea81
--- /dev/null
+++ 
b/asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.1.ddl.aql
@@ -0,0 +1,3 @@
+drop dataverse test if exists;
+create dataverse test;
+
diff --git 
a/asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.2.update.aql
 
b/asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.2.update.aql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ 
b/asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.2.update.aql
diff --git 
a/asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.3.query.aql
 
b/asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.3.query.aql
new file mode 100644
index 0000000..d50f23b
--- /dev/null
+++ 
b/asterix-app/src/test/resources/runtimets/queries/list/unordered-list-constructor_04/unordered-list-constructor_04.3.query.aql
@@ -0,0 +1,4 @@
+use dataverse test;
+
+{{ 1, "two", null, }}
+
diff --git 
a/asterix-app/src/test/resources/runtimets/results/list/ordered-list-constructor_04/ordered-list-constructor_04.1.adm
 
b/asterix-app/src/test/resources/runtimets/results/list/ordered-list-constructor_04/ordered-list-constructor_04.1.adm
new file mode 100644
index 0000000..be67bf5
--- /dev/null
+++ 
b/asterix-app/src/test/resources/runtimets/results/list/ordered-list-constructor_04/ordered-list-constructor_04.1.adm
@@ -0,0 +1,2 @@
+[ [ 1, "two", null ]
+ ]
diff --git 
a/asterix-app/src/test/resources/runtimets/results/list/unordered-list-constructor_04/unordered-list-constructor_04.1.adm
 
b/asterix-app/src/test/resources/runtimets/results/list/unordered-list-constructor_04/unordered-list-constructor_04.1.adm
new file mode 100644
index 0000000..02c905a
--- /dev/null
+++ 
b/asterix-app/src/test/resources/runtimets/results/list/unordered-list-constructor_04/unordered-list-constructor_04.1.adm
@@ -0,0 +1,2 @@
+[ {{ 1, "two", null }}
+ ]
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml 
b/asterix-app/src/test/resources/runtimets/testsuite.xml
index d706feb..6b962e9 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -2812,6 +2812,11 @@
             </compilation-unit>
         </test-case>
         <test-case FilePath="list">
+            <compilation-unit name="ordered-list-constructor_04">
+                <output-dir 
compare="Text">ordered-list-constructor_04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
             <compilation-unit name="scan-collection_01">
                 <output-dir compare="Text">scan-collection_01</output-dir>
             </compilation-unit>
@@ -2843,6 +2848,11 @@
             </compilation-unit>
         </test-case>
         <test-case FilePath="list">
+            <compilation-unit name="unordered-list-constructor_04">
+                <output-dir 
compare="Text">unordered-list-constructor_04</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="list">
             <compilation-unit name="query-issue428">
                 <output-dir compare="Text">query-issue428</output-dir>
             </compilation-unit>
diff --git a/asterix-aql/src/main/javacc/AQL.jj 
b/asterix-aql/src/main/javacc/AQL.jj
index 0aab549..acab996 100644
--- a/asterix-aql/src/main/javacc/AQL.jj
+++ b/asterix-aql/src/main/javacc/AQL.jj
@@ -1927,23 +1927,11 @@
 ListConstructor OrderedListConstructor() throws ParseException:
 {
       ListConstructor expr = new ListConstructor();
-      Expression tmp = null;
-      List<Expression> exprList = new ArrayList<Expression>();
+      List<Expression> exprList = null;
       expr.setType(ListConstructor.Type.ORDERED_LIST_CONSTRUCTOR);
 }
 {
-
-    <LEFTBRACKET>
-        ( tmp = Expression()
-            {
-              exprList.add(tmp);
-            }
-
-            (<COMMA> tmp = Expression() { exprList.add(tmp);  })*
-        )?
-
-    <RIGHTBRACKET>
-
+    <LEFTBRACKET> exprList = ExpressionList() <RIGHTBRACKET>
     {
       expr.setExprList(exprList);
       return expr;
@@ -1953,23 +1941,46 @@
 ListConstructor UnorderedListConstructor() throws ParseException:
 {
       ListConstructor expr = new ListConstructor();
-      Expression tmp = null;
-      List<Expression> exprList = new ArrayList<Expression>();
+      List<Expression> exprList = null;
       expr.setType(ListConstructor.Type.UNORDERED_LIST_CONSTRUCTOR);
 }
 {
-
-    <LEFTDBLBRACE> ( tmp = Expression()
-    {
-      exprList.add(tmp);
-    }
-    (<COMMA> tmp = Expression() { exprList.add(tmp);  })*)? <RIGHTDBLBRACE>
+    <LEFTDBLBRACE> exprList = ExpressionList() <RIGHTDBLBRACE>
     {
       expr.setExprList(exprList);
       return expr;
     }
 }
 
+List<Expression> ExpressionList() throws ParseException:
+{
+      Expression expr = null;
+      List<Expression> exprList = new ArrayList<Expression>();
+      boolean sawComma = false;
+}
+{
+    (
+      expr = Expression() { exprList.add(expr); }
+      ( <COMMA>
+        {
+          if (sawComma) {
+            throw new ParseException("unexpected \",\"");
+          }
+          sawComma = true;
+        }
+        ( expr = Expression()
+          {
+            sawComma = false;
+            exprList.add(expr);
+          }
+        )?
+      )*
+    )?
+    {
+        return exprList;
+    }
+}
+
 RecordConstructor RecordConstructor() throws ParseException:
 {
       RecordConstructor expr = new RecordConstructor();

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/410
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I608f8bd94bf61c37709d3c9df0fc20dd28ea52b5
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Till Westmann <[email protected]>

Reply via email to