Repository: phoenix
Updated Branches:
  refs/heads/calcite a78e008b0 -> d9caed0a8


http://git-wip-us.apache.org/repos/asf/phoenix/blob/d9caed0a/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 6c8ac48..9a624be 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
@@ -37,13 +37,11 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 
+import 
org.apache.calcite.jdbc.PhoenixCalciteFactory.PhoenixCalcitePreparedStatement;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.Pair;
 import org.apache.phoenix.compile.OrderByCompiler.OrderBy;
-import org.apache.phoenix.jdbc.PhoenixPreparedStatement;
-import org.apache.phoenix.jdbc.PhoenixResultSet;
-import org.apache.phoenix.jdbc.PhoenixStatement;
 import org.apache.phoenix.query.BaseConnectionlessQueryTest;
 import org.apache.phoenix.query.QueryConstants;
 import org.apache.phoenix.schema.PColumn;
@@ -74,9 +72,8 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE T (k VARCHAR NOT NULL 
PRIMARY KEY, v1 CHAR(15), v2 VARCHAR)");
         conn.createStatement().execute("CREATE INDEX IDX ON T(v1, v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
         String query = "select * from t where (v1, v2, k) > ('1', '2', '3')";
-        QueryPlan plan = stmt.optimizeQuery(query);
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, query);
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
     }
 
@@ -84,8 +81,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
     public void testOrderByOptimizedOut() throws Exception {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE foo (k VARCHAR NOT NULL 
PRIMARY KEY, v VARCHAR) IMMUTABLE_ROWS=true");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT * FROM foo ORDER BY k");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT * 
FROM foo ORDER BY k");
         assertEquals(OrderBy.FWD_ROW_KEY_ORDER_BY,plan.getOrderBy());
     }
 
@@ -94,8 +90,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         try{ 
             conn.createStatement().execute("CREATE TABLE foo (k VARCHAR NOT 
NULL PRIMARY KEY, v VARCHAR) IMMUTABLE_ROWS=true");
-            PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-            QueryPlan plan = stmt.optimizeQuery("SELECT * FROM foo ORDER BY 
'a','b','c'");
+            QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT * 
FROM foo ORDER BY 'a','b','c'");
             assertTrue(plan.getOrderBy().getOrderByExpressions().isEmpty());
         } finally {
             conn.close();
@@ -106,8 +101,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
     public void testOrderByNotDropped() throws Exception {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE foo (k VARCHAR NOT NULL 
PRIMARY KEY, v VARCHAR) IMMUTABLE_ROWS=true");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT * FROM foo ORDER BY v");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT * 
FROM foo ORDER BY v");
         assertFalse(plan.getOrderBy().getOrderByExpressions().isEmpty());
     }
     
@@ -115,8 +109,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
     public void testOrderByDroppedCompositeKey() throws Exception {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE foo (j INTEGER NOT NULL, 
k BIGINT NOT NULL, v VARCHAR CONSTRAINT pk PRIMARY KEY (j,k)) 
IMMUTABLE_ROWS=true");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT * FROM foo ORDER BY j,k");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT * 
FROM foo ORDER BY j,k");
         assertEquals(OrderBy.FWD_ROW_KEY_ORDER_BY,plan.getOrderBy());
     }
 
@@ -124,8 +117,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
     public void testOrderByNotDroppedCompositeKey() throws Exception {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE foo (j INTEGER NOT NULL, 
k BIGINT NOT NULL, v VARCHAR CONSTRAINT pk PRIMARY KEY (j,k)) 
IMMUTABLE_ROWS=true");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT * FROM foo ORDER BY k,j");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT * 
FROM foo ORDER BY k,j");
         assertFalse(plan.getOrderBy().getOrderByExpressions().isEmpty());
     }
 
@@ -134,8 +126,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT k FROM t WHERE v1 = 
'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k 
FROM t WHERE v1 = 'bar'");
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
     }
 
