Repository: phoenix
Updated Branches:
  refs/heads/calcite 17c206434 -> b7e5ae4b1


Fix compilation error; Fix a regression due to Calcite materialization changes


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b7e5ae4b
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b7e5ae4b
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b7e5ae4b

Branch: refs/heads/calcite
Commit: b7e5ae4b17d99e13e6ff90242b8e39312d54edf5
Parents: 17c2064
Author: maryannxue <maryann....@gmail.com>
Authored: Wed Aug 2 16:13:01 2017 -0700
Committer: maryannxue <maryann....@gmail.com>
Committed: Wed Aug 2 16:13:01 2017 -0700

----------------------------------------------------------------------
 .../apache/phoenix/calcite/PhoenixPrograms.java    | 12 +-----------
 .../phoenix/calcite/PhoenixSqlConformance.java     |  5 +++++
 .../apache/phoenix/compile/QueryOptimizerTest.java | 17 ++++++++---------
 3 files changed, 14 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/b7e5ae4b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrograms.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrograms.java 
b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrograms.java
index 4c7454a..9e0412e 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrograms.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrograms.java
@@ -2,7 +2,6 @@ package org.apache.phoenix.calcite;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -144,24 +143,15 @@ public class PhoenixPrograms {
                     List<RelOptMaterialization> materializations,
                     List<RelOptLattice> lattices) {
                 final List<Pair<RelNode, List<RelOptMaterialization>>> 
materializationUses;
-                final Set<RelOptMaterialization> applicableMaterializations;
+                final Set<RelOptMaterialization> applicableMaterializations = 
Collections.emptySet();
                 final CalciteConnectionConfig config =
                         
planner.getContext().unwrap(CalciteConnectionConfig.class);
                 if (config != null && config.materializationsEnabled()) {
                     // Transform rels using materialized views.
                     materializationUses =
                             RelOptMaterializations.useMaterializedViews(rel, 
materializations);
-
-                    // Add not used but potentially useful materialized views 
to the planner.
-                    applicableMaterializations = new HashSet<>(
-                            
RelOptMaterializations.getApplicableMaterializations(
-                                    rel, materializations));
-                    for (Pair<RelNode, List<RelOptMaterialization>> use : 
materializationUses) {
-                        applicableMaterializations.removeAll(use.right);
-                    }
                 } else {
                     materializationUses = Collections.emptyList();
-                    applicableMaterializations = Collections.emptySet();
                 }
 
                 final List<RelOptRule> rules = planner.getRules();

http://git-wip-us.apache.org/repos/asf/phoenix/blob/b7e5ae4b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSqlConformance.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSqlConformance.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSqlConformance.java
index 77bd75e..9e45198 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSqlConformance.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSqlConformance.java
@@ -90,4 +90,9 @@ public class PhoenixSqlConformance implements SqlConformance {
     public boolean allowExtend() {
         return true;
     }
+
+    @Override
+    public boolean isLimitStartCountAllowed() {
+        return false;
+    }
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/b7e5ae4b/phoenix-core/src/test/java/org/apache/phoenix/compile/QueryOptimizerTest.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/test/java/org/apache/phoenix/compile/QueryOptimizerTest.java 
b/phoenix-core/src/test/java/org/apache/phoenix/compile/QueryOptimizerTest.java
index 9a624be..7aff096 100644
--- 
a/phoenix-core/src/test/java/org/apache/phoenix/compile/QueryOptimizerTest.java
+++ 
b/phoenix-core/src/test/java/org/apache/phoenix/compile/QueryOptimizerTest.java
@@ -463,7 +463,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
             strArray[1] = "CD";
             Array array = conn.createArrayOf("VARCHAR", strArray);
             stmt.setArray(counter++, array);
-            assertPlanDetails(stmt, expectedColNames, 
expectedColumnNameDataTypes, false, 0);
+            assertPlanDetails(conn, sql, expectedColNames, 
expectedColumnNameDataTypes, false, 0);
             
             counter = 1;
             // Filter on row key columns of data table. Order by row key 
columns. Limit specified.
@@ -475,7 +475,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
             stmt.setDouble(counter++, 1.23);
             array = conn.createArrayOf("VARCHAR", strArray);
             stmt.setArray(counter++, array);
-            assertPlanDetails(stmt, expectedColNames, 
expectedColumnNameDataTypes, false, 100);
+            assertPlanDetails(conn, sql, expectedColNames, 
expectedColumnNameDataTypes, false, 100);
             
             counter = 1;
             // Filter on row key columns of data table. Order by non-row key 
columns. Limit specified.
@@ -487,7 +487,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
             stmt.setDouble(counter++, 1.23);
             array = conn.createArrayOf("VARCHAR", strArray);
             stmt.setArray(counter++, array);
-            assertPlanDetails(stmt, expectedColNames, 
expectedColumnNameDataTypes, true, 100);
+            assertPlanDetails(conn, sql, expectedColNames, 
expectedColumnNameDataTypes, true, 100);
             
             if (useIndex) {
                 
@@ -498,20 +498,20 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
                 sql = "SELECT a_date FROM " + tableName + " where CF.a_integer 
= ?";
                 stmt = conn.prepareStatement(sql);
                 stmt.setInt(1, 1000);
-                assertPlanDetails(stmt, expectedColNames, 
expectedColumnNameDataTypes, false, 0);
+                assertPlanDetails(conn, sql, expectedColNames, 
expectedColumnNameDataTypes, false, 0);
 
                 // Filter on columns that the secondary index is on. Order by 
on the indexed column. Limit specified.
                 sql = "SELECT a_date FROM " + tableName + " where CF.a_integer 
= ? ORDER BY CF.a_integer LIMIT 100";
                 stmt = conn.prepareStatement(sql);
                 stmt.setInt(1, 1000);
-                assertPlanDetails(stmt, expectedColNames, 
expectedColumnNameDataTypes, false, 100);
+                assertPlanDetails(conn, sql, expectedColNames, 
expectedColumnNameDataTypes, false, 100);
 
                 // Filter on columns that the secondary index is on. Order by 
on the non-indexed column. Limit specified.
                 sql = "SELECT a_integer FROM " + tableName + " where 
CF.a_integer = ? and a_date = ? ORDER BY a_date LIMIT 100";
                 stmt = conn.prepareStatement(sql);
                 stmt.setInt(1, 1000);
                 stmt.setDate(2, new Date(909000));
-                assertPlanDetails(stmt, expectedColNames, 
expectedColumnNameDataTypes, true, 100);
+                assertPlanDetails(conn, sql, expectedColNames, 
expectedColumnNameDataTypes, true, 100);
             }
         } finally {
             conn.close();
@@ -669,9 +669,8 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         assertEquals(2 + offset, 
plan.getContext().getScanRanges().getBoundPkColumnCount());
     }
 
-    private void assertPlanDetails(PreparedStatement stmt, String 
expectedPkCols, String expectedPkColsDataTypes, boolean expectedHasOrderBy, int 
expectedLimit) throws SQLException {
-        Connection conn = stmt.getConnection();
-        QueryPlan plan = PhoenixRuntime.getOptimizedQueryPlan(stmt);
+    private void assertPlanDetails(Connection conn, String sql, String 
expectedPkCols, String expectedPkColsDataTypes, boolean expectedHasOrderBy, int 
expectedLimit) throws SQLException {
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, sql);
         
         List<Pair<String, String>> columns = 
PhoenixRuntime.getPkColsForSql(conn, plan);
         assertEquals(expectedPkCols, 
Joiner.on(",").join(getColumnNames(columns)));

Reply via email to