[11/16] phoenix git commit: PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly
PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a8b27e3f Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a8b27e3f Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a8b27e3f Branch: refs/heads/4.x-HBase-1.x Commit: a8b27e3f010d15d3f3b519c38fbb052ebb4a6cdb Parents: 250474d Author: ThomasAuthored: Thu Mar 19 13:57:27 2015 -0700 Committer: Thomas Committed: Tue Mar 24 15:56:25 2015 -0700 -- .../end2end/index/IndexExpressionIT.java| 161 ++- .../phoenix/compile/PostIndexDDLCompiler.java | 4 +- .../parse/IndexExpressionParseNodeRewriter.java | 30 +--- .../apache/phoenix/schema/MetaDataClient.java | 4 +- .../org/apache/phoenix/util/StringUtil.java | 5 + .../phoenix/compile/QueryCompilerTest.java | 22 ++- 6 files changed, 153 insertions(+), 73 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a8b27e3f/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java index 1e3733b..0203e35 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java @@ -1202,54 +1202,60 @@ public class IndexExpressionIT extends BaseHBaseManagedTimeIT { @Test public void testViewUsesTableIndex() throws Exception { -ResultSet rs; Connection conn = DriverManager.getConnection(getUrl()); -String ddl = "CREATE TABLE t (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, s1 VARCHAR, s2 VARCHAR, s3 VARCHAR, s4 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2))"; -conn.createStatement().execute(ddl); -conn.createStatement().execute("CREATE INDEX i1 ON t(k2, s2, s3, s1)"); -conn.createStatement().execute("CREATE INDEX i2 ON t(k2, s2||'_'||s3, s1, s4)"); - -ddl = "CREATE VIEW v AS SELECT * FROM t WHERE s1 = 'foo'"; -conn.createStatement().execute(ddl); -conn.createStatement().execute("UPSERT INTO t VALUES(1,1,'foo','abc','cab')"); -conn.createStatement().execute("UPSERT INTO t VALUES(2,2,'bar','xyz','zyx')"); -conn.commit(); - -rs = conn.createStatement().executeQuery("SELECT count(*) FROM v"); -assertTrue(rs.next()); -assertEquals(1, rs.getLong(1)); -assertFalse(rs.next()); - -//i2 should be used since it contains s3||'_'||s4 i -String query = "SELECT s2||'_'||s3 FROM v WHERE k2=1 AND (s2||'_'||s3)='abc_cab'"; -rs = conn.createStatement( ).executeQuery("EXPLAIN " + query); -String queryPlan = QueryUtil.getExplainPlan(rs); -assertEquals( -"CLIENT PARALLEL 1-WAY RANGE SCAN OVER I2 [1,'abc_cab','foo']\n" + -"SERVER FILTER BY FIRST KEY ONLY", queryPlan); -rs = conn.createStatement().executeQuery(query); -assertTrue(rs.next()); -assertEquals("abc_cab", rs.getString(1)); -assertFalse(rs.next()); - -conn.createStatement().execute("ALTER VIEW v DROP COLUMN s4"); -//i2 cannot be used since s4 has been dropped from the view, so i1 will be used -rs = conn.createStatement().executeQuery("EXPLAIN " + query); -queryPlan = QueryUtil.getExplainPlan(rs); -assertEquals( -"CLIENT PARALLEL 1-WAY RANGE SCAN OVER I1 [1]\n" + -"SERVER FILTER BY FIRST KEY ONLY AND ((\"S2\" || '_' || \"S3\") = 'abc_cab' AND \"S1\" = 'foo')", queryPlan); -rs = conn.createStatement().executeQuery(query); -assertTrue(rs.next()); -assertEquals("abc_cab", rs.getString(1)); -assertFalse(rs.next()); +try +{ + ResultSet rs; + String ddl = "CREATE TABLE t (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, s1 VARCHAR, s2 VARCHAR, s3 VARCHAR, s4 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2))"; + conn.createStatement().execute(ddl); + conn.createStatement().execute("CREATE INDEX i1 ON t(k2, s2, s3, s1)"); + conn.createStatement().execute("CREATE INDEX i2 ON t(k2, s2||'_'||s3, s1, s4)"); + + ddl = "CREATE VIEW v AS SELECT * FROM t WHERE s1 = 'foo'"; + conn.createStatement().execute(ddl); + conn.createStatement().execute("UPSERT INTO t VALUES(1,1,'foo','abc','cab')"); +
[11/31] phoenix git commit: PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly
PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a8b27e3f Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a8b27e3f Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a8b27e3f Branch: refs/heads/4.x-HBase-1.x Commit: a8b27e3f010d15d3f3b519c38fbb052ebb4a6cdb Parents: 250474d Author: Thomas tdsi...@salesforce.com Authored: Thu Mar 19 13:57:27 2015 -0700 Committer: Thomas tdsi...@salesforce.com Committed: Tue Mar 24 15:56:25 2015 -0700 -- .../end2end/index/IndexExpressionIT.java| 161 ++- .../phoenix/compile/PostIndexDDLCompiler.java | 4 +- .../parse/IndexExpressionParseNodeRewriter.java | 30 +--- .../apache/phoenix/schema/MetaDataClient.java | 4 +- .../org/apache/phoenix/util/StringUtil.java | 5 + .../phoenix/compile/QueryCompilerTest.java | 22 ++- 6 files changed, 153 insertions(+), 73 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a8b27e3f/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java index 1e3733b..0203e35 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java @@ -1202,54 +1202,60 @@ public class IndexExpressionIT extends BaseHBaseManagedTimeIT { @Test public void testViewUsesTableIndex() throws Exception { -ResultSet rs; Connection conn = DriverManager.getConnection(getUrl()); -String ddl = CREATE TABLE t (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, s1 VARCHAR, s2 VARCHAR, s3 VARCHAR, s4 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2)); -conn.createStatement().execute(ddl); -conn.createStatement().execute(CREATE INDEX i1 ON t(k2, s2, s3, s1)); -conn.createStatement().execute(CREATE INDEX i2 ON t(k2, s2||'_'||s3, s1, s4)); - -ddl = CREATE VIEW v AS SELECT * FROM t WHERE s1 = 'foo'; -conn.createStatement().execute(ddl); -conn.createStatement().execute(UPSERT INTO t VALUES(1,1,'foo','abc','cab')); -conn.createStatement().execute(UPSERT INTO t VALUES(2,2,'bar','xyz','zyx')); -conn.commit(); - -rs = conn.createStatement().executeQuery(SELECT count(*) FROM v); -assertTrue(rs.next()); -assertEquals(1, rs.getLong(1)); -assertFalse(rs.next()); - -//i2 should be used since it contains s3||'_'||s4 i -String query = SELECT s2||'_'||s3 FROM v WHERE k2=1 AND (s2||'_'||s3)='abc_cab'; -rs = conn.createStatement( ).executeQuery(EXPLAIN + query); -String queryPlan = QueryUtil.getExplainPlan(rs); -assertEquals( -CLIENT PARALLEL 1-WAY RANGE SCAN OVER I2 [1,'abc_cab','foo']\n + -SERVER FILTER BY FIRST KEY ONLY, queryPlan); -rs = conn.createStatement().executeQuery(query); -assertTrue(rs.next()); -assertEquals(abc_cab, rs.getString(1)); -assertFalse(rs.next()); - -conn.createStatement().execute(ALTER VIEW v DROP COLUMN s4); -//i2 cannot be used since s4 has been dropped from the view, so i1 will be used -rs = conn.createStatement().executeQuery(EXPLAIN + query); -queryPlan = QueryUtil.getExplainPlan(rs); -assertEquals( -CLIENT PARALLEL 1-WAY RANGE SCAN OVER I1 [1]\n + -SERVER FILTER BY FIRST KEY ONLY AND ((\S2\ || '_' || \S3\) = 'abc_cab' AND \S1\ = 'foo'), queryPlan); -rs = conn.createStatement().executeQuery(query); -assertTrue(rs.next()); -assertEquals(abc_cab, rs.getString(1)); -assertFalse(rs.next()); +try +{ + ResultSet rs; + String ddl = CREATE TABLE t (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, s1 VARCHAR, s2 VARCHAR, s3 VARCHAR, s4 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2)); + conn.createStatement().execute(ddl); + conn.createStatement().execute(CREATE INDEX i1 ON t(k2, s2, s3, s1)); + conn.createStatement().execute(CREATE INDEX i2 ON t(k2, s2||'_'||s3, s1, s4)); + + ddl = CREATE VIEW v AS SELECT * FROM t WHERE s1 = 'foo'; + conn.createStatement().execute(ddl); + conn.createStatement().execute(UPSERT INTO t VALUES(1,1,'foo','abc','cab')); + conn.createStatement().execute(UPSERT INTO t
phoenix git commit: PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly
Repository: phoenix Updated Branches: refs/heads/4.x-HBase-0.98 af0d65a0a - c992c8694 PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/c992c869 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/c992c869 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/c992c869 Branch: refs/heads/4.x-HBase-0.98 Commit: c992c86941798f960948df12ae40ee2d4a0ae820 Parents: af0d65a Author: Thomas tdsi...@salesforce.com Authored: Thu Mar 19 13:57:27 2015 -0700 Committer: Thomas tdsi...@salesforce.com Committed: Tue Mar 24 15:49:49 2015 -0700 -- .../end2end/index/IndexExpressionIT.java| 161 ++- .../phoenix/compile/PostIndexDDLCompiler.java | 4 +- .../parse/IndexExpressionParseNodeRewriter.java | 30 +--- .../apache/phoenix/schema/MetaDataClient.java | 4 +- .../org/apache/phoenix/util/StringUtil.java | 5 + .../phoenix/compile/QueryCompilerTest.java | 22 ++- 6 files changed, 153 insertions(+), 73 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/c992c869/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java index 1e3733b..0203e35 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java @@ -1202,54 +1202,60 @@ public class IndexExpressionIT extends BaseHBaseManagedTimeIT { @Test public void testViewUsesTableIndex() throws Exception { -ResultSet rs; Connection conn = DriverManager.getConnection(getUrl()); -String ddl = CREATE TABLE t (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, s1 VARCHAR, s2 VARCHAR, s3 VARCHAR, s4 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2)); -conn.createStatement().execute(ddl); -conn.createStatement().execute(CREATE INDEX i1 ON t(k2, s2, s3, s1)); -conn.createStatement().execute(CREATE INDEX i2 ON t(k2, s2||'_'||s3, s1, s4)); - -ddl = CREATE VIEW v AS SELECT * FROM t WHERE s1 = 'foo'; -conn.createStatement().execute(ddl); -conn.createStatement().execute(UPSERT INTO t VALUES(1,1,'foo','abc','cab')); -conn.createStatement().execute(UPSERT INTO t VALUES(2,2,'bar','xyz','zyx')); -conn.commit(); - -rs = conn.createStatement().executeQuery(SELECT count(*) FROM v); -assertTrue(rs.next()); -assertEquals(1, rs.getLong(1)); -assertFalse(rs.next()); - -//i2 should be used since it contains s3||'_'||s4 i -String query = SELECT s2||'_'||s3 FROM v WHERE k2=1 AND (s2||'_'||s3)='abc_cab'; -rs = conn.createStatement( ).executeQuery(EXPLAIN + query); -String queryPlan = QueryUtil.getExplainPlan(rs); -assertEquals( -CLIENT PARALLEL 1-WAY RANGE SCAN OVER I2 [1,'abc_cab','foo']\n + -SERVER FILTER BY FIRST KEY ONLY, queryPlan); -rs = conn.createStatement().executeQuery(query); -assertTrue(rs.next()); -assertEquals(abc_cab, rs.getString(1)); -assertFalse(rs.next()); - -conn.createStatement().execute(ALTER VIEW v DROP COLUMN s4); -//i2 cannot be used since s4 has been dropped from the view, so i1 will be used -rs = conn.createStatement().executeQuery(EXPLAIN + query); -queryPlan = QueryUtil.getExplainPlan(rs); -assertEquals( -CLIENT PARALLEL 1-WAY RANGE SCAN OVER I1 [1]\n + -SERVER FILTER BY FIRST KEY ONLY AND ((\S2\ || '_' || \S3\) = 'abc_cab' AND \S1\ = 'foo'), queryPlan); -rs = conn.createStatement().executeQuery(query); -assertTrue(rs.next()); -assertEquals(abc_cab, rs.getString(1)); -assertFalse(rs.next()); +try +{ + ResultSet rs; + String ddl = CREATE TABLE t (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, s1 VARCHAR, s2 VARCHAR, s3 VARCHAR, s4 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2)); + conn.createStatement().execute(ddl); + conn.createStatement().execute(CREATE INDEX i1 ON t(k2, s2, s3, s1)); + conn.createStatement().execute(CREATE INDEX i2 ON t(k2, s2||'_'||s3, s1, s4)); + + ddl = CREATE VIEW v AS SELECT * FROM t WHERE s1 = 'foo'; + conn.createStatement().execute(ddl); + conn.createStatement().execute(UPSERT INTO t
phoenix git commit: PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly
Repository: phoenix Updated Branches: refs/heads/master ab9c9283e - a94a6f419 PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a94a6f41 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a94a6f41 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a94a6f41 Branch: refs/heads/master Commit: a94a6f4195af2867379803f19c90045eb3943c2d Parents: ab9c928 Author: Thomas tdsi...@salesforce.com Authored: Thu Mar 19 13:57:27 2015 -0700 Committer: Thomas tdsi...@salesforce.com Committed: Tue Mar 24 15:58:52 2015 -0700 -- .../end2end/index/IndexExpressionIT.java| 161 ++- .../phoenix/compile/PostIndexDDLCompiler.java | 4 +- .../parse/IndexExpressionParseNodeRewriter.java | 30 +--- .../apache/phoenix/schema/MetaDataClient.java | 4 +- .../org/apache/phoenix/util/StringUtil.java | 5 + .../phoenix/compile/QueryCompilerTest.java | 22 ++- 6 files changed, 153 insertions(+), 73 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a94a6f41/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java index 1e3733b..0203e35 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java @@ -1202,54 +1202,60 @@ public class IndexExpressionIT extends BaseHBaseManagedTimeIT { @Test public void testViewUsesTableIndex() throws Exception { -ResultSet rs; Connection conn = DriverManager.getConnection(getUrl()); -String ddl = CREATE TABLE t (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, s1 VARCHAR, s2 VARCHAR, s3 VARCHAR, s4 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2)); -conn.createStatement().execute(ddl); -conn.createStatement().execute(CREATE INDEX i1 ON t(k2, s2, s3, s1)); -conn.createStatement().execute(CREATE INDEX i2 ON t(k2, s2||'_'||s3, s1, s4)); - -ddl = CREATE VIEW v AS SELECT * FROM t WHERE s1 = 'foo'; -conn.createStatement().execute(ddl); -conn.createStatement().execute(UPSERT INTO t VALUES(1,1,'foo','abc','cab')); -conn.createStatement().execute(UPSERT INTO t VALUES(2,2,'bar','xyz','zyx')); -conn.commit(); - -rs = conn.createStatement().executeQuery(SELECT count(*) FROM v); -assertTrue(rs.next()); -assertEquals(1, rs.getLong(1)); -assertFalse(rs.next()); - -//i2 should be used since it contains s3||'_'||s4 i -String query = SELECT s2||'_'||s3 FROM v WHERE k2=1 AND (s2||'_'||s3)='abc_cab'; -rs = conn.createStatement( ).executeQuery(EXPLAIN + query); -String queryPlan = QueryUtil.getExplainPlan(rs); -assertEquals( -CLIENT PARALLEL 1-WAY RANGE SCAN OVER I2 [1,'abc_cab','foo']\n + -SERVER FILTER BY FIRST KEY ONLY, queryPlan); -rs = conn.createStatement().executeQuery(query); -assertTrue(rs.next()); -assertEquals(abc_cab, rs.getString(1)); -assertFalse(rs.next()); - -conn.createStatement().execute(ALTER VIEW v DROP COLUMN s4); -//i2 cannot be used since s4 has been dropped from the view, so i1 will be used -rs = conn.createStatement().executeQuery(EXPLAIN + query); -queryPlan = QueryUtil.getExplainPlan(rs); -assertEquals( -CLIENT PARALLEL 1-WAY RANGE SCAN OVER I1 [1]\n + -SERVER FILTER BY FIRST KEY ONLY AND ((\S2\ || '_' || \S3\) = 'abc_cab' AND \S1\ = 'foo'), queryPlan); -rs = conn.createStatement().executeQuery(query); -assertTrue(rs.next()); -assertEquals(abc_cab, rs.getString(1)); -assertFalse(rs.next()); +try +{ + ResultSet rs; + String ddl = CREATE TABLE t (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, s1 VARCHAR, s2 VARCHAR, s3 VARCHAR, s4 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2)); + conn.createStatement().execute(ddl); + conn.createStatement().execute(CREATE INDEX i1 ON t(k2, s2, s3, s1)); + conn.createStatement().execute(CREATE INDEX i2 ON t(k2, s2||'_'||s3, s1, s4)); + + ddl = CREATE VIEW v AS SELECT * FROM t WHERE s1 = 'foo'; + conn.createStatement().execute(ddl); + conn.createStatement().execute(UPSERT INTO t