@@ -144,8 +135,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT v1 FROM t WHERE k = 1");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT v1 
FROM t WHERE k = 1");
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -154,8 +144,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT v1,v2 FROM t WHERE v1 = 
'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT v1,v2 
FROM t WHERE v1 = 'bar'");
         // Choose T because v2 is not in index
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
@@ -165,8 +154,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT k FROM t(v3 VARCHAR) WHERE 
v1 = 'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k 
FROM t(v3 VARCHAR) WHERE v1 = 'bar'");
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -175,8 +163,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT * FROM t WHERE v1 = 
'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT * 
FROM t WHERE v1 = 'bar'");
         // Choose T because v2 is not in index
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
@@ -186,8 +173,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1) INCLUDE 
(v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT * FROM t WHERE v1 = 
'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT * 
FROM t WHERE v1 = 'bar'");
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
     }
 
@@ -196,8 +182,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT k FROM t WHERE k > 30 
ORDER BY v1 LIMIT 5");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k 
FROM t WHERE k > 30 ORDER BY v1 LIMIT 5");
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -206,8 +191,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT k FROM t WHERE k = 30 
ORDER BY v1 LIMIT 5"); // Prefer 
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k 
FROM t WHERE k = 30 ORDER BY v1 LIMIT 5"); // Prefer 
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -216,8 +200,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY DESC, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT k FROM t WHERE k > 30 
ORDER BY v1, k DESC LIMIT 5");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k 
FROM t WHERE k > 30 ORDER BY v1, k DESC LIMIT 5");
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -226,8 +209,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY DESC, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT k FROM t WHERE k > 30 
ORDER BY v1, k LIMIT 5");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k 
FROM t WHERE k > 30 ORDER BY v1, k LIMIT 5");
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -236,8 +218,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY DESC, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1, k)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT k FROM t WHERE k > 30 
ORDER BY v1, k LIMIT 5");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k 
FROM t WHERE k > 30 ORDER BY v1, k LIMIT 5");
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -246,8 +227,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY DESC, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1, k)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT k FROM t WHERE k = 30 
ORDER BY v1, k LIMIT 5");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k 
FROM t WHERE k = 30 ORDER BY v1, k LIMIT 5");
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -258,8 +238,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx1 ON t(v1) 
INCLUDE(v2)");
         conn.createStatement().execute("CREATE INDEX idx2 ON t(v1,v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT k FROM t WHERE v1 = 'foo' 
AND v2 = 'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k 
FROM t WHERE v1 = 'foo' AND v2 = 'bar'");
         assertEquals("IDX2", 
plan.getTableRef().getTable().getTableName().getString());
     }
 
