[11/16] phoenix git commit: PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly

2016-06-02 Thread larsh
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 
Authored: 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

2015-05-20 Thread apurtell
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

2015-03-24 Thread tdsilva
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

2015-03-24 Thread tdsilva
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