You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2016/03/15 23:56:13 UTC

[3/3] phoenix git commit: PHOENIX-2768 Add test for case sensitive table with index hint

PHOENIX-2768 Add test for case sensitive table with index hint


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

Branch: refs/heads/master
Commit: d8b45bcb3d923124455788d27718aafd3c0158c1
Parents: c19c321
Author: James Taylor <jt...@salesforce.com>
Authored: Mon Mar 14 20:33:03 2016 -0700
Committer: James Taylor <jt...@salesforce.com>
Committed: Tue Mar 15 15:56:03 2016 -0700

----------------------------------------------------------------------
 .../phoenix/compile/QueryOptimizerTest.java     | 28 ++++++++++++++++++++
 1 file changed, 28 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/d8b45bcb/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 e528d3b..c3345ba 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
@@ -273,6 +273,34 @@ public class QueryOptimizerTest extends BaseConnectionlessQueryTest {
         PhoenixStatement stmt = conn.createStatement().unwrap(PhoenixStatement.class);
         QueryPlan plan = stmt.optimizeQuery("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'");
+        assertEquals("IDX2", plan.getTableRef().getTable().getTableName().getString());
+    }
+
+    @Test
+    public void testChooseIndexFromCaseSensitiveHint() throws Exception {
+        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 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'");
+        assertEquals("IDX1", plan.getTableRef().getTable().getTableName().getString());
+        plan = stmt.optimizeQuery("SELECT k FROM \"t\" WHERE v1 = 'foo' AND v2 = 'bar'");
+        assertEquals("IDX2", plan.getTableRef().getTable().getTableName().getString());
+    }
+
+    @Test
+    public void testChooseIndexFromCaseSensitiveHint2() throws Exception {
+        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 \"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'");
+        assertEquals("idx1", plan.getTableRef().getTable().getTableName().getString());
+        plan = stmt.optimizeQuery("SELECT k FROM \"t\" WHERE v1 = 'foo' AND v2 = 'bar'");
+        assertEquals("idx2", plan.getTableRef().getTable().getTableName().getString());
     }