@@ -269,8 +248,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx1 ON t(v1) 
INCLUDE(v2)");
         conn.createStatement().execute("CREATE INDEX idx2 ON t(v1,v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT /*+NO_INDEX*/ k FROM t 
WHERE v1 = 'foo' AND v2 = 'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT 
/*+NO_INDEX*/ k FROM t WHERE v1 = 'foo' AND v2 = 'bar'");
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -280,10 +258,9 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx1 ON t(v1) 
INCLUDE(v2)");
         conn.createStatement().execute("CREATE INDEX idx2 ON t(v1,v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT /*+ INDEX(t  idx1) */ k 
FROM t WHERE v1 = 'foo' AND v2 = 'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT /*+ 
INDEX(t  idx1) */ k FROM t WHERE v1 = 'foo' AND v2 = 'bar'");
         assertEquals("IDX1", 
plan.getTableRef().getTable().getTableName().getString());
-        plan = stmt.optimizeQuery("SELECT k FROM t WHERE v1 = 'foo' AND v2 = 
'bar'");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k FROM t WHERE 
v1 = 'foo' AND v2 = 'bar'");
         assertEquals("IDX2", 
plan.getTableRef().getTable().getTableName().getString());
     }
 
@@ -293,10 +270,9 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         conn.createStatement().execute("CREATE TABLE \"t\" (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx1 ON \"t\"(v1) 
INCLUDE(v2)");
         conn.createStatement().execute("CREATE INDEX idx2 ON \"t\"(v1,v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT /*+ INDEX(\"t\" idx1) */ k 
FROM \"t\" WHERE v1 = 'foo' AND v2 = 'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT /*+ 
INDEX(\"t\" idx1) */ k FROM \"t\" WHERE v1 = 'foo' AND v2 = 'bar'");
         assertEquals("IDX1", 
plan.getTableRef().getTable().getTableName().getString());
-        plan = stmt.optimizeQuery("SELECT k FROM \"t\" WHERE v1 = 'foo' AND v2 
= 'bar'");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k FROM \"t\" 
WHERE v1 = 'foo' AND v2 = 'bar'");
         assertEquals("IDX2", 
plan.getTableRef().getTable().getTableName().getString());
     }
 
@@ -306,10 +282,9 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         conn.createStatement().execute("CREATE TABLE \"t\" (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX \"idx1\" ON \"t\"(v1) 
INCLUDE(v2)");
         conn.createStatement().execute("CREATE INDEX \"idx2\" ON 
\"t\"(v1,v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT /*+ INDEX(\"t\" \"idx1\") 
*/ k FROM \"t\" WHERE v1 = 'foo' AND v2 = 'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT /*+ 
INDEX(\"t\" \"idx1\") */ k FROM \"t\" WHERE v1 = 'foo' AND v2 = 'bar'");
         assertEquals("idx1", 
plan.getTableRef().getTable().getTableName().getString());
-        plan = stmt.optimizeQuery("SELECT k FROM \"t\" WHERE v1 = 'foo' AND v2 
= 'bar'");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT k FROM \"t\" 
WHERE v1 = 'foo' AND v2 = 'bar'");
         assertEquals("idx2", 
plan.getTableRef().getTable().getTableName().getString());
     }
 
@@ -320,8 +295,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx1 ON t(v1) 
INCLUDE(v2)");
         conn.createStatement().execute("CREATE INDEX idx2 ON t(v1,v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT /*+ INDEX(t  \"IDX1\") 
INDEX(t  idx3) */ k FROM t WHERE v1 = 'foo' AND v2 = 'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT /*+ 
INDEX(t  \"IDX1\") INDEX(t  idx3) */ k FROM t WHERE v1 = 'foo' AND v2 = 'bar'");
         assertEquals("IDX1", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -331,8 +305,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx1 ON t(v1) 
INCLUDE(v2)");
         conn.createStatement().execute("CREATE INDEX idx2 ON t(v1,v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT /*+  INDEX(t  idx3 idx4 
\"idx5\") INDEX(t idx6 idx1) */ k FROM t WHERE v1 = 'foo' AND v2 = 'bar'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT /*+  
INDEX(t  idx3 idx4 \"idx5\") INDEX(t idx6 idx1) */ k FROM t WHERE v1 = 'foo' 
AND v2 = 'bar'");
         assertEquals("IDX1", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -341,8 +314,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) IMMUTABLE_ROWS=true");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT count(*) FROM t");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT 
count(*) FROM t");
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -351,9 +323,8 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE T (k VARCHAR NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR)");
         conn.createStatement().execute("CREATE INDEX IDX ON T(v1, v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
         String query = "select * from t where (v1, v2) <= ('1', '2')";
-        QueryPlan plan = stmt.optimizeQuery(query);
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, query);
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -362,9 +333,8 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE T (k VARCHAR NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR)");
         conn.createStatement().execute("CREATE INDEX IDX ON T(v1, v2)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
         String query = "select * from t where (k, v1, v2) <= ('3', '1', '2')";
-        QueryPlan plan = stmt.optimizeQuery(query);
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, query);
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
     
@@ -436,9 +406,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
                 "CREATE TABLE TEST.TEST (testInt INTEGER, testCharArray 
CHAR(3)[], testByteArray BINARY(7)[], " +
                 "CONSTRAINT test_pk PRIMARY KEY(testInt)) 
DEFAULT_COLUMN_FAMILY='T'");
         conn.createStatement().execute("CREATE INDEX TEST_INDEX ON TEST.TEST 
(testInt) INCLUDE (testCharArray, testByteArray)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-
-        QueryPlan plan = stmt.optimizeQuery("SELECT /*+ INDEX(TEST.TEST 
TEST_INDEX)*/ testCharArray,testByteArray FROM TEST.TEST");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT /*+ 
INDEX(TEST.TEST TEST_INDEX)*/ testCharArray,testByteArray FROM TEST.TEST");
         List<PColumn> columns = plan.getTableRef().getTable().getColumns();
         assertEquals(3, columns.size());
         assertEquals(3, columns.get(1).getMaxLength().intValue());
@@ -582,7 +550,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         String sql = "SELECT a_date FROM ABC_VIEW where a_string = ?";
         PreparedStatement stmt = conn.prepareStatement(sql);
         stmt.setString(1, "1000");
-        QueryPlan plan = 
stmt.unwrap(PhoenixPreparedStatement.class).optimizeQuery();
+        QueryPlan plan = (QueryPlan) 
stmt.unwrap(PhoenixCalcitePreparedStatement.class).getQueryPlan();
         assertEquals("Query should use index", PTableType.INDEX, 
plan.getTableRef().getTable().getType());
     }
     
@@ -618,7 +586,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         String sql = "SELECT a_date FROM ABC_VIEW where a_string = ?";
         PreparedStatement stmt = conn.prepareStatement(sql);
         stmt.setString(1, "1000");
-        QueryPlan plan = 
stmt.unwrap(PhoenixPreparedStatement.class).optimizeQuery();
+        QueryPlan plan = (QueryPlan) 
stmt.unwrap(PhoenixCalcitePreparedStatement.class).getQueryPlan();
         // should not use index as index does not contain b_string
         assertEquals("Query should not use index", PTableType.VIEW, 
plan.getTableRef().getTable().getType());
     }
@@ -628,8 +596,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 VARCHAR, v2 VARCHAR)");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT COUNT(DISTINCT v1) FROM 
t");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT 
COUNT(DISTINCT v1) FROM t");
         assertTrue(plan.getGroupBy().isOrderPreserving());
         assertFalse(plan.getGroupBy().getKeyExpressions().isEmpty());
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
@@ -640,8 +607,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL 
PRIMARY KEY, v1 INTEGER, v2 VARCHAR)");
         conn.createStatement().execute("CREATE INDEX idx ON t(v1)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT COUNT(DISTINCT v1) FROM 
t");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT 
COUNT(DISTINCT v1) FROM t");
         assertTrue(plan.getGroupBy().isOrderPreserving());
         assertFalse(plan.getGroupBy().getKeyExpressions().isEmpty());
         assertEquals("IDX", 
plan.getTableRef().getTable().getTableName().getString());
@@ -652,8 +618,7 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         conn.createStatement().execute("CREATE TABLE t (k1 CHAR(3) NOT NULL, 
k2 CHAR(15) NOT NULL, k3 DATE NOT NULL, k4 CHAR(15) NOT NULL, CONSTRAINT pk 
PRIMARY KEY (k1,k2,k3,k4))");
         conn.createStatement().execute("CREATE INDEX idx ON t(k1,k3,k2,k4)");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("SELECT * FROM t WHERE 
(k1,k2,k3,k4) > ('001','001xx000003DHml',to_date('2015-10-21 
09:50:55.0'),'017xx0000022FuI')");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT * 
FROM t WHERE (k1,k2,k3,k4) > ('001','001xx000003DHml',to_date('2015-10-21 
09:50:55.0'),'017xx0000022FuI')");
         assertEquals("T", 
plan.getTableRef().getTable().getTableName().getString());
     }
 
@@ -686,22 +651,21 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, "000000000000000");
         Connection tsconn = DriverManager.getConnection(getUrl(), props);
         tsconn.createStatement().execute("CREATE VIEW MY_TABLE_MT_VIEW AS 
SELECT * FROM MY_TABLES.MY_TABLE");
-        PhoenixStatement stmt = 
tsconn.createStatement().unwrap(PhoenixStatement.class);
-        QueryPlan plan = stmt.optimizeQuery("select * from my_table_mt_view 
where (pkcol1, pkcol2, pkcol3, pkcol4) > ('0', '0', '0', '0')");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(tsconn, "select * 
from my_table_mt_view where (pkcol1, pkcol2, pkcol3, pkcol4) > ('0', '0', '0', 
'0')");
         assertEquals("MY_TABLE_MT_VIEW", 
plan.getTableRef().getTable().getTableName().getString());
         
-        plan = stmt.compileQuery("select * from my_table_mt_view where 
(pkcol1, pkcol2) > ('0', '0') and pkcol3 = '000000000000000' and pkcol4 = 
'000000000000000'");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "select * from 
my_table_mt_view where (pkcol1, pkcol2) > ('0', '0') and pkcol3 = 
'000000000000000' and pkcol4 = '000000000000000'");
         assertEquals(3 + offset, 
plan.getContext().getScanRanges().getBoundPkColumnCount());
-        plan = stmt.compileQuery("select * from my_table_mt_view where 
(pkcol3, pkcol4) > ('0', '0') and pkcol1 = '000000000000000'");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "select * from 
my_table_mt_view where (pkcol3, pkcol4) > ('0', '0') and pkcol1 = 
'000000000000000'");
         assertEquals(2 + offset, 
plan.getContext().getScanRanges().getBoundPkColumnCount());
-        plan = stmt.compileQuery("select * from my_table_mt_view where 
(pkcol1, pkcol2, pkcol3) < ('0', '0', '0')");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "select * from 
my_table_mt_view where (pkcol1, pkcol2, pkcol3) < ('0', '0', '0')");
         assertEquals(4 + offset, 
plan.getContext().getScanRanges().getBoundPkColumnCount());
-        plan = stmt.compileQuery("select * from my_table_mt_view where 
(pkcol1, pkcol2, pkcol3) < ('9', '9', '9') and (pkcol1, pkcol2) > ('0', '0')");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "select * from 
my_table_mt_view where (pkcol1, pkcol2, pkcol3) < ('9', '9', '9') and (pkcol1, 
pkcol2) > ('0', '0')");
         assertEquals(4 + offset, 
plan.getContext().getScanRanges().getBoundPkColumnCount());
-        plan = stmt.compileQuery("select * from my_table_mt_view where pkcol1 
= 'a' and pkcol2 = 'b' and pkcol3 = 'c' and (pkcol1, pkcol2) < ('z', 'z')");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "select * from 
my_table_mt_view where pkcol1 = 'a' and pkcol2 = 'b' and pkcol3 = 'c' and 
(pkcol1, pkcol2) < ('z', 'z')");
         assertEquals(4 + offset, 
plan.getContext().getScanRanges().getBoundPkColumnCount());
         // TODO: in theory pkcol2 and pkcol3 could be bound, but we don't have 
the logic for that yet
-        plan = stmt.compileQuery("select * from my_table_mt_view where 
(pkcol2, pkcol3) > ('0', '0') and pkcol1 = '000000000000000'");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "select * from 
my_table_mt_view where (pkcol2, pkcol3) > ('0', '0') and pkcol1 = 
'000000000000000'");
         assertEquals(2 + offset, 
plan.getContext().getScanRanges().getBoundPkColumnCount());
     }
 
@@ -763,15 +727,14 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         String tableName = "testMintestMinMaxQualifierRange".toUpperCase();
         conn.createStatement().execute("CREATE TABLE " + tableName + " (k 
INTEGER NOT NULL PRIMARY KEY, v1 INTEGER, v2 VARCHAR) COLUMN_ENCODED_BYTES=4");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        ResultSet rs = stmt.executeQuery("SELECT K from " + tableName + " 
ORDER BY (v1)");
-        assertQualifierRanges(rs, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE);
-        rs = stmt.executeQuery("SELECT K from " + tableName + " ORDER BY (v1, 
v2)");
-        assertQualifierRanges(rs, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
-        rs = stmt.executeQuery("SELECT V2 from " + tableName + " ORDER BY 
(v1)");
-        assertQualifierRanges(rs, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
-        rs = stmt.executeQuery("SELECT V1 from " + tableName + " ORDER BY (v1, 
v2)");
-        assertQualifierRanges(rs, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
+        String query = "SELECT K from " + tableName + " ORDER BY (v1)";
+        assertQualifierRanges(conn, query, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE);
+        query = "SELECT K from " + tableName + " ORDER BY (v1, v2)";
+        assertQualifierRanges(conn, query, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
+        query = "SELECT V2 from " + tableName + " ORDER BY (v1)";
+        assertQualifierRanges(conn, query, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
+        query = "SELECT V1 from " + tableName + " ORDER BY (v1, v2)";
+        assertQualifierRanges(conn, query, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
     }
     
     @Test
@@ -779,17 +742,18 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
         Connection conn = DriverManager.getConnection(getUrl());
         String tableName = "testMintestMinMaxQualifierRange".toUpperCase();
         conn.createStatement().execute("CREATE TABLE " + tableName + " (k 
INTEGER NOT NULL PRIMARY KEY, v1 INTEGER, v2 VARCHAR) COLUMN_ENCODED_BYTES=4");
-        PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
-        ResultSet rs = stmt.executeQuery("SELECT K from " + tableName);
-        assertQualifierRanges(rs, ENCODED_CQ_COUNTER_INITIAL_VALUE, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
-        rs = stmt.executeQuery("SELECT V2 from " + tableName);
-        assertQualifierRanges(rs, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
-        rs = stmt.executeQuery("SELECT V1 from " + tableName);
-        assertQualifierRanges(rs, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE);
-    }
-    
-    private static void assertQualifierRanges(ResultSet rs, int minQualifier, 
int maxQualifier) throws SQLException {
-        Scan scan = 
rs.unwrap(PhoenixResultSet.class).getStatement().getQueryPlan().getContext().getScan();
+        String query = "SELECT K from " + tableName;
+        assertQualifierRanges(conn, query, ENCODED_CQ_COUNTER_INITIAL_VALUE, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
+        query = "SELECT V2 from " + tableName;
+        assertQualifierRanges(conn, query, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE + 1);
+        query = "SELECT V1 from " + tableName;
+        assertQualifierRanges(conn, query, ENCODED_EMPTY_COLUMN_NAME, 
ENCODED_CQ_COUNTER_INITIAL_VALUE);
+    }
+    
+    private static void assertQualifierRanges(Connection conn, String query, 
int minQualifier, int maxQualifier) throws SQLException {
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, query);
+        plan.iterator();
+        Scan scan = plan.getContext().getScan();
         assertNotNull(scan.getAttribute(MIN_QUALIFIER));
         assertNotNull(scan.getAttribute(MAX_QUALIFIER));
         assertEquals(minQualifier, 
Bytes.toInt(scan.getAttribute(MIN_QUALIFIER)));

http://git-wip-us.apache.org/repos/asf/phoenix/blob/d9caed0a/phoenix-core/src/test/java/org/apache/phoenix/filter/SkipScanBigFilterTest.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/test/java/org/apache/phoenix/filter/SkipScanBigFilterTest.java
 
b/phoenix-core/src/test/java/org/apache/phoenix/filter/SkipScanBigFilterTest.java
index 9ba7f6d..eb159e9 100644
--- 
a/phoenix-core/src/test/java/org/apache/phoenix/filter/SkipScanBigFilterTest.java
+++ 
b/phoenix-core/src/test/java/org/apache/phoenix/filter/SkipScanBigFilterTest.java
@@ -29,7 +29,6 @@ import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.phoenix.compile.QueryPlan;
 import org.apache.phoenix.end2end.Shadower;
 import org.apache.phoenix.jdbc.PhoenixConnection;
-import org.apache.phoenix.jdbc.PhoenixStatement;
 import org.apache.phoenix.query.BaseConnectionlessQueryTest;
 import org.apache.phoenix.query.ConnectionlessQueryServicesImpl;
 import org.apache.phoenix.query.QueryConstants;
@@ -41,6 +40,7 @@ import org.apache.phoenix.schema.stats.GuidePostsInfoBuilder;
 import org.apache.phoenix.schema.stats.GuidePostsKey;
 import org.apache.phoenix.util.PropertiesUtil;
 import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.TestUtil;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -694,7 +694,7 @@ public class SkipScanBigFilterTest extends 
BaseConnectionlessQueryTest {
                 "4298107404, 4308853119, 4308853123, 4308853500, 4451174646, 
4451174656, 4451174701, 4569827278, 4569827284, 4569827287, \n" + 
                 "4569827379, 4569827523, 4569827524, 4896589676, 4979049725, 
5054587609, 5136433884, 5362640372, 5393109964, 5393405364, \n" + 
                 "5393405365, 5393405620, 5393405625, 5393405675, 5393405677, 
5393405858, 5393405970)";
-        QueryPlan plan = 
conn.createStatement().unwrap(PhoenixStatement.class).compileQuery(query);
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, query);
         plan.iterator();
     }
 

http://git-wip-us.apache.org/repos/asf/phoenix/blob/d9caed0a/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java 
b/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java
index 7b81c8d..653f726 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java
@@ -44,7 +44,6 @@ import org.apache.hadoop.hbase.util.Pair;
 import org.apache.phoenix.compile.QueryPlan;
 import org.apache.phoenix.expression.Expression;
 import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
-import org.apache.phoenix.jdbc.PhoenixStatement;
 import org.apache.phoenix.query.BaseConnectionlessQueryTest;
 import org.apache.phoenix.query.QueryConstants;
 import org.apache.phoenix.schema.PTable;
@@ -131,7 +130,7 @@ public class PhoenixRuntimeTest extends 
BaseConnectionlessQueryTest {
         String ehId = "333333333333333";
         
         Object[] values = new Object[] {tenantId, createdDate, parentId, ehId};
-        QueryPlan plan = 
conn.createStatement().unwrap(PhoenixStatement.class).optimizeQuery("SELECT 
PARENT_ID FROM T WHERE CREATED_DATE > CURRENT_DATE()-1 AND TENANT_ID = 
'111111111111111'");
+        QueryPlan plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT 
PARENT_ID FROM T WHERE CREATED_DATE > CURRENT_DATE()-1 AND TENANT_ID = 
'111111111111111'");
         List<Pair<String,String>> pkColumns = 
PhoenixRuntime.getPkColsForSql(conn, plan);
         String fullTableName = 
plan.getTableRef().getTable().getName().getString();
         assertEquals("I", fullTableName);
@@ -139,7 +138,7 @@ public class PhoenixRuntimeTest extends 
BaseConnectionlessQueryTest {
         Object[] decodedValues = PhoenixRuntime.decodeColumnValues(conn, 
fullTableName, encodedValues, pkColumns);
         assertArrayEquals(values, decodedValues);
         
-        plan = 
conn.createStatement().unwrap(PhoenixStatement.class).optimizeQuery("SELECT /*+ 
NO_INDEX */ ENTITY_HISTORY_ID FROM T");
+        plan = (QueryPlan) TestUtil.getQueryPlan(conn, "SELECT /*+ NO_INDEX */ 
ENTITY_HISTORY_ID FROM T");
         pkColumns = PhoenixRuntime.getPkColsForSql(conn, plan);
         values = new Object[] {tenantId, parentId, createdDate, ehId};
         fullTableName = plan.getTableRef().getTable().getName().getString();

http://git-wip-us.apache.org/repos/asf/phoenix/blob/d9caed0a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java 
b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
index 58aad38..d285ed7 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
@@ -51,6 +51,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
 
+import 
org.apache.calcite.jdbc.PhoenixCalciteFactory.PhoenixCalcitePreparedStatement;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hbase.Cell;
@@ -72,6 +73,7 @@ import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.phoenix.compile.AggregationManager;
 import org.apache.phoenix.compile.SequenceManager;
 import org.apache.phoenix.compile.StatementContext;
+import org.apache.phoenix.compile.StatementPlan;
 import 
org.apache.phoenix.coprocessor.generated.MetaDataProtos.ClearCacheRequest;
 import 
org.apache.phoenix.coprocessor.generated.MetaDataProtos.ClearCacheResponse;
 import org.apache.phoenix.coprocessor.generated.MetaDataProtos.MetaDataService;
@@ -856,4 +858,13 @@ public class TestUtil {
         System.out.println("-----------------------------------------------");
     }
 
+    public static StatementPlan getQueryPlan(Connection conn, String sql) 
throws SQLException {
+        if (conn instanceof PhoenixConnection) {
+            return 
conn.createStatement().unwrap(PhoenixStatement.class).optimizeQuery(sql);
+        }
+
+        PhoenixCalcitePreparedStatement calciteStmt =
+                
conn.prepareStatement(sql).unwrap(PhoenixCalcitePreparedStatement.class);
+        return calciteStmt.getQueryPlan();
+    }
 }

Reply via email to