You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "Dmitry Lychagin (Code Review)" <do...@asterixdb.incubator.apache.org> on 2019/04/05 02:19:42 UTC
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Dmitry Lychagin has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/3322
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
[NO ISSUE] Name resolution improvements
Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
---
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv15/cross-dv15.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.1.ddl.sqlpp
R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.3.query.sqlpp
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit/insert-returning-fieldname-implicit.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.3.query.sqlpp
R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.2.update.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.4.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.5.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.6.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.7.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.8.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.2.update.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.4.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.5.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.6.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.7.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.8.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.9.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.3.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.4.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.5.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.6.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.7.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.8.adm
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/context/Scope.java
M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java
M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/AbstractSqlppExpressionExtractionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/InlineColumnAliasVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/Sql92AggregateFunctionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppWindowAggregationSugarVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppVariableUtil.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckDatasetOnlyResolutionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppSimpleExpressionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
48 files changed, 541 insertions(+), 492 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/22/3322/1
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv15/cross-dv15.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv15/cross-dv15.1.ddl.sqlpp
index 91981df..166bcdf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv15/cross-dv15.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv15/cross-dv15.1.ddl.sqlpp
@@ -33,7 +33,7 @@
// UDF with one input
create function testdv1.fun02(a){
-`function 02`
+a.`function 02`
};
// UDF with two inputs
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.1.ddl.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.1.ddl.sqlpp
index a41976b..ff45c01 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.1.ddl.sqlpp
@@ -23,12 +23,15 @@
* Date : Mar 2015
*/
+
drop dataverse test if exists;
create dataverse test;
use test;
-create type sub as
-{ subscriptionId: uuid }
-;
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ `message-text`: string
+};
-create dataset subscriptions(sub) primary key subscriptionId;
\ No newline at end of file
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.3.query.sqlpp
similarity index 89%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.3.query.sqlpp
index dad3a82..c8d14e9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.3.query.sqlpp
@@ -25,6 +25,6 @@
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+insert into TweetMessageuuids (
+ { "message-text":"hello"}
+) returning `message-text`;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit/insert-returning-fieldname-implicit.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit/insert-returning-fieldname-implicit.3.query.sqlpp
index c8d14e9..fa50da0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit/insert-returning-fieldname-implicit.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit/insert-returning-fieldname-implicit.3.query.sqlpp
@@ -27,4 +27,4 @@
insert into TweetMessageuuids (
{ "message-text":"hello"}
-) returning `message-text`;
\ No newline at end of file
+) returning TweetMessageuuids.`message-text`;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.1.ddl.sqlpp
similarity index 87%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.1.ddl.sqlpp
index a41976b..e4f8d09 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.1.ddl.sqlpp
@@ -17,10 +17,9 @@
* under the License.
*/
/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
+ * Test case Name : upsert-returning-fieldname-implicit
+ * Description : Check fields returned on upsert
* Expected Result : Success
- * Date : Mar 2015
*/
drop dataverse test if exists;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.3.query.sqlpp
similarity index 82%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.3.query.sqlpp
index dad3a82..ba73bd7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.3.query.sqlpp
@@ -17,14 +17,13 @@
* under the License.
*/
/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
+ * Test case Name : upsert-returning-fieldname
+ * Description : Check fields returned on upsert
* Expected Result : Success
- * Date : Mar 2015
*/
use test;
-upsert into subscriptions as record(
+upsert into subscriptions (
[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+) returning word;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.1.ddl.sqlpp
similarity index 87%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.1.ddl.sqlpp
index a41976b..e4f8d09 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.1.ddl.sqlpp
@@ -17,10 +17,9 @@
* under the License.
*/
/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
+ * Test case Name : upsert-returning-fieldname-implicit
+ * Description : Check fields returned on upsert
* Expected Result : Success
- * Date : Mar 2015
*/
drop dataverse test if exists;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.3.query.sqlpp
similarity index 82%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.3.query.sqlpp
index dad3a82..420ff66 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.3.query.sqlpp
@@ -17,14 +17,13 @@
* under the License.
*/
/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
+ * Test case Name : upsert-returning-fieldname
+ * Description : Check fields returned on upsert
* Expected Result : Success
- * Date : Mar 2015
*/
use test;
-upsert into subscriptions as record(
+upsert into subscriptions (
[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+) returning subscriptions.word;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.1.ddl.sqlpp
similarity index 87%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.1.ddl.sqlpp
index a41976b..95476c4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.1.ddl.sqlpp
@@ -17,10 +17,9 @@
* under the License.
*/
/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
+ * Test case Name : upsert-returning-fieldname
+ * Description : Check fields returned on upsert
* Expected Result : Success
- * Date : Mar 2015
*/
drop dataverse test if exists;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.3.query.sqlpp
similarity index 87%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.3.query.sqlpp
index dad3a82..b715d75 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.3.query.sqlpp
@@ -17,10 +17,9 @@
* under the License.
*/
/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
+ * Test case Name : upsert-returning-fieldname
+ * Description : Check fields returned on upsert
* Expected Result : Success
- * Date : Mar 2015
*/
use test;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.1.ddl.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.1.ddl.sqlpp
index a41976b..02c9795 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.1.ddl.sqlpp
@@ -16,19 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
drop dataverse test if exists;
create dataverse test;
use test;
-create type sub as
-{ subscriptionId: uuid }
-;
+drop dataset samptable if exists;
+drop type samptabletype if exists;
-create dataset subscriptions(sub) primary key subscriptionId;
\ No newline at end of file
+create type samptabletype as {
+ id: tinyint
+};
+
+create dataset samptable(samptabletype) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.2.update.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.2.update.sqlpp
index dad3a82..7880a4e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.2.update.sqlpp
@@ -16,15 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+insert into samptable ({'id' : 1, 'c1': 1, 'c2': 'a', 'c3': [ { 'c10': 10 }, { 'c10': 20 }, { 'c10': 30 } ] });
+
+insert into samptable ({'id' : 2, 'c1': 2, 'c2': 'b', 'c3': [ { 'c10': 40 }, { 'c10': 50 }, { 'c10': 60 } ] });
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.3.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.3.query.sqlpp
index dad3a82..cd3759a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.3.query.sqlpp
@@ -16,15 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Test that non-qualified identifier resolution ignores variables introduced by LET clauses */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+from samptable
+let c_c1 = c1, c_c1_1 = c1 + 1
+where c2 > 'a'
+select id, c_c1, c_c1_1, c2
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.4.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.4.query.sqlpp
index dad3a82..c5fd553 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.4.query.sqlpp
@@ -16,15 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Test that non-qualified identifier resolution ignores
+ positional variable in FROM clause */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+from ( from samptable s select s.* order by s.id ) s2 at i
+let c_c1 = c1
+where c2 > 'a'
+select id, i, c_c1, c2
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.5.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.5.query.sqlpp
index dad3a82..9fe805a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.5.query.sqlpp
@@ -16,15 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Test non-qualified identifier resolution inside quantified expression with a
+ single quantified variable */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+from samptable s
+where some x in s.c3 satisfies c10 > 50
+select id, c3
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.6.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.6.query.sqlpp
index dad3a82..450869d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.6.query.sqlpp
@@ -16,15 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Resolve to a dataset if used in a top-level expression */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+array_count(samptable)
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.7.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.7.query.sqlpp
index dad3a82..c7d7ec4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.7.query.sqlpp
@@ -16,15 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Resolve to a dataset if used in a top-level expression,
+ do not resolve to a statement parameter */
+
+// requesttype=application/json
+
+// param $p_obj:json={"samptable":[1,2,3,4,5,6,7,8]}
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+array_count(samptable)
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.8.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.8.query.sqlpp
index dad3a82..0c30894 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.8.query.sqlpp
@@ -16,15 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Resolve to a dataset if used in a top-level expression */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+{
+ "t1": tostring({ "x": [-array_count(samptable)][0:][0] + 4 }.x)
+}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.1.ddl.sqlpp
similarity index 75%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.1.ddl.sqlpp
index a41976b..02c9795 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.1.ddl.sqlpp
@@ -16,19 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
drop dataverse test if exists;
create dataverse test;
use test;
-create type sub as
-{ subscriptionId: uuid }
-;
+drop dataset samptable if exists;
+drop type samptabletype if exists;
-create dataset subscriptions(sub) primary key subscriptionId;
\ No newline at end of file
+create type samptabletype as {
+ id: tinyint
+};
+
+create dataset samptable(samptabletype) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.2.update.sqlpp
similarity index 73%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.2.update.sqlpp
index dad3a82..8bc3f97 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.2.update.sqlpp
@@ -16,15 +16,21 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+insert into samptable ({
+ 'id': 1,
+ 'c1': 1,
+ 'c2': 'a',
+ 'c3': [ { 'c10': 10 }, { 'c10': 20 }, { 'c10': 30 } ],
+ 'c4': { 'c20': 100 }
+});
+
+insert into samptable ({
+ 'id': 2,
+ 'c1': 2,
+ 'c2': 'b',
+ 'c3': [ { 'c10': 40 }, { 'c10': 50 }, { 'c10': 60 } ],
+ 'c4': { 'c20': 200 }
+});
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.3.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.3.query.sqlpp
index dad3a82..1a1a232 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.3.query.sqlpp
@@ -16,15 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Ambiguous after JOIN */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+from samptable s join samptable s2 on s.id = s2.id
+where c2 > 'a'
+select s.id s_id, s2.id s2_id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.4.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.4.query.sqlpp
index dad3a82..a63f382 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.4.query.sqlpp
@@ -16,15 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Ambiguous after multiple FROM terms */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+from samptable s, samptable s2
+where c2 > 'a'
+select s.id s_id, s2.id s2_id
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.5.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.5.query.sqlpp
index dad3a82..056d6c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.5.query.sqlpp
@@ -16,15 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Ambiguous after UNNEST */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+from samptable s unnest s.c3 s_c3
+where c2 > 'a'
+select s.id s_id, s_c3.c10
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.6.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.6.query.sqlpp
index dad3a82..7f0d131 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.6.query.sqlpp
@@ -16,15 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Ambiguous after multiple quantified variables */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+from samptable s
+where some x in s.c3, y in range(1, 20) satisfies c10 < y
+select s.id
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.7.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.7.query.sqlpp
index dad3a82..80aa3ac 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.7.query.sqlpp
@@ -16,15 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Cannot do non-qualified resolution after GROUP BY */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+from samptable s
+group by s.c4
+select c20
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.8.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.8.query.sqlpp
index dad3a82..a19fe28 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.8.query.sqlpp
@@ -16,15 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* Cannot do non-qualified resolution after implicit GROUP BY ALL */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+from samptable s
+select count(c2), c1
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.9.query.sqlpp
similarity index 74%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.9.query.sqlpp
index dad3a82..e2d5741 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-qualified/insert-returning-fieldname-qualified.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.9.query.sqlpp
@@ -16,15 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
- * Test case Name : insert-returning-fieldname
- * Description : Check fields returned on insert
- * Expected Result : Success
- * Date : Mar 2015
- */
+
+/* No non-qualified resolution if there is no FROM clause */
use test;
-upsert into subscriptions as record(
-[{"subscriptionId":create_uuid(), "word": "hello"}]
-) returning record.word;
\ No newline at end of file
+let x = { "a": 1, "samptable": 2, "c": 3 }
+select value samptable
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.3.adm
new file mode 100644
index 0000000..6dec87a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.3.adm
@@ -0,0 +1 @@
+{ "id": 2, "c_c1": 2, "c_c1_1": 3, "c2": "b" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.4.adm
new file mode 100644
index 0000000..95bdf8e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.4.adm
@@ -0,0 +1 @@
+{ "id": 2, "i": 2, "c_c1": 2, "c2": "b" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.5.adm
new file mode 100644
index 0000000..8566517
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.5.adm
@@ -0,0 +1 @@
+{ "id": 2, "c3": [ { "c10": 40 }, { "c10": 50 }, { "c10": 60 } ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.6.adm
new file mode 100644
index 0000000..d8263ee
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.6.adm
@@ -0,0 +1 @@
+2
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.7.adm
new file mode 100644
index 0000000..d8263ee
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.7.adm
@@ -0,0 +1 @@
+2
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.8.adm
new file mode 100644
index 0000000..8f4358e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.8.adm
@@ -0,0 +1 @@
+{ "t1": "2" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 69bc647..1eb3de6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -3763,24 +3763,23 @@
</compilation-unit>
</test-case>
<test-case FilePath="dml">
- <compilation-unit name="insert-returning-fieldname">
- <output-dir compare="Text">insert-returning-fieldname</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="dml">
<compilation-unit name="insert-returning-udf">
<output-dir compare="Text">insert-returning-fieldname</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="dml">
- <compilation-unit name="insert-returning-fieldname-qualified">
+ <compilation-unit name="insert-returning-fieldname">
<output-dir compare="Text">insert-returning-fieldname</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="dml">
<compilation-unit name="insert-returning-fieldname-implicit">
<output-dir compare="Text">insert-returning-fieldname</output-dir>
- <expected-error>Need an alias for the enclosed expression</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
+ <compilation-unit name="insert-returning-fieldname-implicit-2">
+ <output-dir compare="Text">insert-returning-fieldname</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="dml">
@@ -4109,6 +4108,21 @@
<test-case FilePath="dml">
<compilation-unit name="upsert-return-custom-result">
<output-dir compare="Text">upsert-return-custom-result</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
+ <compilation-unit name="upsert-returning-fieldname">
+ <output-dir compare="Text">insert-returning-fieldname</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
+ <compilation-unit name="upsert-returning-fieldname-implicit">
+ <output-dir compare="Text">insert-returning-fieldname</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
+ <compilation-unit name="upsert-returning-fieldname-implicit-2">
+ <output-dir compare="Text">insert-returning-fieldname</output-dir>
</compilation-unit>
</test-case>
</test-group>
@@ -4657,7 +4671,7 @@
<test-case FilePath="global-aggregate">
<compilation-unit name="q05_error">
<output-dir compare="Text">q01</output-dir>
- <expected-error>ASX1091: Type mismatch: expected value of type object, but got the value of type array (in line 22, at column 8)</expected-error>
+ <expected-error>ASX1073: Cannot resolve alias reference for undefined identifier u (in line 22, at column 8)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="global-aggregate">
@@ -4792,7 +4806,7 @@
<test-case FilePath="group-by">
<compilation-unit name="sugar-02-2">
<output-dir compare="Text">core-02</output-dir>
- <expected-error>Cannot resolve ambiguous alias reference for identifier deptId</expected-error>
+ <expected-error>ASX1073: Cannot resolve alias reference for undefined identifier deptId (in line 28, at column 8)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="group-by">
@@ -7147,8 +7161,8 @@
<test-case FilePath="numeric">
<compilation-unit name="scientific_error">
<output-dir compare="Text">none</output-dir>
- <expected-error>Cannot find dataset e in dataverse Default nor an alias with name e</expected-error>
- <expected-error>Cannot find dataset e in dataverse Default nor an alias with name e</expected-error>
+ <expected-error>ASX1073: Cannot resolve alias reference for undefined identifier e (in line 24, at column 10)</expected-error>
+ <expected-error>ASX1073: Cannot resolve alias reference for undefined identifier e (in line 24, at column 8)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="numeric">
@@ -7618,6 +7632,23 @@
<test-case FilePath="resolution">
<compilation-unit name="function_dataverse">
<output-dir compare="Text">function_dataverse</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="resolution">
+ <compilation-unit name="field_accessor_1">
+ <output-dir compare="Text">field_accessor_1</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="resolution">
+ <compilation-unit name="field_accessor_2_negative">
+ <output-dir compare="Text">field_accessor_1</output-dir>
+ <expected-error>ASX1074: Cannot resolve ambiguous alias reference for identifier c2 (in line 25, at column 7)</expected-error>
+ <expected-error>ASX1074: Cannot resolve ambiguous alias reference for identifier c2 (in line 25, at column 7)</expected-error>
+ <expected-error>ASX1074: Cannot resolve ambiguous alias reference for identifier c2 (in line 25, at column 7)</expected-error>
+ <expected-error>ASX1074: Cannot resolve ambiguous alias reference for identifier c10 (in line 25, at column 51)</expected-error>
+ <expected-error>ASX1073: Cannot resolve alias reference for undefined identifier c20 (in line 26, at column 8)</expected-error>
+ <expected-error>ASX1073: Cannot resolve alias reference for undefined identifier c1 (in line 25, at column 19)</expected-error>
+ <expected-error>ASX1073: Cannot resolve alias reference for undefined identifier samptable (in line 25, at column 14)</expected-error>
</compilation-unit>
</test-case>
</test-group>
@@ -10512,7 +10543,7 @@
<test-case FilePath="user-defined-functions">
<compilation-unit name="udf30">
<output-dir compare="Text">udf30</output-dir>
- <expected-error>Cannot find dataset y in dataverse Default nor an alias with name y</expected-error>
+ <expected-error>ASX1073: Cannot resolve alias reference for undefined identifier y (in line 30, at column 8)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/context/Scope.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/context/Scope.java
index fa47f5e..92be7c9 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/context/Scope.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/context/Scope.java
@@ -19,23 +19,28 @@
package org.apache.asterix.lang.common.context;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
+import java.util.Map;
import java.util.Set;
-import java.util.function.Predicate;
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.lang.common.expression.VariableExpr;
import org.apache.asterix.lang.common.parser.ScopeChecker;
import org.apache.asterix.lang.common.struct.Identifier;
import org.apache.asterix.lang.common.struct.VarIdentifier;
import org.apache.commons.collections4.iterators.ReverseListIterator;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public final class Scope {
private final ScopeChecker scopeChecker;
private final Scope parent;
- private final LinkedHashMap<String, Identifier> symbols;
+ private final LinkedHashMap<String, Pair<Identifier, Set<? extends SymbolAnnotation>>> symbols;
private final boolean maskParentScope;
private FunctionSignatures functionSignatures;
@@ -60,15 +65,15 @@
* @param name
* @return the Identifier of this symbol; otherwise null;
*/
- public Identifier findSymbol(String name) {
- Identifier ident = symbols.get(name);
- if (ident == null && !maskParentScope && parent != null) {
- ident = parent.findSymbol(name);
+ public Pair<Identifier, Set<? extends SymbolAnnotation>> findSymbol(String name) {
+ Pair<Identifier, Set<? extends SymbolAnnotation>> symbol = symbols.get(name);
+ if (symbol == null && !maskParentScope && parent != null) {
+ symbol = parent.findSymbol(name);
}
- return ident;
+ return symbol;
}
- public Identifier findLocalSymbol(String name) {
+ public Pair<Identifier, Set<? extends SymbolAnnotation>> findLocalSymbol(String name) {
return symbols.get(name);
}
@@ -78,13 +83,24 @@
* @param ident
*/
public void addSymbolToScope(Identifier ident) {
- symbols.put(ident.getValue(), ident);
+ addSymbolToScope(ident, null);
+ }
+
+ public void addSymbolToScope(Identifier ident, Set<? extends SymbolAnnotation> annotations) {
+ if (annotations == null) {
+ annotations = Collections.emptySet();
+ }
+ symbols.put(ident.getValue(), new Pair<>(ident, annotations));
}
public void addNewVarSymbolToScope(VarIdentifier ident) {
+ addNewVarSymbolToScope(ident, null);
+ }
+
+ public void addNewVarSymbolToScope(VarIdentifier ident, Set<? extends SymbolAnnotation> annotations) {
scopeChecker.incVarCounter();
ident.setId(scopeChecker.getVarCounter());
- addSymbolToScope(ident);
+ addSymbolToScope(ident, annotations);
}
/**
@@ -140,12 +156,13 @@
*
* @return an iterator of visible symbols.
*/
- public Iterator<Identifier> liveSymbols(Scope stopAtExclusive) {
- final Iterator<Identifier> identifierIterator = new ReverseListIterator<>(new ArrayList<>(symbols.values()));
- final Iterator<Identifier> parentIterator =
+ public Iterator<Pair<Identifier, Set<? extends SymbolAnnotation>>> liveSymbols(Scope stopAtExclusive) {
+ final Iterator<Pair<Identifier, Set<? extends SymbolAnnotation>>> identifierIterator =
+ new ReverseListIterator<>(new ArrayList<>(symbols.values()));
+ final Iterator<Pair<Identifier, Set<? extends SymbolAnnotation>>> parentIterator =
parent == null || parent == stopAtExclusive ? null : parent.liveSymbols(stopAtExclusive);
- return new Iterator<Identifier>() {
- private Identifier currentSymbol = null;
+ return new Iterator<Pair<Identifier, Set<? extends SymbolAnnotation>>>() {
+ private Pair<Identifier, Set<? extends SymbolAnnotation>> currentSymbol = null;
@Override
public boolean hasNext() {
@@ -154,8 +171,8 @@
currentSymbol = identifierIterator.next();
} else if (!maskParentScope && parentIterator != null && parentIterator.hasNext()) {
do {
- Identifier symbolFromParent = parentIterator.next();
- if (!symbols.containsKey(symbolFromParent.getValue())) {
+ Pair<Identifier, Set<? extends SymbolAnnotation>> symbolFromParent = parentIterator.next();
+ if (!symbols.containsKey(symbolFromParent.first.getValue())) {
currentSymbol = symbolFromParent;
break;
}
@@ -171,7 +188,7 @@
}
@Override
- public Identifier next() {
+ public Pair<Identifier, Set<? extends SymbolAnnotation>> next() {
if (currentSymbol == null) {
throw new IllegalStateException(
"Please make sure that hasNext() returns true before calling next().");
@@ -183,28 +200,38 @@
};
}
- public Set<VariableExpr> getLiveVariables() {
+ public Map<VariableExpr, Set<? extends SymbolAnnotation>> getLiveVariables() {
return getLiveVariables(null);
}
- public Set<VariableExpr> getLiveVariables(Scope stopAtExclusive) {
- return getLiveVariables(stopAtExclusive, null);
- }
-
- public Set<VariableExpr> getLiveVariables(Scope stopAtExclusive, Predicate<? super VarIdentifier> excludeFilter) {
- LinkedHashSet<VariableExpr> vars = new LinkedHashSet<>();
- Iterator<Identifier> identifierIterator = liveSymbols(stopAtExclusive);
- while (identifierIterator.hasNext()) {
- Identifier identifier = identifierIterator.next();
+ public Map<VariableExpr, Set<? extends SymbolAnnotation>> getLiveVariables(Scope stopAtExclusive) {
+ LinkedHashMap<VariableExpr, Set<? extends SymbolAnnotation>> vars = new LinkedHashMap<>();
+ Iterator<Pair<Identifier, Set<? extends SymbolAnnotation>>> symbolIterator = liveSymbols(stopAtExclusive);
+ while (symbolIterator.hasNext()) {
+ Pair<Identifier, Set<? extends SymbolAnnotation>> p = symbolIterator.next();
+ Identifier identifier = p.first;
if (identifier instanceof VarIdentifier) {
VarIdentifier varId = (VarIdentifier) identifier;
- if (excludeFilter != null && excludeFilter.test(varId)) {
- continue;
- }
- vars.add(new VariableExpr(varId));
+ vars.put(new VariableExpr(varId), p.second);
}
}
return vars;
+ }
+
+ public static Set<VariableExpr> findVariablesAnnotatedBy(Set<VariableExpr> candidateVars,
+ SymbolAnnotation annotationTest, Map<VariableExpr, Set<? extends SymbolAnnotation>> annotationMap,
+ SourceLocation sourceLoc) throws CompilationException {
+ Set<VariableExpr> resultVars = new HashSet<>();
+ for (VariableExpr var : candidateVars) {
+ Set<? extends SymbolAnnotation> varAnnotations = annotationMap.get(var);
+ if (varAnnotations == null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc);
+ }
+ if (varAnnotations.contains(annotationTest)) {
+ resultVars.add(var);
+ }
+ }
+ return resultVars;
}
// Returns local symbols within the current scope.
@@ -215,4 +242,7 @@
public Scope getParentScope() {
return parent;
}
+
+ public interface SymbolAnnotation {
+ }
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java
index f332b0a..58470e3 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java
@@ -18,12 +18,14 @@
*/
package org.apache.asterix.lang.common.parser;
+import java.util.Set;
import java.util.Stack;
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.lang.common.context.RootScopeFactory;
import org.apache.asterix.lang.common.context.Scope;
import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.hyracks.algebricks.common.utils.Pair;
import org.apache.hyracks.algebricks.core.algebra.base.Counter;
public class ScopeChecker {
@@ -124,10 +126,12 @@
*/
public final Identifier lookupSymbol(String name) {
if (name != null) {
- return getCurrentScope().findSymbol(name);
- } else {
- return null;
+ Pair<Identifier, Set<? extends Scope.SymbolAnnotation>> symbol = getCurrentScope().findSymbol(name);
+ if (symbol != null) {
+ return symbol.first;
+ }
}
+ return null;
}
/**
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java
index b2fd3a0..dbcb358 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java
@@ -19,9 +19,7 @@
package org.apache.asterix.lang.common.rewrites;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
import org.apache.asterix.lang.common.struct.VarIdentifier;
import org.apache.hyracks.algebricks.core.algebra.base.Counter;
@@ -30,7 +28,6 @@
private Counter varCounter;
private int systemVarCounter = 1;
private Map<Integer, VarIdentifier> oldVarIdToNewVarId = new HashMap<>();
- private Set<VarIdentifier> excludedForFieldAccessVars = new HashSet<>();
public LangRewritingContext(int varCounter) {
this.varCounter = new Counter(varCounter);
@@ -70,13 +67,5 @@
private int increaseAndGetCtr() {
varCounter.inc();
return varCounter.get();
- }
-
- public void addExcludedForFieldAccessVar(VarIdentifier varId) {
- excludedForFieldAccessVars.add(varId);
- }
-
- public boolean isExcludedForFieldAccessVar(VarIdentifier varId) {
- return excludedForFieldAccessVars.contains(varId);
}
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/AbstractSqlppExpressionExtractionVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/AbstractSqlppExpressionExtractionVisitor.java
index 4441d65..57bfad5 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/AbstractSqlppExpressionExtractionVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/AbstractSqlppExpressionExtractionVisitor.java
@@ -104,7 +104,6 @@
VariableExpr varExpr = new VariableExpr(var);
varExpr.setSourceLocation(bindExpr.getSourceLocation());
toLetWhereList.add(new LetClause(varExpr, bindExpr));
- context.addExcludedForFieldAccessVar(var);
}
fromBindingList.clear();
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/InlineColumnAliasVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/InlineColumnAliasVisitor.java
index f68688f..416f49b 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/InlineColumnAliasVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/InlineColumnAliasVisitor.java
@@ -185,8 +185,6 @@
VariableExpr letVarRefExpr = new VariableExpr(letVarId);
letVarRefExpr.setSourceLocation(sourceLoc);
columnAliasBinding.setExpression(letVarRefExpr);
-
- context.addExcludedForFieldAccessVar(letVarId);
}
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/Sql92AggregateFunctionVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/Sql92AggregateFunctionVisitor.java
index f52acbf..9f13eb2 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/Sql92AggregateFunctionVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/Sql92AggregateFunctionVisitor.java
@@ -66,19 +66,23 @@
private final Expression groupVar;
- private final Map<Expression, Identifier> fieldVars;
+ private final Map<VariableExpr, Identifier> groupVarFieldMap;
+
+ private final Collection<VariableExpr> preGroupContextVars;
+
+ private final Collection<VariableExpr> preGroupUnmappedVars;
private final Collection<VariableExpr> outerVars;
- private final Set<VariableExpr> prohibitVars;
-
Sql92AggregateFunctionVisitor(LangRewritingContext context, VariableExpr groupVar,
- Map<Expression, Identifier> fieldVars, Collection<VariableExpr> outerVars, Set<VariableExpr> prohibitVars) {
+ Map<VariableExpr, Identifier> groupVarFieldMap, Collection<VariableExpr> preGroupContextVars,
+ Collection<VariableExpr> preGroupUnmappedVars, Collection<VariableExpr> outerVars) {
this.context = context;
this.groupVar = groupVar;
- this.fieldVars = fieldVars;
+ this.groupVarFieldMap = groupVarFieldMap;
+ this.preGroupContextVars = preGroupContextVars;
+ this.preGroupUnmappedVars = preGroupUnmappedVars;
this.outerVars = outerVars;
- this.prohibitVars = prohibitVars;
}
@Override
@@ -88,8 +92,8 @@
boolean aggregate = FunctionMapUtil.isSql92AggregateFunction(signature);
boolean rewritten = false;
for (Expression expr : callExpr.getExprList()) {
- Expression newExpr = aggregate
- ? wrapAggregationArgument(expr, groupVar, fieldVars, outerVars, prohibitVars, context) : expr;
+ Expression newExpr = aggregate ? wrapAggregationArgument(expr, groupVar, groupVarFieldMap,
+ preGroupContextVars, preGroupUnmappedVars, outerVars, context) : expr;
rewritten |= newExpr != expr;
newExprList.add(newExpr.accept(this, arg));
}
@@ -103,8 +107,9 @@
}
static Expression wrapAggregationArgument(Expression expr, Expression groupVar,
- Map<Expression, Identifier> fieldVars, Collection<VariableExpr> outerVars,
- Collection<VariableExpr> prohibitVars, LangRewritingContext context) throws CompilationException {
+ Map<VariableExpr, Identifier> groupVarFieldMap, Collection<VariableExpr> preGroupContextVars,
+ Collection<VariableExpr> preGroupUnmappedVars, Collection<VariableExpr> outerVars,
+ LangRewritingContext context) throws CompilationException {
SourceLocation sourceLoc = expr.getSourceLocation();
Set<VariableExpr> freeVars = SqlppRewriteUtil.getFreeVariable(expr);
@@ -119,25 +124,27 @@
Map<Expression, Expression> varExprMap = new HashMap<>();
for (VariableExpr usedVar : freeVars) {
// Reference to a field in the group variable.
- if (fieldVars.containsKey(usedVar)) {
+ if (groupVarFieldMap.containsKey(usedVar)) {
// Rewrites to a reference to a field in the group variable.
FieldAccessor fa =
- new FieldAccessor(fromBindingVar, new VarIdentifier(fieldVars.get(usedVar).getValue()));
+ new FieldAccessor(fromBindingVar, new VarIdentifier(groupVarFieldMap.get(usedVar).getValue()));
fa.setSourceLocation(usedVar.getSourceLocation());
varExprMap.put(usedVar, fa);
} else if (outerVars.contains(usedVar)) {
// Do nothing
- } else if (prohibitVars != null && prohibitVars.contains(usedVar)) {
+ } else if (preGroupUnmappedVars != null && preGroupUnmappedVars.contains(usedVar)) {
throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_USE_OF_IDENTIFIER, sourceLoc,
SqlppVariableUtil.toUserDefinedVariableName(usedVar.getVar().getValue()).getValue());
} else {
// Rewrites to a reference to a single field in the group variable.
- Identifier ident = findField(fieldVars, usedVar, context);
- FieldAccessor faInner = new FieldAccessor(fromBindingVar, ident);
+ VariableExpr preGroupVar = VariableCheckAndRewriteVisitor.pickContextVar(preGroupContextVars, usedVar);
+ Identifier groupVarField = groupVarFieldMap.get(preGroupVar);
+ if (groupVarField == null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc);
+ }
+ FieldAccessor faInner = new FieldAccessor(fromBindingVar, groupVarField);
faInner.setSourceLocation(usedVar.getSourceLocation());
- FieldAccessor faOuter =
- new FieldAccessor(faInner, SqlppVariableUtil.toUserDefinedVariableName(usedVar.getVar()));
- faOuter.setSourceLocation(usedVar.getSourceLocation());
+ Expression faOuter = resolveAsFieldAccess(faInner, usedVar.getVar(), usedVar.getSourceLocation());
varExprMap.put(usedVar, faOuter);
}
}
@@ -159,24 +166,11 @@
return selectExpr;
}
- private static Identifier findField(Map<Expression, Identifier> fieldVars, VariableExpr usedVar,
- LangRewritingContext context) throws CompilationException {
- Identifier ident = null;
- for (Map.Entry<Expression, Identifier> me : fieldVars.entrySet()) {
- Expression fieldVarExpr = me.getKey();
- if (fieldVarExpr.getKind() == Expression.Kind.VARIABLE_EXPRESSION
- && context.isExcludedForFieldAccessVar(((VariableExpr) fieldVarExpr).getVar())) {
- continue;
- }
- if (ident != null) {
- throw new CompilationException(ErrorCode.AMBIGUOUS_IDENTIFIER, usedVar.getSourceLocation(),
- SqlppVariableUtil.toUserDefinedVariableName(usedVar.getVar().getValue()).getValue());
- }
- ident = me.getValue();
- }
- if (ident == null) {
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, usedVar.getSourceLocation(), "");
- }
- return ident;
+ // TODO: move to VariableCheckAndRewriteVisitor
+ private static Expression resolveAsFieldAccess(Expression sourceExpr, VarIdentifier var, SourceLocation sourceLoc) {
+ VarIdentifier fieldName = SqlppVariableUtil.toUserDefinedVariableName(var.getValue());
+ FieldAccessor fa = new FieldAccessor(sourceExpr, fieldName);
+ fa.setSourceLocation(sourceLoc);
+ return fa;
}
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java
index da7e1eb..935a100 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java
@@ -20,7 +20,7 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -35,6 +35,7 @@
import org.apache.asterix.lang.common.clause.LetClause;
import org.apache.asterix.lang.common.clause.LimitClause;
import org.apache.asterix.lang.common.clause.OrderbyClause;
+import org.apache.asterix.lang.common.context.Scope;
import org.apache.asterix.lang.common.expression.GbyVariableExpressionPair;
import org.apache.asterix.lang.common.expression.VariableExpr;
import org.apache.asterix.lang.common.rewrites.LangRewritingContext;
@@ -46,6 +47,7 @@
import org.apache.asterix.lang.sqlpp.util.SqlppRewriteUtil;
import org.apache.asterix.lang.sqlpp.util.SqlppVariableUtil;
import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor;
+import org.apache.hyracks.algebricks.common.utils.Pair;
/**
* An AST pre-processor to rewrite group-by sugar queries, which does the following transformations:
@@ -86,7 +88,7 @@
@Override
public Expression visit(SelectBlock selectBlock, ILangExpression arg) throws CompilationException {
- Set<VariableExpr> outerScopeVars = scopeChecker.getCurrentScope().getLiveVariables();
+ Set<VariableExpr> outerVars = scopeChecker.getCurrentScope().getLiveVariables().keySet();
// Traverses the select block in the order of "from", "let/where"s, "group by", "let/having"s and "select".
FromClause fromClause = selectBlock.getFromClause();
@@ -99,17 +101,23 @@
}
}
if (selectBlock.hasGroupbyClause()) {
- Set<VariableExpr> visibleVarsPreGroupByScope = scopeChecker.getCurrentScope().getLiveVariables();
+ Map<VariableExpr, Set<? extends Scope.SymbolAnnotation>> preGroupAnnotatedVars =
+ scopeChecker.getCurrentScope().getLiveVariables();
+ Set<VariableExpr> preGroupVars = preGroupAnnotatedVars.keySet();
GroupbyClause groupbyClause = selectBlock.getGroupbyClause();
groupbyClause.accept(this, arg);
- Collection<VariableExpr> visibleVarsInCurrentScope = SqlppVariableUtil.getBindingVariables(groupbyClause);
+ Collection<VariableExpr> groupByBindingVars = SqlppVariableUtil.getBindingVariables(groupbyClause);
VariableExpr groupVar = groupbyClause.getGroupVar();
- Map<Expression, Identifier> groupFieldVars = getGroupFieldVariables(groupbyClause);
-
- Set<VariableExpr> unmappedVars =
- getUnmappedVariables(visibleVarsPreGroupByScope, outerScopeVars, groupFieldVars);
+ if (!groupbyClause.hasGroupFieldList()) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, groupbyClause.getSourceLocation());
+ }
+ Map<VariableExpr, Identifier> groupVarFieldMap = createGroupVarFieldMap(groupbyClause.getGroupFieldList());
+ Set<VariableExpr> preGroupMappedVars = groupVarFieldMap.keySet();
+ Set<VariableExpr> preGroupContextVars = Scope.findVariablesAnnotatedBy(preGroupMappedVars,
+ SqlppVariableAnnotation.CONTEXT_VARIABLE, preGroupAnnotatedVars, groupbyClause.getSourceLocation());
+ Set<VariableExpr> preGroupUnmappedVars = getUnmappedVariables(preGroupVars, preGroupMappedVars, outerVars);
Collection<VariableExpr> freeVariables = new HashSet<>();
Collection<VariableExpr> freeVariablesInGbyLets = new HashSet<>();
@@ -117,16 +125,16 @@
for (AbstractClause letHavingClause : selectBlock.getLetHavingListAfterGroupby()) {
letHavingClause.accept(this, arg);
// Rewrites each let/having clause after the group-by.
- rewriteExpressionUsingGroupVariable(groupVar, groupFieldVars, letHavingClause, outerScopeVars,
- unmappedVars);
+ rewriteExpressionUsingGroupVariable(letHavingClause, groupVar, groupVarFieldMap,
+ preGroupContextVars, preGroupUnmappedVars, outerVars);
switch (letHavingClause.getClauseType()) {
case LET_CLAUSE:
LetClause letClause = (LetClause) letHavingClause;
Collection<VariableExpr> freeVariablesInClause =
SqlppVariableUtil.getFreeVariables(letClause.getBindingExpr());
- freeVariablesInClause.removeAll(visibleVarsInCurrentScope);
+ freeVariablesInClause.removeAll(groupByBindingVars);
freeVariablesInGbyLets.addAll(freeVariablesInClause);
- visibleVarsInCurrentScope.add(letClause.getVarExpr());
+ groupByBindingVars.add(letClause.getVarExpr());
break;
case HAVING_CLAUSE:
freeVariables.addAll(SqlppVariableUtil.getFreeVariables(letHavingClause));
@@ -144,16 +152,16 @@
// Rewrites the ORDER BY clause.
OrderbyClause orderbyClause = parentSelectExpression.getOrderbyClause();
orderbyClause.accept(this, arg);
- rewriteExpressionUsingGroupVariable(groupVar, groupFieldVars, orderbyClause, outerScopeVars,
- unmappedVars);
+ rewriteExpressionUsingGroupVariable(orderbyClause, groupVar, groupVarFieldMap, preGroupContextVars,
+ preGroupUnmappedVars, outerVars);
freeVariables.addAll(SqlppVariableUtil.getFreeVariables(orderbyClause));
}
if (parentSelectExpression.hasLimit()) {
// Rewrites the LIMIT clause.
LimitClause limitClause = parentSelectExpression.getLimitClause();
limitClause.accept(this, arg);
- rewriteExpressionUsingGroupVariable(groupVar, groupFieldVars, limitClause, outerScopeVars,
- unmappedVars);
+ rewriteExpressionUsingGroupVariable(limitClause, groupVar, groupVarFieldMap, preGroupContextVars,
+ preGroupUnmappedVars, outerVars);
freeVariables.addAll(SqlppVariableUtil.getFreeVariables(limitClause));
}
}
@@ -162,17 +170,18 @@
SelectClause selectClause = selectBlock.getSelectClause();
selectClause.accept(this, arg);
// Rewrites the select clause.
- rewriteExpressionUsingGroupVariable(groupVar, groupFieldVars, selectClause, outerScopeVars, unmappedVars);
+ rewriteExpressionUsingGroupVariable(selectClause, groupVar, groupVarFieldMap, preGroupContextVars,
+ preGroupUnmappedVars, outerVars);
freeVariables.addAll(SqlppVariableUtil.getFreeVariables(selectClause));
- freeVariables.removeAll(visibleVarsInCurrentScope);
+ freeVariables.removeAll(groupByBindingVars);
// Gets the final free variables.
freeVariables.addAll(freeVariablesInGbyLets);
freeVariables.removeIf(SqlppVariableUtil::isExternalVariableReference);
// Gets outer scope variables.
- Collection<VariableExpr> decorVars = scopeChecker.getCurrentScope().getLiveVariables();
- decorVars.removeAll(visibleVarsInCurrentScope);
+ Collection<VariableExpr> decorVars = scopeChecker.getCurrentScope().getLiveVariables().keySet();
+ decorVars.removeAll(groupByBindingVars);
// Only retains used free variables.
if (!decorVars.containsAll(freeVariables)) {
@@ -203,33 +212,34 @@
return null;
}
- private Map<Expression, Identifier> getGroupFieldVariables(GroupbyClause groupbyClause) {
- return groupbyClause.hasGroupFieldList()
- ? SqlppVariableUtil.createFieldVariableMap(groupbyClause.getGroupFieldList()) : Collections.emptyMap();
+ static Map<VariableExpr, Identifier> createGroupVarFieldMap(List<Pair<Expression, Identifier>> fieldList) {
+ Map<VariableExpr, Identifier> fieldVars = new HashMap<>();
+ for (Pair<Expression, Identifier> p : fieldList) {
+ if (p.first.getKind() == Expression.Kind.VARIABLE_EXPRESSION) {
+ fieldVars.put((VariableExpr) p.first, p.second);
+ }
+ }
+ return fieldVars;
}
/**
* Returns variables of the current SELECT block that were defined before GROUP BY clause but were not mapped by
* GROUP AS sub-clause. These variables cannot be used by SQL aggregate functions after the GROUP BY
*/
- private Set<VariableExpr> getUnmappedVariables(Set<VariableExpr> preGroupByScopeVariables,
- Set<VariableExpr> outerScopeVariables, Map<Expression, Identifier> groupFieldVariables) {
- Set<VariableExpr> result = new HashSet<>(preGroupByScopeVariables);
- result.removeAll(outerScopeVariables);
- for (Expression expr : groupFieldVariables.keySet()) {
- if (expr.getKind() == Expression.Kind.VARIABLE_EXPRESSION) {
- result.remove(expr);
- }
- }
+ private Set<VariableExpr> getUnmappedVariables(Set<VariableExpr> preGroupByVars,
+ Set<VariableExpr> preGroupByMappedVars, Set<VariableExpr> outerVars) {
+ Set<VariableExpr> result = new HashSet<>(preGroupByVars);
+ result.removeAll(preGroupByMappedVars);
+ result.removeAll(outerVars);
return result;
}
// Applying sugar rewriting for group-by.
- private void rewriteExpressionUsingGroupVariable(VariableExpr groupVar, Map<Expression, Identifier> fieldVars,
- ILangExpression expr, Set<VariableExpr> outerScopeVariables, Set<VariableExpr> prohibitVars)
- throws CompilationException {
- Sql92AggregateFunctionVisitor visitor =
- new Sql92AggregateFunctionVisitor(context, groupVar, fieldVars, outerScopeVariables, prohibitVars);
+ private void rewriteExpressionUsingGroupVariable(ILangExpression expr, VariableExpr groupVar,
+ Map<VariableExpr, Identifier> groupVarFieldMap, Set<VariableExpr> preGroupContextVars,
+ Set<VariableExpr> preGroupUnmappedVars, Set<VariableExpr> outerVars) throws CompilationException {
+ Sql92AggregateFunctionVisitor visitor = new Sql92AggregateFunctionVisitor(context, groupVar, groupVarFieldMap,
+ preGroupContextVars, preGroupUnmappedVars, outerVars);
expr.accept(visitor, null);
}
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppWindowAggregationSugarVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppWindowAggregationSugarVisitor.java
index 597a1ab..a5f43b6 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppWindowAggregationSugarVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppWindowAggregationSugarVisitor.java
@@ -30,6 +30,7 @@
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.base.ILangExpression;
+import org.apache.asterix.lang.common.context.Scope;
import org.apache.asterix.lang.common.expression.VariableExpr;
import org.apache.asterix.lang.common.rewrites.LangRewritingContext;
import org.apache.asterix.lang.common.struct.Identifier;
@@ -99,11 +100,17 @@
}
void wrapAggregationArguments(WindowExpression winExpr, int limit) throws CompilationException {
- Set<VariableExpr> liveVars = scopeChecker.getCurrentScope().getLiveVariables();
-
VariableExpr winVar = winExpr.getWindowVar();
+
+ Map<VariableExpr, Set<? extends Scope.SymbolAnnotation>> liveAnnotatedVars =
+ scopeChecker.getCurrentScope().getLiveVariables();
+ Set<VariableExpr> liveVars = liveAnnotatedVars.keySet();
+ Set<VariableExpr> liveContextVars = Scope.findVariablesAnnotatedBy(liveVars,
+ SqlppVariableAnnotation.CONTEXT_VARIABLE, liveAnnotatedVars, winExpr.getSourceLocation());
+
List<Pair<Expression, Identifier>> winFieldList = winExpr.getWindowFieldList();
- Map<Expression, Identifier> fieldMap = SqlppVariableUtil.createFieldVariableMap(winFieldList);
+ Map<VariableExpr, Identifier> winVarFieldMap =
+ SqlppGroupByAggregationSugarVisitor.createGroupVarFieldMap(winFieldList);
List<Expression> exprList = winExpr.getExprList();
int n = exprList.size();
@@ -111,7 +118,7 @@
for (int i = 0; i < n; i++) {
Expression expr = exprList.get(i);
Expression newExpr = i < limit ? Sql92AggregateFunctionVisitor.wrapAggregationArgument(expr, winVar,
- fieldMap, liveVars, null, context) : expr;
+ winVarFieldMap, liveContextVars, null, liveVars, context) : expr;
newExprList.add(newExpr);
}
winExpr.setExprList(newExprList);
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
index 45a18e8..b883af5 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
@@ -22,6 +22,7 @@
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.asterix.common.exceptions.CompilationException;
@@ -30,6 +31,7 @@
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.base.Expression.Kind;
import org.apache.asterix.lang.common.base.ILangExpression;
+import org.apache.asterix.lang.common.context.Scope;
import org.apache.asterix.lang.common.expression.CallExpr;
import org.apache.asterix.lang.common.expression.FieldAccessor;
import org.apache.asterix.lang.common.expression.LiteralExpr;
@@ -58,7 +60,8 @@
protected final MetadataProvider metadataProvider;
/**
- * @param context, manages ids of variables and guarantees uniqueness of variables.
+ * @param context,
+ * manages ids of variables and guarantees uniqueness of variables.
*/
public VariableCheckAndRewriteVisitor(LangRewritingContext context, MetadataProvider metadataProvider,
Collection<VarIdentifier> externalVars) {
@@ -70,7 +73,7 @@
public Expression visit(FieldAccessor fa, ILangExpression parent) throws CompilationException {
Expression leadingExpr = fa.getExpr();
if (leadingExpr.getKind() != Kind.VARIABLE_EXPRESSION) {
- fa.setExpr(leadingExpr.accept(this, fa));
+ fa.setExpr(leadingExpr.accept(this, parent));
return fa;
} else {
VariableExpr varExpr = (VariableExpr) leadingExpr;
@@ -78,7 +81,7 @@
Expression resolvedExpr = resolve(varExpr,
/* Resolves within the dataverse that has the same name as the variable name. */
SqlppVariableUtil.toUserDefinedVariableName(varExpr.getVar().getValue()).getValue(), lastIdentifier,
- fa, parent);
+ parent);
if (resolvedExpr.getKind() == Kind.CALL_EXPRESSION) {
CallExpr callExpr = (CallExpr) resolvedExpr;
if (callExpr.getFunctionSignature().equals(FN_DATASET)) {
@@ -94,12 +97,12 @@
@Override
public Expression visit(VariableExpr varExpr, ILangExpression parent) throws CompilationException {
return resolve(varExpr, metadataProvider.getDefaultDataverseName(),
- SqlppVariableUtil.toUserDefinedVariableName(varExpr.getVar().getValue()).getValue(), varExpr, parent);
+ SqlppVariableUtil.toUserDefinedVariableName(varExpr.getVar().getValue()).getValue(), parent);
}
// Resolve a variable expression with dataverse name and dataset name.
- private Expression resolve(VariableExpr varExpr, String dataverseName, String datasetName,
- Expression originalExprWithUndefinedIdentifier, ILangExpression parent) throws CompilationException {
+ private Expression resolve(VariableExpr varExpr, String dataverseName, String datasetName, ILangExpression parent)
+ throws CompilationException {
VarIdentifier varId = varExpr.getVar();
String varName = varId.getValue();
@@ -117,23 +120,20 @@
SqlppVariableUtil.variableNameToDisplayedFieldName(varId.getValue()));
}
- boolean resolveToDatasetOnly = resolveToDatasetOnly(originalExprWithUndefinedIdentifier, parent);
- if (resolveToDatasetOnly) {
+ boolean resolveToDataset = parent.accept(CheckDatasetOnlyResolutionVisitor.INSTANCE, varExpr);
+ if (resolveToDataset) {
+ // resolve the undefined identifier reference as a dataset access.
+ // for a From/Join/UNNEST/Quantifiers binding expression
return resolveAsDataset(dataverseName, datasetName, sourceLoc);
- }
-
- Set<VariableExpr> localVars = scopeChecker.getCurrentScope().getLiveVariables(scopeChecker.getPrecedingScope(),
- context::isExcludedForFieldAccessVar);
- switch (localVars.size()) {
- case 0:
- return resolveAsDataset(dataverseName, datasetName, sourceLoc);
- case 1:
- return resolveAsFieldAccess(localVars.iterator().next(),
- SqlppVariableUtil.toUserDefinedVariableName(varName).getValue(), sourceLoc);
- default:
- // More than one possibilities.
- throw new CompilationException(ErrorCode.AMBIGUOUS_IDENTIFIER, sourceLoc,
- SqlppVariableUtil.toUserDefinedVariableName(varName).getValue());
+ } else {
+ // resolve the undefined identifier reference as a field access on a context variable
+ Map<VariableExpr, Set<? extends Scope.SymbolAnnotation>> localVars =
+ scopeChecker.getCurrentScope().getLiveVariables(scopeChecker.getPrecedingScope());
+ Set<VariableExpr> contextVars = Scope.findVariablesAnnotatedBy(localVars.keySet(),
+ SqlppVariableAnnotation.CONTEXT_VARIABLE, localVars, sourceLoc);
+ VariableExpr contextVar = pickContextVar(contextVars, varExpr);
+ String fieldName = SqlppVariableUtil.toUserDefinedVariableName(varId.getValue()).getValue();
+ return resolveAsFieldAccess(contextVar, fieldName, sourceLoc);
}
}
@@ -149,7 +149,7 @@
throws CompilationException {
Dataset dataset = findDataset(dataverseName, datasetName, sourceLoc);
if (dataset == null) {
- throwUnresolvableError(dataverseName, datasetName, sourceLoc);
+ throw createUnresolvableError(dataverseName, datasetName, sourceLoc);
}
metadataProvider.addAccessedDataset(dataset);
List<Expression> argList = new ArrayList<>(1);
@@ -169,23 +169,15 @@
return callExpr;
}
- private void throwUnresolvableError(String dataverseName, String datasetName, SourceLocation sourceLoc)
- throws CompilationException {
+ private CompilationException createUnresolvableError(String dataverseName, String datasetName,
+ SourceLocation sourceLoc) {
String defaultDataverseName = metadataProvider.getDefaultDataverseName();
if (dataverseName == null && defaultDataverseName == null) {
- throw new CompilationException(ErrorCode.NAME_RESOLVE_UNKNOWN_DATASET, sourceLoc, datasetName);
+ return new CompilationException(ErrorCode.NAME_RESOLVE_UNKNOWN_DATASET, sourceLoc, datasetName);
}
//If no available dataset nor in-scope variable to resolve to, we throw an error.
- throw new CompilationException(ErrorCode.NAME_RESOLVE_UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
+ return new CompilationException(ErrorCode.NAME_RESOLVE_UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
dataverseName == null ? defaultDataverseName : dataverseName);
- }
-
- // For a From/Join/UNNEST/Quantifiers binding expression, we resolve the undefined identifier reference as
- // a dataset access only.
- private boolean resolveToDatasetOnly(Expression originalExpressionWithUndefinedIdentifier, ILangExpression parent)
- throws CompilationException {
- CheckDatasetOnlyResolutionVisitor visitor = new CheckDatasetOnlyResolutionVisitor();
- return parent.accept(visitor, originalExpressionWithUndefinedIdentifier);
}
private Dataset findDataset(String dataverseName, String datasetName, SourceLocation sourceLoc)
@@ -246,4 +238,18 @@
}
return super.visit(winExpr, arg);
}
+
+ static VariableExpr pickContextVar(Collection<VariableExpr> contextVars, VariableExpr usedVar)
+ throws CompilationException {
+ switch (contextVars.size()) {
+ case 0:
+ throw new CompilationException(ErrorCode.UNDEFINED_IDENTIFIER, usedVar.getSourceLocation(),
+ SqlppVariableUtil.toUserDefinedVariableName(usedVar.getVar().getValue()).getValue());
+ case 1:
+ return contextVars.iterator().next();
+ default:
+ throw new CompilationException(ErrorCode.AMBIGUOUS_IDENTIFIER, usedVar.getSourceLocation(),
+ SqlppVariableUtil.toUserDefinedVariableName(usedVar.getVar().getValue()).getValue());
+ }
+ }
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppVariableUtil.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppVariableUtil.java
index a186cba..b344ac9 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppVariableUtil.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppVariableUtil.java
@@ -20,10 +20,8 @@
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import org.apache.asterix.common.exceptions.CompilationException;
@@ -190,14 +188,6 @@
}
}
return bindingVars;
- }
-
- public static Map<Expression, Identifier> createFieldVariableMap(List<Pair<Expression, Identifier>> fieldList) {
- Map<Expression, Identifier> fieldVars = new HashMap<>();
- for (Pair<Expression, Identifier> p : fieldList) {
- fieldVars.put(p.first, p.second);
- }
- return fieldVars;
}
public static void addToFieldVariableList(VariableExpr varExpr, List<Pair<Expression, Identifier>> outFieldList) {
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckDatasetOnlyResolutionVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckDatasetOnlyResolutionVisitor.java
index c7b685e..e4ccef5 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckDatasetOnlyResolutionVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckDatasetOnlyResolutionVisitor.java
@@ -39,6 +39,7 @@
import org.apache.asterix.lang.common.expression.UnaryExpr;
import org.apache.asterix.lang.common.expression.VariableExpr;
import org.apache.asterix.lang.common.statement.FunctionDecl;
+import org.apache.asterix.lang.common.statement.InsertStatement;
import org.apache.asterix.lang.common.statement.Query;
import org.apache.asterix.lang.common.struct.QuantifiedPair;
import org.apache.asterix.lang.sqlpp.clause.FromClause;
@@ -56,75 +57,47 @@
import org.apache.asterix.lang.sqlpp.expression.CaseExpression;
import org.apache.asterix.lang.sqlpp.expression.SelectExpression;
import org.apache.asterix.lang.sqlpp.expression.WindowExpression;
+import org.apache.asterix.lang.sqlpp.util.SqlppVariableUtil;
import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppQueryExpressionVisitor;
/**
* This class checks whether a reference to an undefined identifier (the second parameter of the visit method)
* that is directly enclosed in the first parameter of the visit method should only be resolved to a dataset.
*/
-public class CheckDatasetOnlyResolutionVisitor extends AbstractSqlppQueryExpressionVisitor<Boolean, ILangExpression> {
+public final class CheckDatasetOnlyResolutionVisitor
+ extends AbstractSqlppQueryExpressionVisitor<Boolean, VariableExpr> {
- @Override
- public Boolean visit(Query q, ILangExpression expr) throws CompilationException {
- return false;
+ public static final CheckDatasetOnlyResolutionVisitor INSTANCE = new CheckDatasetOnlyResolutionVisitor();
+
+ private CheckDatasetOnlyResolutionVisitor() {
}
@Override
- public Boolean visit(FunctionDecl fd, ILangExpression expr) throws CompilationException {
- return false;
+ public Boolean visit(FromTerm fromTerm, VariableExpr arg) throws CompilationException {
+ return contains(fromTerm.getLeftExpression(), arg);
}
@Override
- public Boolean visit(LiteralExpr l, ILangExpression expr) throws CompilationException {
- return false;
+ public Boolean visit(JoinClause joinClause, VariableExpr arg) throws CompilationException {
+ return contains(joinClause.getRightExpression(), arg);
}
@Override
- public Boolean visit(VariableExpr v, ILangExpression expr) throws CompilationException {
- return false;
+ public Boolean visit(NestClause nestClause, VariableExpr arg) throws CompilationException {
+ return contains(nestClause.getRightExpression(), arg);
}
@Override
- public Boolean visit(ListConstructor lc, ILangExpression expr) throws CompilationException {
- return false;
+ public Boolean visit(UnnestClause unnestClause, VariableExpr arg) throws CompilationException {
+ return contains(unnestClause.getRightExpression(), arg);
}
@Override
- public Boolean visit(RecordConstructor rc, ILangExpression expr) throws CompilationException {
- return false;
- }
-
- @Override
- public Boolean visit(OperatorExpr ifbo, ILangExpression expr) throws CompilationException {
- return false;
- }
-
- @Override
- public Boolean visit(FieldAccessor fa, ILangExpression expr) throws CompilationException {
- return false;
- }
-
- @Override
- public Boolean visit(IndexAccessor ia, ILangExpression expr) throws CompilationException {
- return false;
- }
-
- @Override
- public Boolean visit(ListSliceExpression expression, ILangExpression expr) throws CompilationException {
- return false;
- }
-
- @Override
- public Boolean visit(IfExpr ifexpr, ILangExpression expr) throws CompilationException {
- return false;
- }
-
- @Override
- public Boolean visit(QuantifiedExpression qe, ILangExpression expr) throws CompilationException {
+ public Boolean visit(QuantifiedExpression qe, VariableExpr arg) throws CompilationException {
for (QuantifiedPair qp : qe.getQuantifiedList()) {
// If the target reference of undefined variable is a binding expression in a quantified pair,
// then we only resolve it to dataset.
- if (expr == qp.getExpr()) {
+ if (contains(qp.getExpr(), arg)) {
return true;
}
}
@@ -132,112 +105,156 @@
}
@Override
- public Boolean visit(UnaryExpr u, ILangExpression expr) throws CompilationException {
+ public Boolean visit(Query q, VariableExpr arg) throws CompilationException {
+ return contains(q, arg);
+ }
+
+ @Override
+ public Boolean visit(InsertStatement insert, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(CallExpr pf, ILangExpression expr) throws CompilationException {
+ public Boolean visit(FunctionDecl fd, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(LetClause lc, ILangExpression expr) throws CompilationException {
+ public Boolean visit(LiteralExpr l, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(WhereClause wc, ILangExpression expr) throws CompilationException {
+ public Boolean visit(VariableExpr v, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(OrderbyClause oc, ILangExpression expr) throws CompilationException {
+ public Boolean visit(ListConstructor lc, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(GroupbyClause gc, ILangExpression expr) throws CompilationException {
+ public Boolean visit(RecordConstructor rc, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(LimitClause lc, ILangExpression expr) throws CompilationException {
+ public Boolean visit(OperatorExpr ifbo, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(FromClause fromClause, ILangExpression expr) throws CompilationException {
+ public Boolean visit(FieldAccessor fa, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(FromTerm fromTerm, ILangExpression expr) throws CompilationException {
- return expr == fromTerm.getLeftExpression();
- }
-
- @Override
- public Boolean visit(JoinClause joinClause, ILangExpression expr) throws CompilationException {
- return expr == joinClause.getRightExpression();
- }
-
- @Override
- public Boolean visit(NestClause nestClause, ILangExpression expr) throws CompilationException {
- return expr == nestClause.getRightExpression();
- }
-
- @Override
- public Boolean visit(Projection projection, ILangExpression expr) throws CompilationException {
+ public Boolean visit(IndexAccessor ia, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(SelectBlock selectBlock, ILangExpression expr) throws CompilationException {
+ public Boolean visit(ListSliceExpression expression, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(SelectClause selectClause, ILangExpression expr) throws CompilationException {
+ public Boolean visit(IfExpr ifexpr, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(SelectElement selectElement, ILangExpression expr) throws CompilationException {
+ public Boolean visit(UnaryExpr u, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(SelectRegular selectRegular, ILangExpression expr) throws CompilationException {
+ public Boolean visit(CallExpr pf, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(SelectSetOperation selectSetOperation, ILangExpression expr) throws CompilationException {
+ public Boolean visit(LetClause lc, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(SelectExpression selectStatement, ILangExpression expr) throws CompilationException {
+ public Boolean visit(WhereClause wc, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(UnnestClause unnestClause, ILangExpression expr) throws CompilationException {
- return expr == unnestClause.getRightExpression();
- }
-
- @Override
- public Boolean visit(HavingClause havingClause, ILangExpression expr) throws CompilationException {
+ public Boolean visit(OrderbyClause oc, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(CaseExpression caseExpr, ILangExpression arg) throws CompilationException {
+ public Boolean visit(GroupbyClause gc, VariableExpr arg) throws CompilationException {
return false;
}
@Override
- public Boolean visit(WindowExpression windowExpression, ILangExpression arg) throws CompilationException {
+ public Boolean visit(LimitClause lc, VariableExpr arg) throws CompilationException {
return false;
}
+
+ @Override
+ public Boolean visit(FromClause fromClause, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(Projection projection, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(SelectBlock selectBlock, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(SelectClause selectClause, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(SelectElement selectElement, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(SelectRegular selectRegular, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(SelectSetOperation selectSetOperation, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(SelectExpression selectStatement, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(HavingClause havingClause, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(CaseExpression caseExpr, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ @Override
+ public Boolean visit(WindowExpression windowExpression, VariableExpr arg) throws CompilationException {
+ return false;
+ }
+
+ private boolean contains(ILangExpression expr, VariableExpr var) throws CompilationException {
+ return SqlppVariableUtil.getFreeVariables(expr).contains(var);
+ }
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java
index 8650eec..68f18d6 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java
@@ -19,6 +19,8 @@
package org.apache.asterix.lang.sqlpp.visitor.base;
import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
@@ -63,8 +65,7 @@
protected final LangRewritingContext context;
/**
- * @param context,
- * manages ids of variables and guarantees uniqueness of variables.
+ * @param context, manages ids of variables and guarantees uniqueness of variables.
*/
public AbstractSqlppExpressionScopingVisitor(LangRewritingContext context) {
this(context, null);
@@ -101,13 +102,15 @@
@Override
public Expression visit(FromTerm fromTerm, ILangExpression arg) throws CompilationException {
- scopeChecker.createNewScope();
// Visit the left expression of a from term.
fromTerm.setLeftExpression(visit(fromTerm.getLeftExpression(), fromTerm));
+ scopeChecker.createNewScope();
+
// Registers the data item variable.
VariableExpr leftVar = fromTerm.getLeftVariable();
- addNewVarSymbolToScope(scopeChecker.getCurrentScope(), leftVar.getVar(), leftVar.getSourceLocation());
+ addNewVarSymbolToScope(scopeChecker.getCurrentScope(), leftVar.getVar(), leftVar.getSourceLocation(),
+ SqlppVariableAnnotation.CONTEXT_VARIABLE);
// Registers the positional variable
if (fromTerm.hasPositionalVariable()) {
@@ -132,7 +135,8 @@
// Registers the data item variable.
VariableExpr rightVar = joinClause.getRightVariable();
- addNewVarSymbolToScope(scopeChecker.getCurrentScope(), rightVar.getVar(), rightVar.getSourceLocation());
+ addNewVarSymbolToScope(scopeChecker.getCurrentScope(), rightVar.getVar(), rightVar.getSourceLocation(),
+ SqlppVariableAnnotation.CONTEXT_VARIABLE);
if (joinClause.hasPositionalVariable()) {
// Registers the positional variable.
@@ -158,7 +162,8 @@
// Registers the data item variable.
VariableExpr rightVar = nestClause.getRightVariable();
- addNewVarSymbolToScope(scopeChecker.getCurrentScope(), rightVar.getVar(), rightVar.getSourceLocation());
+ addNewVarSymbolToScope(scopeChecker.getCurrentScope(), rightVar.getVar(), rightVar.getSourceLocation(),
+ SqlppVariableAnnotation.CONTEXT_VARIABLE);
if (nestClause.hasPositionalVariable()) {
// Registers the positional variable.
@@ -178,7 +183,8 @@
// register the data item variable
VariableExpr rightVar = unnestClause.getRightVariable();
- addNewVarSymbolToScope(scopeChecker.getCurrentScope(), rightVar.getVar(), rightVar.getSourceLocation());
+ addNewVarSymbolToScope(scopeChecker.getCurrentScope(), rightVar.getVar(), rightVar.getSourceLocation(),
+ SqlppVariableAnnotation.CONTEXT_VARIABLE);
if (unnestClause.hasPositionalVariable()) {
// register the positional variable
@@ -331,7 +337,8 @@
for (QuantifiedPair pair : qe.getQuantifiedList()) {
pair.setExpr(visit(pair.getExpr(), qe));
VariableExpr varExpr = pair.getVarExpr();
- addNewVarSymbolToScope(scopeChecker.getCurrentScope(), varExpr.getVar(), varExpr.getSourceLocation());
+ addNewVarSymbolToScope(scopeChecker.getCurrentScope(), varExpr.getVar(), varExpr.getSourceLocation(),
+ SqlppVariableAnnotation.CONTEXT_VARIABLE);
}
qe.setSatisfiesExpr(visit(qe.getSatisfiesExpr(), qe));
scopeChecker.removeCurrentScope();
@@ -365,7 +372,8 @@
// Registers the (inserted) data item variable.
VariableExpr bindingVar = insertStatement.getVar();
if (bindingVar != null) {
- addNewVarSymbolToScope(scopeChecker.getCurrentScope(), bindingVar.getVar(), bindingVar.getSourceLocation());
+ addNewVarSymbolToScope(scopeChecker.getCurrentScope(), bindingVar.getVar(), bindingVar.getSourceLocation(),
+ SqlppVariableAnnotation.CONTEXT_VARIABLE);
}
// Visits the expression for the returning expression.
@@ -393,13 +401,20 @@
}
// Adds a new encountered alias identifier into a scope
- private void addNewVarSymbolToScope(Scope scope, VarIdentifier var, SourceLocation sourceLoc)
- throws CompilationException {
+ private void addNewVarSymbolToScope(Scope scope, VarIdentifier var, SourceLocation sourceLoc,
+ SqlppVariableAnnotation... varAnnotations) throws CompilationException {
if (scope.findLocalSymbol(var.getValue()) != null) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
"Duplicate alias definitions: " + SqlppVariableUtil.toUserDefinedName(var.getValue()));
}
- scope.addNewVarSymbolToScope(var);
+ Set<SqlppVariableAnnotation> annotations;
+ if (varAnnotations == null || varAnnotations.length == 0) {
+ annotations = Collections.emptySet();
+ } else {
+ annotations = EnumSet.noneOf(SqlppVariableAnnotation.class);
+ Collections.addAll(annotations, varAnnotations);
+ }
+ scope.addNewVarSymbolToScope(var, annotations);
}
// Merges <code>scopeToBeMerged</code> into <code>hostScope</code>.
@@ -414,4 +429,16 @@
}
hostScope.merge(scopeToBeMerged);
}
+
+ public enum SqlppVariableAnnotation implements Scope.SymbolAnnotation {
+ /**
+ * Context variables are those that participate in the second stage of the name resolution process.
+ * A single name identifier is first attempted to be resolved as a variable reference. If that fails
+ * because there's no variable with such name then (second stage) it's resolved as a field access on a context
+ * variable (if there's only one context variable defined in the local scope).
+ *
+ * See {@link org.apache.asterix.lang.sqlpp.rewrites.visitor.VariableCheckAndRewriteVisitor}
+ */
+ CONTEXT_VARIABLE
+ }
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppSimpleExpressionVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppSimpleExpressionVisitor.java
index f9a5061..0428a73 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppSimpleExpressionVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppSimpleExpressionVisitor.java
@@ -202,7 +202,7 @@
@Override
public Expression visit(OrderbyClause oc, ILangExpression arg) throws CompilationException {
- oc.setOrderbyList(visit(oc.getOrderbyList(), arg));
+ oc.setOrderbyList(visit(oc.getOrderbyList(), oc));
return null;
}
@@ -272,8 +272,8 @@
@Override
public Expression visit(RecordConstructor rc, ILangExpression arg) throws CompilationException {
for (FieldBinding binding : rc.getFbList()) {
- binding.setLeftExpr(visit(binding.getLeftExpr(), rc));
- binding.setRightExpr(visit(binding.getRightExpr(), rc));
+ binding.setLeftExpr(visit(binding.getLeftExpr(), arg));
+ binding.setRightExpr(visit(binding.getRightExpr(), arg));
}
return rc;
}
@@ -286,9 +286,9 @@
@Override
public Expression visit(IfExpr ifExpr, ILangExpression arg) throws CompilationException {
- ifExpr.setCondExpr(visit(ifExpr.getCondExpr(), ifExpr));
- ifExpr.setThenExpr(visit(ifExpr.getThenExpr(), ifExpr));
- ifExpr.setElseExpr(visit(ifExpr.getElseExpr(), ifExpr));
+ ifExpr.setCondExpr(visit(ifExpr.getCondExpr(), arg));
+ ifExpr.setThenExpr(visit(ifExpr.getThenExpr(), arg));
+ ifExpr.setElseExpr(visit(ifExpr.getElseExpr(), arg));
return ifExpr;
}
@@ -314,7 +314,7 @@
@Override
public Expression visit(UnaryExpr u, ILangExpression arg) throws CompilationException {
- u.setExpr(visit(u.getExpr(), u));
+ u.setExpr(visit(u.getExpr(), arg));
return u;
}
@@ -328,16 +328,16 @@
protected void visitWindowExpressionExcludingExprList(WindowExpression winExpr, ILangExpression arg)
throws CompilationException {
if (winExpr.hasPartitionList()) {
- winExpr.setPartitionList(visit(winExpr.getPartitionList(), winExpr));
+ winExpr.setPartitionList(visit(winExpr.getPartitionList(), arg));
}
if (winExpr.hasOrderByList()) {
- winExpr.setOrderbyList(visit(winExpr.getOrderbyList(), winExpr));
+ winExpr.setOrderbyList(visit(winExpr.getOrderbyList(), arg));
}
if (winExpr.hasFrameStartExpr()) {
- winExpr.setFrameStartExpr(visit(winExpr.getFrameStartExpr(), winExpr));
+ winExpr.setFrameStartExpr(visit(winExpr.getFrameStartExpr(), arg));
}
if (winExpr.hasFrameEndExpr()) {
- winExpr.setFrameEndExpr(visit(winExpr.getFrameEndExpr(), winExpr));
+ winExpr.setFrameEndExpr(visit(winExpr.getFrameEndExpr(), arg));
}
if (winExpr.hasWindowFieldList()) {
for (Pair<Expression, Identifier> field : winExpr.getWindowFieldList()) {
@@ -348,13 +348,13 @@
@Override
public Expression visit(FieldAccessor fa, ILangExpression arg) throws CompilationException {
- fa.setExpr(visit(fa.getExpr(), fa));
+ fa.setExpr(visit(fa.getExpr(), arg));
return fa;
}
@Override
public Expression visit(IndexAccessor ia, ILangExpression arg) throws CompilationException {
- ia.setExpr(visit(ia.getExpr(), ia));
+ ia.setExpr(visit(ia.getExpr(), arg));
if (ia.getIndexExpr() != null) {
ia.setIndexExpr(visit(ia.getIndexExpr(), arg));
}
@@ -363,7 +363,7 @@
@Override
public Expression visit(ListSliceExpression expression, ILangExpression arg) throws CompilationException {
- expression.setExpr(visit(expression.getExpr(), expression));
+ expression.setExpr(visit(expression.getExpr(), arg));
expression.setStartIndexExpression(visit(expression.getStartIndexExpression(), arg));
// End index expression can be null (optional)
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index 05b88cc..765e97b 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -1088,8 +1088,9 @@
query = Query(false)
( <RETURNING> returnExpression = Expression())?
{
- if (returnExpression != null && var == null) {
- var = ExpressionToVariableUtil.getGeneratedVariable(query.getBody(), true);
+ if (var == null && returnExpression != null) {
+ var = new VariableExpr(SqlppVariableUtil.toInternalVariableIdentifier(nameComponents.second.getValue()));
+ addSourceLocation(var, startToken);
}
query.setTopLevel(true);
InsertStatement stmt = new InsertStatement(nameComponents.first, nameComponents.second, query, getVarCounter(),
@@ -1111,8 +1112,9 @@
query = Query(false)
( <RETURNING> returnExpression = Expression())?
{
- if (returnExpression != null && var == null) {
- var = ExpressionToVariableUtil.getGeneratedVariable(query.getBody(), true);
+ if (var == null && returnExpression != null) {
+ var = new VariableExpr(SqlppVariableUtil.toInternalVariableIdentifier(nameComponents.second.getValue()));
+ addSourceLocation(var, startToken);
}
query.setTopLevel(true);
UpsertStatement stmt = new UpsertStatement(nameComponents.first, nameComponents.second, query, getVarCounter(),
@@ -1124,23 +1126,20 @@
DeleteStatement DeleteStatement() throws ParseException:
{
Token startToken = null;
- VariableExpr varExpr = null;
+ VariableExpr var = null;
Expression condition = null;
Pair<Identifier, Identifier> nameComponents;
}
{
<DELETE> { startToken = token; }
- <FROM> nameComponents = QualifiedName()
- ((<AS>)? varExpr = Variable())?
+ <FROM> nameComponents = QualifiedName() ((<AS>)? var = Variable())?
(<WHERE> condition = Expression())?
{
- if(varExpr == null){
- varExpr = new VariableExpr();
- VarIdentifier var = SqlppVariableUtil.toInternalVariableIdentifier(nameComponents.second.getValue());
- varExpr.setVar(var);
- addSourceLocation(varExpr, startToken);
+ if (var == null) {
+ var = new VariableExpr(SqlppVariableUtil.toInternalVariableIdentifier(nameComponents.second.getValue()));
+ addSourceLocation(var, startToken);
}
- DeleteStatement stmt = new DeleteStatement(varExpr, nameComponents.first, nameComponents.second,
+ DeleteStatement stmt = new DeleteStatement(var, nameComponents.first, nameComponents.second,
condition, getVarCounter());
return addSourceLocation(stmt, startToken);
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-sql-execution/5527/ (11/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/8293/
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-sql-execution/5518/ (14/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-storage/6099/ (11/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Anon. E. Moose (Code Review)" <do...@asterixdb.incubator.apache.org>.
Anon. E. Moose #1000171 has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3: Contrib-2
Analytics Compatibility Tests Failed
https://cbjenkins.page.link/4Y1HGtogr83uACgK7 : UNSTABLE
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Anon. E. Moose (Code Review)" <do...@asterixdb.incubator.apache.org>.
Anon. E. Moose #1000171 has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Analytics Compatibility Compilation Successful
https://cbjenkins.page.link/J5rTo1LJUHF1Unq76 : SUCCESS
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-assemblies/5747/ (15/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-sonar/9482/ (13/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-openjdk11/887/ (6/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-spidersilk-tests/459/ (2/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/hyracks-gerrit/5437/ (9/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-txnlog/697/ (1/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-ssl-compression/313/ (10/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Anon. E. Moose (Code Review)" <do...@asterixdb.incubator.apache.org>.
Anon. E. Moose #1000171 has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Analytics Compatibility Compilation Successful
https://cbjenkins.page.link/3h5mPTrJNt5nFrZz9 : SUCCESS
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3: Integration-Tests+1
Integration Tests Successful
https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/8302/ : SUCCESS
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Anon. E. Moose (Code Review)" <do...@asterixdb.incubator.apache.org>.
Anon. E. Moose #1000171 has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Analytics Compatibility Compilation Successful
https://cbjenkins.page.link/MeSHqXzWQEicLvbJA : SUCCESS
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-stabilization-f69489-compat/809/ (5/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/11013/ (7/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Dmitry Lychagin (Code Review)" <do...@asterixdb.incubator.apache.org>.
Hello Anon. E. Moose #1000171, Jenkins,
I'd like you to reexamine a change. Please visit
https://asterix-gerrit.ics.uci.edu/3322
to look at the new patch set (#2).
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
[ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
- user model changes: yes
- storage format changes: no
- interface changes: no
Details:
- Variables introduced by LET clauses should not be
considered by "Single Variable Resolution" rule
- In INSERT/UPSERT statements with RETURNING expression
the automatically introduced variable should be named
as the target dataset
- Refactor VariableCheckAndRewriteVisitor and
other code related to name resolution
- Added testcases and updated documentation
Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
---
M asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/LetFor.sqlpp
M asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/functionDecl1.sqlpp
M asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/nestedFLWOGR.sqlpp
M asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/LetFor.ast
M asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl1.ast
M asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/nestedFLWOGR.ast
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv15/cross-dv15.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.1.ddl.sqlpp
R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.3.query.sqlpp
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit/insert-returning-fieldname-implicit.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.3.query.sqlpp
R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.2.update.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.4.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.5.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.6.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.7.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.8.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.2.update.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.4.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.5.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.6.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.7.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.8.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.9.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.3.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.4.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.5.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.6.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.7.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.8.adm
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
M asterixdb/asterix-doc/src/main/markdown/sqlpp/appendix_3_resolution.md
M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/context/Scope.java
M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java
M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/AbstractSqlppExpressionExtractionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/InlineColumnAliasVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/Sql92AggregateFunctionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppWindowAggregationSugarVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppVariableUtil.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckDatasetOnlyResolutionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppSimpleExpressionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
55 files changed, 588 insertions(+), 507 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/22/3322/2
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-ensure-ancestor/3530/ (8/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-assemblies/5748/ (14/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-spidersilk-tests/465/ (16/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/8302/
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/hyracks-gerrit/5438/ (12/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-ssl-compression/307/ (15/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-format/5491/ (13/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3: Contrib+1
BAD Compatibility Tests Successful
https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/4135/ : SUCCESS
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/8301/
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-sonar/9473/ (16/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/hyracks-gerrit/5429/ (10/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/11012/ (8/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-asterix-app/5888/ (3/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-no-installer-app/5703/ (3/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-storage/6107/ (4/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-cancellation-test/5524/ (7/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-no-installer-app/5704/ (3/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-no-installer-app/5697/ (5/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-spidersilk-tests/466/ (16/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-openjdk11/895/ (7/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-sql-execution/5526/ (12/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/11004/ (9/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-txnlog/705/ (1/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Anon. E. Moose (Code Review)" <do...@asterixdb.incubator.apache.org>.
Anon. E. Moose #1000171 has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1: Contrib-2
Analytics Compatibility Tests Failed
https://cbjenkins.page.link/UFDChKk6e8uAd1zA8 : UNSTABLE
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1: Integration-Tests+1
Integration Tests Successful
https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/8293/ : SUCCESS
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-stabilization-f69489-compat/803/ (12/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-format/5500/ (4/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-sonar/9481/ (13/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-cancellation-test/5532/ (11/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/4135/
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-ensure-ancestor/3538/ (6/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-format/5499/ (2/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-cancellation-test/5533/ (9/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-stabilization-f69489-compat/810/ (10/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-ssl-compression/314/ (2/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 2:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-asterix-app/5896/ (14/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-ensure-ancestor/3539/ (8/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-txnlog/706/ (1/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [NO ISSUE] Name resolution improvements
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [NO ISSUE] Name resolution improvements
......................................................................
Patch Set 1:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-assemblies/5739/ (4/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-storage/6108/ (5/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Ali Alsuliman (Code Review)" <de...@asterixdb.apache.org>.
Ali Alsuliman has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3: Code-Review+1
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Dmitry Lychagin (Code Review)" <do...@asterixdb.incubator.apache.org>.
Hello Anon. E. Moose #1000171, Jenkins,
I'd like you to reexamine a change. Please visit
https://asterix-gerrit.ics.uci.edu/3322
to look at the new patch set (#3).
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
[ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
- user model changes: yes
- storage format changes: no
- interface changes: no
Details:
- Variables introduced by LET clauses should not be
considered by "Single Variable Resolution" rule
- In INSERT/UPSERT statements with RETURNING expression
the automatically introduced variable should be named
as the target dataset
- Refactor VariableCheckAndRewriteVisitor and
other code related to name resolution
- Added testcases and updated documentation
Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
---
M asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/LetFor.sqlpp
M asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/functionDecl1.sqlpp
M asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/nestedFLWOGR.sqlpp
M asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/LetFor.ast
M asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl1.ast
M asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/nestedFLWOGR.ast
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv15/cross-dv15.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.1.ddl.sqlpp
R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit-2/insert-returning-fieldname-implicit-2.3.query.sqlpp
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/insert-returning-fieldname-implicit/insert-returning-fieldname-implicit.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit-2/upsert-returning-fieldname-implicit-2.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname-implicit/upsert-returning-fieldname-implicit.3.query.sqlpp
R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/upsert-returning-fieldname/upsert-returning-fieldname.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.2.update.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.4.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.5.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.6.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.7.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_1/field_accessor_1.8.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.1.ddl.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.2.update.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.3.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.4.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.5.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.6.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.7.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.8.query.sqlpp
C asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/resolution/field_accessor_2_negative/field_accessor_2_negative.9.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.3.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.4.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.5.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.6.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.7.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/resolution/field_accessor_1/field_accessor_1.8.adm
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
M asterixdb/asterix-doc/src/main/markdown/sqlpp/appendix_3_resolution.md
M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/context/Scope.java
M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java
M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/AbstractSqlppExpressionExtractionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/InlineColumnAliasVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/Sql92AggregateFunctionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppWindowAggregationSugarVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppVariableUtil.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckDatasetOnlyResolutionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppSimpleExpressionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
55 files changed, 588 insertions(+), 507 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/22/3322/3
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-openjdk11/896/ (6/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No
Change in asterixdb[master]: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Va...
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: [ASTERIXDB-2539][COMP] Exclude LET variables from "Single Variable Resolution" rule
......................................................................
Patch Set 3:
Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-asterix-app/5897/ (15/16)
--
To view, visit https://asterix-gerrit.ics.uci.edu/3322
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I9b9f70a1671378f5216ec4e30416d4d67c3df089
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <dm...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No