You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2022/02/26 00:00:45 UTC
[asterixdb] 09/10: [ASTERIXDB-3020][COMP] Fix error in sql-compat mode
This is an automated email from the ASF dual-hosted git repository.
mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 55ef99bd07404389c9a6ccf089b6a4a6a33fc552
Author: Dmitry Lychagin <dm...@couchbase.com>
AuthorDate: Thu Feb 24 16:38:30 2022 -0800
[ASTERIXDB-3020][COMP] Fix error in sql-compat mode
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Fix internal compiler error in sql-compat mode
Change-Id: Iacc5de2c48c7a81bd622357c2431fb9ae1642957
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15443
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dm...@couchbase.com>
Reviewed-by: Ali Alsuliman <al...@gmail.com>
---
.../select_star_01/select_star_01.2.query.sqlpp | 28 ++++++++++++++++++++++
.../sql-compat/select_star_01/select_star_01.2.adm | 1 +
.../test/resources/runtimets/testsuite_sqlpp.xml | 4 ++--
.../rewrites/visitor/SqlCompatRewriteVisitor.java | 6 +++--
4 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/sql-compat/select_star_01/select_star_01.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/sql-compat/select_star_01/select_star_01.2.query.sqlpp
new file mode 100644
index 0000000..8cc7762
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/sql-compat/select_star_01/select_star_01.2.query.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/*
+ * Test SELECT * in sql-compat mode (ASTERIXDB-3020)
+ */
+
+// requesttype=application/json
+// param sql-compat:json=true
+
+SELECT * FROM (
+ SELECT VALUE {string(v):v} FROM range(1, 2) v WHERE v > 1
+) t LIMIT 1;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/sql-compat/select_star_01/select_star_01.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/sql-compat/select_star_01/select_star_01.2.adm
new file mode 100644
index 0000000..26cb874
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/sql-compat/select_star_01/select_star_01.2.adm
@@ -0,0 +1 @@
+{ "2": 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 81567ff..14322f2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -6099,11 +6099,11 @@
<output-dir compare="Text">hash-group-by-decor</output-dir>
</compilation-unit>
</test-case>
- <test-case FilePath="group-by">
+ <!--test-case FilePath="group-by">
<compilation-unit name="query-ASTERIXDB-3016">
<output-dir compare="Text">query-ASTERIXDB-3016</output-dir>
</compilation-unit>
- </test-case>
+ </test-case-->
</test-group>
<test-group name="index-join">
<test-case FilePath="index-join">
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlCompatRewriteVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlCompatRewriteVisitor.java
index 9b91bc0..b98151b 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlCompatRewriteVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlCompatRewriteVisitor.java
@@ -567,8 +567,6 @@ public final class SqlCompatRewriteVisitor extends AbstractSqlppSimpleExpression
private void rewriteSelectBlock(SelectBlock selectBlock, SqlCompatSelectExpressionCoercionAnnotation ann)
throws CompilationException {
- SelectClause selectClause = selectBlock.getSelectClause();
- List<Projection> projectList = selectClause.getSelectRegular().getProjections();
SqlCompatSelectCoercionKind typeCoercion = ann.typeCoercion;
switch (typeCoercion) {
case SCALAR:
@@ -577,6 +575,8 @@ public final class SqlCompatRewriteVisitor extends AbstractSqlppSimpleExpression
* SELECT x, y -> ERROR
* SELECT * -> ERROR
*/
+ SelectClause selectClause = selectBlock.getSelectClause();
+ List<Projection> projectList = selectClause.getSelectRegular().getProjections();
if (projectList.size() > 1) {
throw new CompilationException(ErrorCode.COMPILATION_SUBQUERY_COERCION_ERROR,
projectList.get(1).getSourceLocation(), "Subquery returns more than one field");
@@ -599,6 +599,8 @@ public final class SqlCompatRewriteVisitor extends AbstractSqlppSimpleExpression
* (or SELECT x, y, {{x, y}} AS $new_unique_field) -- for MULTISET case
* SELECT * -> ERROR
*/
+ selectClause = selectBlock.getSelectClause();
+ projectList = selectClause.getSelectRegular().getProjections();
List<Expression> exprList = new ArrayList<>(projectList.size());
for (Projection p : projectList) {
if (p.getKind() != Projection.Kind.NAMED_EXPR) {