[09/26] phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true (addendum)

2017-01-26 Thread maryannxue
PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true (addendum)


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

Branch: refs/heads/calcite
Commit: 07f92732f9c6d2d9464012cebeb4cefc10da95d5
Parents: b326995
Author: Thomas D'Silva 
Authored: Thu Dec 22 17:29:35 2016 -0800
Committer: Thomas D'Silva 
Committed: Tue Dec 27 11:44:54 2016 -0800

--
 .../main/java/org/apache/phoenix/compile/WhereOptimizer.java  | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/07f92732/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 0681925..5e15f61 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
@@ -439,7 +439,12 @@ public class WhereOptimizer {
 if (l.size() == 1) {
 return l.get(0);
 }
-return new AndExpression(l);
+try {
+return AndExpression.create(l);
+} catch (SQLException e) {
+//shouldn't happen
+throw new RuntimeException(e);
+}
 }
 return node;
 }



[02/26] phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true

2017-01-26 Thread maryannxue
PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true


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

Branch: refs/heads/calcite
Commit: c5046047a78e0365d75bc696dff4870304c2b5b2
Parents: bd2acd5
Author: Thomas D'Silva 
Authored: Tue Dec 20 17:56:37 2016 -0800
Committer: Thomas D'Silva 
Committed: Thu Dec 22 10:54:24 2016 -0800

--
 .../end2end/TenantSpecificViewIndexIT.java  | 47 
 .../apache/phoenix/compile/WhereCompiler.java   |  3 +-
 .../org/apache/phoenix/util/ExpressionUtil.java | 10 +
 .../phoenix/query/KeyRangeIntersectTest.java|  9 +++-
 4 files changed, 67 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/c5046047/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
index b7b8902..6ae1445 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
@@ -19,6 +19,7 @@ package org.apache.phoenix.end2end;
 
 import static org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceName;
 import static 
org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceSchemaName;
+import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -28,6 +29,7 @@ import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.Properties;
 
 import org.apache.hadoop.hbase.util.Bytes;
@@ -284,4 +286,49 @@ public class TenantSpecificViewIndexIT extends 
BaseTenantSpecificViewIndexIT {
 assertEquals("value1", rs.getString(1));
 assertFalse("No other rows should have been returned for the tenant", 
rs.next()); // should have just returned one record since for org1 we have only 
one row.
 }
