[ASTERIXDB-2050][SQL] Enforce a Semicolon After Each SQL++ Statement
- user model changes: a semicolon must be added after
every SQL++ statement.
- storage format changes: no
- interface changes: no
Details:
- Enforce a semicolon after each SQL++ statement.
- Adapt existing SQL++ test cases to new model.
Change-Id: I27e9e8fde5ff867ab569c8d443ba1522738046e3
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1954
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Till Westmann <tillw@apache.org>
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index 4c1d174..b76adb8 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -350,12 +350,14 @@
Statement stmt = null;
}
{
- ( stmt = SingleStatement() (<SEMICOLON>)*
- {
- decls.add(stmt);
- }
+ (
+ (stmt = SingleStatement()
+ {
+ decls.add(stmt);
+ }
+ )?
+ (<SEMICOLON>)+
)*
- (<SEMICOLON>)*
<EOF>
{
return decls;
@@ -382,7 +384,7 @@
| stmt = ConnectionStatement()
| stmt = CompactStatement()
| stmt = ExplainStatement()
- | stmt = Query(false) <SEMICOLON>
+ | stmt = Query(false)
| stmt = RefreshExternalDatasetStatement()
| stmt = RunStatement()
)