git commit: PHOENIX-1298 Queries on fixed width type columns that have an index declared on them don't use that index (Samarth Jain)

2014-09-26 Thread jamestaylor
Repository: phoenix
Updated Branches:
  refs/heads/4.0 4edfed646 - 61fc6a6c0


PHOENIX-1298 Queries on fixed width type columns that have an index declared on 
them don't use that index (Samarth Jain)


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

Branch: refs/heads/4.0
Commit: 61fc6a6c042295efc3819c1af18d7d4c3e502014
Parents: 4edfed6
Author: James Taylor jtay...@salesforce.com
Authored: Fri Sep 26 21:18:42 2014 -0700
Committer: James Taylor jtay...@salesforce.com
Committed: Fri Sep 26 21:18:42 2014 -0700

--
 .../java/org/apache/phoenix/compile/WhereOptimizer.java  |  6 +-
 .../org/apache/phoenix/compile/QueryOptimizerTest.java   | 11 +++
 2 files changed, 12 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/61fc6a6c/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
--
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java 
b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
index 2b529cb..22594c9 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
@@ -476,11 +476,7 @@ public class WhereOptimizer {
 for (int i = 0; i  childSlots.size(); i++) {
 KeySlots slots = childSlots.get(i);
 KeySlot keySlot = slots.iterator().next();
-ListExpression childExtractNodes = 
keySlot.getKeyPart().getExtractNodes();
-// If columns are not in PK order, then stop iteration
-if (childExtractNodes.size() != 1 || childExtractNodes.get(0) 
!= rvc.getChildren().get(i)) {
-break;
-}
+// Continue while we have consecutive pk columns
 if (position == -1) {
 position = initialPosition = keySlot.getPKPosition();
 } else if (keySlot.getPKPosition() != position) {

http://git-wip-us.apache.org/repos/asf/phoenix/blob/61fc6a6c/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 3a92d73..45a61a7 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
@@ -41,6 +41,17 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
 }
 
 @Test
+public void testRVCUsingPkColsReturnedByPlanShouldUseIndex() throws 
Exception {
+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);
+assertEquals(IDX, 
plan.getTableRef().getTable().getTableName().getString());
+}
+
+@Test
 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);



git commit: PHOENIX-1298 Queries on fixed width type columns that have an index declared on them don't use that index (Samarth Jain)

2014-09-26 Thread jamestaylor
Repository: phoenix
Updated Branches:
  refs/heads/master 3acedb726 - 13742ae1f


PHOENIX-1298 Queries on fixed width type columns that have an index declared on 
them don't use that index (Samarth Jain)


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

Branch: refs/heads/master
Commit: 13742ae1f6a6d90774285d6cf51eb5a934688d50
Parents: 3acedb7
Author: James Taylor jtay...@salesforce.com
Authored: Fri Sep 26 21:18:42 2014 -0700
Committer: James Taylor jtay...@salesforce.com
Committed: Fri Sep 26 21:19:41 2014 -0700

--
 .../java/org/apache/phoenix/compile/WhereOptimizer.java  |  6 +-
 .../org/apache/phoenix/compile/QueryOptimizerTest.java   | 11 +++
 2 files changed, 12 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/13742ae1/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
--
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java 
b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
index 2b529cb..22594c9 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
@@ -476,11 +476,7 @@ public class WhereOptimizer {
 for (int i = 0; i  childSlots.size(); i++) {
 KeySlots slots = childSlots.get(i);
 KeySlot keySlot = slots.iterator().next();
-ListExpression childExtractNodes = 
keySlot.getKeyPart().getExtractNodes();
-// If columns are not in PK order, then stop iteration
-if (childExtractNodes.size() != 1 || childExtractNodes.get(0) 
!= rvc.getChildren().get(i)) {
-break;
-}
+// Continue while we have consecutive pk columns
 if (position == -1) {
 position = initialPosition = keySlot.getPKPosition();
 } else if (keySlot.getPKPosition() != position) {

http://git-wip-us.apache.org/repos/asf/phoenix/blob/13742ae1/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 3a92d73..45a61a7 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
@@ -41,6 +41,17 @@ public class QueryOptimizerTest extends 
BaseConnectionlessQueryTest {
 }
 
 @Test
+public void testRVCUsingPkColsReturnedByPlanShouldUseIndex() throws 
Exception {
+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);
+assertEquals(IDX, 
plan.getTableRef().getTable().getTableName().getString());
+}
+
+@Test
 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);