+
+@Test
+public void testOverlappingDatesFilter() throws SQLException {
+String tenantUrl = getUrl() + ';' + TENANT_ID_ATTRIB + "=tenant1" + 
";" + QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB + "=true";
+String tableName = generateUniqueName();
+String viewName = generateUniqueName();
+String ddl = "CREATE TABLE " + tableName 
++ "(ORGANIZATION_ID CHAR(15) NOT NULL, "
++ "PARENT_TYPE CHAR(3) NOT NULL, "
++ "PARENT_ID CHAR(15) NOT NULL,"
++ "CREATED_DATE DATE NOT NULL "
++ "CONSTRAINT PK PRIMARY KEY (ORGANIZATION_ID, PARENT_TYPE, 
PARENT_ID, CREATED_DATE DESC)"
++ ") VERSIONS=1,MULTI_TENANT=true,REPLICATION_SCOPE=1"; 
+
+try (Connection conn = DriverManager.getConnection(getUrl());
+Connection viewConn = DriverManager.getConnection(tenantUrl) ) 
{
+// create table
+conn.createStatement().execute(ddl);
+// create index
+conn.createStatement().execute("CREATE INDEX IF NOT EXISTS IDX ON 
" + tableName + "(PARENT_TYPE, CREATED_DATE, PARENT_ID)");
+// create view
+viewConn.createStatement().execute("CREATE VIEW IF NOT EXISTS " + 
viewName + " AS SELECT * FROM "+ tableName );
+
+String query ="EXPLAIN SELECT PARENT_ID FROM " + viewName
++ " WHERE PARENT_TYPE='001' "
++ "AND (CREATED_DATE > to_date('2011-01-01') AND 
CREATED_DATE < to_date('2016-10-31'))"
++ "ORDER BY PARENT_TYPE,CREATED_DATE LIMIT 501";
+
+ResultSet rs = viewConn.createStatement().executeQuery(query);
+String expectedPlanFormat = "CLIENT SERIAL 1-WAY RANGE SCAN OVER 
IDX ['tenant1','001','%s 00:00:00.001'] - ['tenant1','001','%s 
00:00:00.000']" + "\n" +
+"SERVER FILTER BY FIRST KEY ONLY" + "\n" +
+"SERVER 501 ROW LIMIT" + "\n" +
+"CLIENT 501 ROW LIMIT";
+assertEquals(String.format(expectedPlanFormat, "2011-01-01", 
"2016-10-31"), QueryUtil.getExplainPlan(rs));
+
+query ="EXPLAIN 

phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true (addendum)

2016-12-27 Thread tdsilva
Repository: phoenix
Updated Branches:
  refs/heads/master b32699505 -> 07f92732f


PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true (addendum)


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

Branch: refs/heads/master
Commit: 07f92732f9c6d2d9464012cebeb4cefc10da95d5
Parents: b326995
Author: Thomas D'Silva 
Authored: Thu Dec 22 17:29:35 2016 -0800
Committer: Thomas D'Silva 
Committed: Tue Dec 27 11:44:54 2016 -0800

--
 .../main/java/org/apache/phoenix/compile/WhereOptimizer.java  | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/07f92732/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 0681925..5e15f61 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
@@ -439,7 +439,12 @@ public class WhereOptimizer {
 if (l.size() == 1) {
 return l.get(0);
 }
-return new AndExpression(l);
+try {
+return AndExpression.create(l);
+} catch (SQLException e) {
+//shouldn't happen
+throw new RuntimeException(e);
+}
 }
 return node;
 }



phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true (addendum)

2016-12-27 Thread tdsilva
Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-0.98 95759f4ee -> 305e3cb21


PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true (addendum)


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

Branch: refs/heads/4.x-HBase-0.98
Commit: 305e3cb2113e441e705f34cf390eae97fa0cb42a
Parents: 95759f4
Author: Thomas D'Silva 
Authored: Thu Dec 22 17:29:35 2016 -0800
Committer: Thomas D'Silva 
Committed: Tue Dec 27 11:40:39 2016 -0800

--
 .../main/java/org/apache/phoenix/compile/WhereOptimizer.java  | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/305e3cb2/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 0681925..5e15f61 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
@@ -439,7 +439,12 @@ public class WhereOptimizer {
 if (l.size() == 1) {
 return l.get(0);
 }
-return new AndExpression(l);
+try {
+return AndExpression.create(l);
+} catch (SQLException e) {
+//shouldn't happen
+throw new RuntimeException(e);
+}
 }
 return node;
 }



phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true (addendum)

2016-12-27 Thread tdsilva
Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-1.1 39bfb98ff -> d66592c43


PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true (addendum)


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

Branch: refs/heads/4.x-HBase-1.1
Commit: d66592c4342c533b938cb21d36174ab107e77a19
Parents: 39bfb98
Author: Thomas D'Silva 
Authored: Thu Dec 22 17:29:35 2016 -0800
Committer: Thomas D'Silva 
Committed: Tue Dec 27 11:40:48 2016 -0800

--
 .../main/java/org/apache/phoenix/compile/WhereOptimizer.java  | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/d66592c4/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 0681925..5e15f61 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
@@ -439,7 +439,12 @@ public class WhereOptimizer {
 if (l.size() == 1) {
 return l.get(0);
 }
-return new AndExpression(l);
+try {
+return AndExpression.create(l);
+} catch (SQLException e) {
+//shouldn't happen
+throw new RuntimeException(e);
+}
 }
 return node;
 }



phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true (addendum)

2016-12-27 Thread tdsilva
Repository: phoenix
Updated Branches:
  refs/heads/4.9-HBase-0.98 f6a8acc9d -> 4340dadb2


PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true (addendum)


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

Branch: refs/heads/4.9-HBase-0.98
Commit: 4340dadb241ce7e416dabcfa13e7cfdffe39a333
Parents: f6a8acc
Author: Thomas D'Silva 
Authored: Thu Dec 22 17:29:35 2016 -0800
Committer: Thomas D'Silva 
Committed: Tue Dec 27 11:39:57 2016 -0800

--
 .../main/java/org/apache/phoenix/compile/WhereOptimizer.java  | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/4340dadb/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 0681925..5e15f61 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
@@ -439,7 +439,12 @@ public class WhereOptimizer {
 if (l.size() == 1) {
 return l.get(0);
 }
-return new AndExpression(l);
+try {
+return AndExpression.create(l);
+} catch (SQLException e) {
+//shouldn't happen
+throw new RuntimeException(e);
+}
 }
 return node;
 }



phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true (addendum)

2016-12-27 Thread tdsilva
Repository: phoenix
Updated Branches:
  refs/heads/4.9-HBase-1.2 baf3b7c04 -> fb504f2d7


PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true (addendum)


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

Branch: refs/heads/4.9-HBase-1.2
Commit: fb504f2d739e13f2076b8ead234da927ce67e1e5
Parents: baf3b7c
Author: Thomas D'Silva 
Authored: Thu Dec 22 17:29:35 2016 -0800
Committer: Thomas D'Silva 
Committed: Tue Dec 27 11:40:27 2016 -0800

--
 .../main/java/org/apache/phoenix/compile/WhereOptimizer.java  | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/fb504f2d/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 0681925..5e15f61 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
@@ -439,7 +439,12 @@ public class WhereOptimizer {
 if (l.size() == 1) {
 return l.get(0);
 }
-return new AndExpression(l);
+try {
+return AndExpression.create(l);
+} catch (SQLException e) {
+//shouldn't happen
+throw new RuntimeException(e);
+}
 }
 return node;
 }



[16/42] phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true

2016-12-22 Thread tdsilva
PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true


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

Branch: refs/heads/encodecolumns2
Commit: 54b7c218d01ee26e5cbf16230ea2fc85d6ffa57f
Parents: 5706f51
Author: Thomas D'Silva 
Authored: Tue Dec 20 17:56:37 2016 -0800
Committer: Thomas D'Silva 
Committed: Thu Dec 22 10:50:43 2016 -0800

--
 .../end2end/TenantSpecificViewIndexIT.java  | 47 
 .../apache/phoenix/compile/WhereCompiler.java   |  3 +-
 .../org/apache/phoenix/util/ExpressionUtil.java | 10 +
 .../phoenix/query/KeyRangeIntersectTest.java|  9 +++-
 4 files changed, 67 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/54b7c218/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
index 3519cf7..cc2e46a 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
@@ -19,6 +19,7 @@ package org.apache.phoenix.end2end;
 
 import static org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceName;
 import static 
org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceSchemaName;
+import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -28,6 +29,7 @@ import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.Properties;
 
 import org.apache.hadoop.hbase.util.Bytes;
@@ -284,4 +286,49 @@ public class TenantSpecificViewIndexIT extends 
BaseTenantSpecificViewIndexIT {
 assertEquals("value1", rs.getString(1));
 assertFalse("No other rows should have been returned for the tenant", 
rs.next()); // should have just returned one record since for org1 we have only 
one row.
 }
+
+@Test
+public void testOverlappingDatesFilter() throws SQLException {
+String tenantUrl = getUrl() + ';' + TENANT_ID_ATTRIB + "=tenant1" + 
";" + QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB + "=true";
+String tableName = generateUniqueName();
+String viewName = generateUniqueName();
+String ddl = "CREATE TABLE " + tableName 
++ "(ORGANIZATION_ID CHAR(15) NOT NULL, "
++ "PARENT_TYPE CHAR(3) NOT NULL, "
++ "PARENT_ID CHAR(15) NOT NULL,"
++ "CREATED_DATE DATE NOT NULL "
++ "CONSTRAINT PK PRIMARY KEY (ORGANIZATION_ID, PARENT_TYPE, 
PARENT_ID, CREATED_DATE DESC)"
++ ") VERSIONS=1,MULTI_TENANT=true,REPLICATION_SCOPE=1"; 
+
+try (Connection conn = DriverManager.getConnection(getUrl());
+Connection viewConn = DriverManager.getConnection(tenantUrl) ) 
{
+// create table
+conn.createStatement().execute(ddl);
+// create index
+conn.createStatement().execute("CREATE INDEX IF NOT EXISTS IDX ON 
" + tableName + "(PARENT_TYPE, CREATED_DATE, PARENT_ID)");
+// create view
+viewConn.createStatement().execute("CREATE VIEW IF NOT EXISTS " + 
viewName + " AS SELECT * FROM "+ tableName );
+
+String query ="EXPLAIN SELECT PARENT_ID FROM " + viewName
++ " WHERE PARENT_TYPE='001' "
++ "AND (CREATED_DATE > to_date('2011-01-01') AND 
CREATED_DATE < to_date('2016-10-31'))"
++ "ORDER BY PARENT_TYPE,CREATED_DATE LIMIT 501";
+
+ResultSet rs = viewConn.createStatement().executeQuery(query);
+String expectedPlanFormat = "CLIENT SERIAL 1-WAY RANGE SCAN OVER 
IDX ['tenant1','001','%s 00:00:00.001'] - ['tenant1','001','%s 
00:00:00.000']" + "\n" +
+"SERVER FILTER BY FIRST KEY ONLY" + "\n" +
+"SERVER 501 ROW LIMIT" + "\n" +
+"CLIENT 501 ROW LIMIT";
+assertEquals(String.format(expectedPlanFormat, "2011-01-01", 
"2016-10-31"), QueryUtil.getExplainPlan(rs));
+
+query 

phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true

2016-12-22 Thread tdsilva
Repository: phoenix
Updated Branches:
  refs/heads/master bd2acd540 -> c5046047a


PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true


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

Branch: refs/heads/master
Commit: c5046047a78e0365d75bc696dff4870304c2b5b2
Parents: bd2acd5
Author: Thomas D'Silva 
Authored: Tue Dec 20 17:56:37 2016 -0800
Committer: Thomas D'Silva 
Committed: Thu Dec 22 10:54:24 2016 -0800

--
 .../end2end/TenantSpecificViewIndexIT.java  | 47 
 .../apache/phoenix/compile/WhereCompiler.java   |  3 +-
 .../org/apache/phoenix/util/ExpressionUtil.java | 10 +
 .../phoenix/query/KeyRangeIntersectTest.java|  9 +++-
 4 files changed, 67 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/c5046047/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
index b7b8902..6ae1445 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
@@ -19,6 +19,7 @@ package org.apache.phoenix.end2end;
 
 import static org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceName;
 import static 
org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceSchemaName;
+import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -28,6 +29,7 @@ import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.Properties;
 
 import org.apache.hadoop.hbase.util.Bytes;
@@ -284,4 +286,49 @@ public class TenantSpecificViewIndexIT extends 
BaseTenantSpecificViewIndexIT {
 assertEquals("value1", rs.getString(1));
 assertFalse("No other rows should have been returned for the tenant", 
rs.next()); // should have just returned one record since for org1 we have only 
one row.
 }
+
+@Test
+public void testOverlappingDatesFilter() throws SQLException {
+String tenantUrl = getUrl() + ';' + TENANT_ID_ATTRIB + "=tenant1" + 
";" + QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB + "=true";
+String tableName = generateUniqueName();
+String viewName = generateUniqueName();
+String ddl = "CREATE TABLE " + tableName 
++ "(ORGANIZATION_ID CHAR(15) NOT NULL, "
++ "PARENT_TYPE CHAR(3) NOT NULL, "
++ "PARENT_ID CHAR(15) NOT NULL,"
++ "CREATED_DATE DATE NOT NULL "
++ "CONSTRAINT PK PRIMARY KEY (ORGANIZATION_ID, PARENT_TYPE, 
PARENT_ID, CREATED_DATE DESC)"
++ ") VERSIONS=1,MULTI_TENANT=true,REPLICATION_SCOPE=1"; 
+
+try (Connection conn = DriverManager.getConnection(getUrl());
+Connection viewConn = DriverManager.getConnection(tenantUrl) ) 
{
+// create table
+conn.createStatement().execute(ddl);
+// create index
+conn.createStatement().execute("CREATE INDEX IF NOT EXISTS IDX ON 
" + tableName + "(PARENT_TYPE, CREATED_DATE, PARENT_ID)");
+// create view
+viewConn.createStatement().execute("CREATE VIEW IF NOT EXISTS " + 
viewName + " AS SELECT * FROM "+ tableName );
+
+String query ="EXPLAIN SELECT PARENT_ID FROM " + viewName
++ " WHERE PARENT_TYPE='001' "
++ "AND (CREATED_DATE > to_date('2011-01-01') AND 
CREATED_DATE < to_date('2016-10-31'))"
++ "ORDER BY PARENT_TYPE,CREATED_DATE LIMIT 501";
+
+ResultSet rs = viewConn.createStatement().executeQuery(query);
+String expectedPlanFormat = "CLIENT SERIAL 1-WAY RANGE SCAN OVER 
IDX ['tenant1','001','%s 00:00:00.001'] - ['tenant1','001','%s 
00:00:00.000']" + "\n" +
+"SERVER FILTER BY FIRST KEY ONLY" + "\n" +
+"SERVER 501 ROW LIMIT" + "\n" +
+"CLIENT 501 ROW LIMIT";
+assertEquals(String.format(expectedPlanFormat, "2011-01-01", 

phoenix git commit: PHOENIX-3516 Performance Issues with queries that have compound filters and specify phoenix.query.force.rowkeyorder=true

2016-12-22 Thread tdsilva
Repository: phoenix
Updated Branches:
  refs/heads/4.9-HBase-0.98 f3117248f -> f6a8acc9d


PHOENIX-3516 Performance Issues with queries that have compound filters and 
specify phoenix.query.force.rowkeyorder=true


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

Branch: refs/heads/4.9-HBase-0.98
Commit: f6a8acc9d0ef127d54af0e261be97319e0d04a12
Parents: f311724
Author: Thomas D'Silva 
Authored: Tue Dec 20 17:56:37 2016 -0800
Committer: Thomas D'Silva 
Committed: Thu Dec 22 10:50:30 2016 -0800

--
 .../end2end/TenantSpecificViewIndexIT.java  | 47 
 .../apache/phoenix/compile/WhereCompiler.java   |  3 +-
 .../org/apache/phoenix/util/ExpressionUtil.java | 10 +
 .../phoenix/query/KeyRangeIntersectTest.java|  9 +++-
 4 files changed, 67 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/f6a8acc9/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
index 3519cf7..cc2e46a 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
@@ -19,6 +19,7 @@ package org.apache.phoenix.end2end;
 
 import static org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceName;
 import static 
org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceSchemaName;
+import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -28,6 +29,7 @@ import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.Properties;
 
 import org.apache.hadoop.hbase.util.Bytes;
@@ -284,4 +286,49 @@ public class TenantSpecificViewIndexIT extends 
BaseTenantSpecificViewIndexIT {
 assertEquals("value1", rs.getString(1));
 assertFalse("No other rows should have been returned for the tenant", 
rs.next()); // should have just returned one record since for org1 we have only 
one row.
 }
+
+@Test
+public void testOverlappingDatesFilter() throws SQLException {
+String tenantUrl = getUrl() + ';' + TENANT_ID_ATTRIB + "=tenant1" + 
";" + QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB + "=true";
+String tableName = generateUniqueName();
+String viewName = generateUniqueName();
+String ddl = "CREATE TABLE " + tableName 
++ "(ORGANIZATION_ID CHAR(15) NOT NULL, "
++ "PARENT_TYPE CHAR(3) NOT NULL, "
++ "PARENT_ID CHAR(15) NOT NULL,"
++ "CREATED_DATE DATE NOT NULL "
++ "CONSTRAINT PK PRIMARY KEY (ORGANIZATION_ID, PARENT_TYPE, 
PARENT_ID, CREATED_DATE DESC)"
++ ") VERSIONS=1,MULTI_TENANT=true,REPLICATION_SCOPE=1"; 
+
+try (Connection conn = DriverManager.getConnection(getUrl());
+Connection viewConn = DriverManager.getConnection(tenantUrl) ) 
{
+// create table
+conn.createStatement().execute(ddl);
+// create index
+conn.createStatement().execute("CREATE INDEX IF NOT EXISTS IDX ON 
" + tableName + "(PARENT_TYPE, CREATED_DATE, PARENT_ID)");
+// create view
+viewConn.createStatement().execute("CREATE VIEW IF NOT EXISTS " + 
viewName + " AS SELECT * FROM "+ tableName );
+
+String query ="EXPLAIN SELECT PARENT_ID FROM " + viewName
++ " WHERE PARENT_TYPE='001' "
++ "AND (CREATED_DATE > to_date('2011-01-01') AND 
CREATED_DATE < to_date('2016-10-31'))"
++ "ORDER BY PARENT_TYPE,CREATED_DATE LIMIT 501";
+
+ResultSet rs = viewConn.createStatement().executeQuery(query);
+String expectedPlanFormat = "CLIENT SERIAL 1-WAY RANGE SCAN OVER 
IDX ['tenant1','001','%s 00:00:00.001'] - ['tenant1','001','%s 
00:00:00.000']" + "\n" +
+"SERVER FILTER BY FIRST KEY ONLY" + "\n" +
+"SERVER 501 ROW LIMIT" + "\n" +
+"CLIENT 501 ROW LIMIT";
+assertEquals(String.format(expectedPlanFormat,