phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/4.13-HBase-1.3 3f627f005 -> 8fd577f3f


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/4.13-HBase-1.3
Commit: 8fd577f3fe3ea6d9f678e29df16ffd1f6ae6744c
Parents: 3f627f0
Author: maryannxue 
Authored: Mon Jan 8 11:30:07 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:30:07 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/8fd577f3/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/4.13-HBase-1.2 05fa73891 -> 75d098f07


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/4.13-HBase-1.2
Commit: 75d098f07055ca862d656a1eee38015750576238
Parents: 05fa738
Author: maryannxue 
Authored: Mon Jan 8 11:29:37 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:29:37 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/75d098f0/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/4.13-HBase-1.1 3a7c4920d -> 2e174be96


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/4.13-HBase-1.1
Commit: 2e174be96a01c66b4e86bff5d9942a00b998e094
Parents: 3a7c492
Author: maryannxue 
Authored: Mon Jan 8 11:28:17 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:28:17 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/2e174be9/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/4.13-HBase-0.98 5fffaca72 -> f87509727


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/4.13-HBase-0.98
Commit: f87509727f1571be2a8964aff4cf2b1e2a627456
Parents: 5fffaca
Author: maryannxue 
Authored: Mon Jan 8 11:26:58 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:26:58 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/f8750972/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStateme

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/4.13-cdh5.11.2 868fdaacd -> 506696f5e


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/4.13-cdh5.11.2
Commit: 506696f5e73220ea04ed92fc5fd57de0c6d36f59
Parents: 868fdaa
Author: maryannxue 
Authored: Mon Jan 8 11:26:15 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:26:15 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/506696f5/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/5.x-HBase-2.0 fdf4d0a69 -> d36d058a7


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/5.x-HBase-2.0
Commit: d36d058a72899eea2c47bca062c4eeaa75d4257c
Parents: fdf4d0a
Author: maryannxue 
Authored: Mon Jan 8 11:21:06 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:21:06 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/d36d058a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement(

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/4.x-cdh5.11.2 ddb69e14b -> 5fbdab5b7


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/4.x-cdh5.11.2
Commit: 5fbdab5b7f1bbdac25f1a238c1bfd302351f525d
Parents: ddb69e1
Author: maryannxue 
Authored: Mon Jan 8 11:15:05 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:15:05 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/5fbdab5b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement(

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-1.1 a2eaaa263 -> 8acdf98c1


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/4.x-HBase-1.1
Commit: 8acdf98c171ed8755e980042963867e3e74915a5
Parents: a2eaaa2
Author: maryannxue 
Authored: Mon Jan 8 11:09:33 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:09:33 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/8acdf98c/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement(

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-1.2 81748b2ea -> b49dcbde1


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/4.x-HBase-1.2
Commit: b49dcbde12b269d1f89569dc01565ba54a1d801d
Parents: 81748b2
Author: maryannxue 
Authored: Mon Jan 8 11:07:08 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:07:08 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/b49dcbde/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement(

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-0.98 a2b218e8d -> 488389e73


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/4.x-HBase-0.98
Commit: 488389e73575782f58be78baeb7410cdb6f1b17b
Parents: a2b218e
Author: maryannxue 
Authored: Mon Jan 8 11:04:11 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 11:04:11 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/488389e7/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement

phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables

2018-01-08 Thread maryannxue
Repository: phoenix
Updated Branches:
  refs/heads/master 2136b002c -> b3854d2c1


PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables


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

Branch: refs/heads/master
Commit: b3854d2c16fa102e087ecdfba6f366ba4d174dc6
Parents: 2136b00
Author: maryannxue 
Authored: Mon Jan 8 10:59:43 2018 -0800
Committer: maryannxue 
Committed: Mon Jan 8 10:59:43 2018 -0800

--
 .../phoenix/end2end/SortMergeJoinMoreIT.java| 108 +++
 .../compile/TupleProjectionCompiler.java|   7 +-
 2 files changed, 111 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/b3854d2c/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index e61332b..a132728 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -634,4 +634,112 @@ public class SortMergeJoinMoreIT extends 
ParallelStatsDisabledIT {
 }
 }
 }
+
+@Test
+public void testBug4508() throws Exception {
+Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+Connection conn = DriverManager.getConnection(getUrl(), props);
+props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+props.setProperty("TenantId", "010");
+Connection conn010 = DriverManager.getConnection(getUrl(), props);
+try {
+// Salted tables
+String peopleTable = generateUniqueName();
+String myTable = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable + " 
(\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (PERSON_ID)) 
SALT_BUCKETS = 3");
+conn.createStatement().execute("CREATE TABLE " + myTable + " (\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (LOCALID, DSID)) 
SALT_BUCKETS = 3");
+verifyQueryPlanAndResultForBug4508(conn, peopleTable, myTable);
+
+// Salted multi-tenant tables
+String peopleTable2 = generateUniqueName();
+String myTable2 = generateUniqueName();
+conn.createStatement().execute("CREATE TABLE " + peopleTable2 + " 
(\n" +
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"PERSON_ID VARCHAR NOT NULL,\n" +
+"NAME VARCHAR\n" +
+"CONSTRAINT PK_TEST_PEOPLE PRIMARY KEY (TENANT_ID, 
PERSON_ID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+conn.createStatement().execute("CREATE TABLE " + myTable2 + " (\n" 
+
+"TENANT_ID VARCHAR NOT NULL,\n" +
+"LOCALID VARCHAR NOT NULL,\n" +
+"DSID VARCHAR(255) NOT NULL, \n" +
+"EID CHAR(40),\n" +
+"HAS_CANDIDATES BOOLEAN\n" +
+"CONSTRAINT PK_MYTABLE PRIMARY KEY (TENANT_ID, LOCALID, 
DSID))\n" +
+"SALT_BUCKETS = 3, MULTI_TENANT=true");
+verifyQueryPlanAndResultForBug4508(conn010, peopleTable2, 
myTable2);
+} finally {
+conn.close();
+conn010.close();
+}
+}
+
+private static void verifyQueryPlanAndResultForBug4508(
+Connection conn, String peopleTable, String myTable) throws 
Exception {
+PreparedStatement peopleTableUpsertStmt = conn.prepareStatement(
+"UPSERT INTO " + peopleTable + " VALUES(?, ?)");
+peopleTableUpsertStmt.setString(1, "X001");
+peopleTableUpsertStmt.setString(2, "Marcus");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X002");
+peopleTableUpsertStmt.setString(2, "Jenny");
+peopleTableUpsertStmt.execute();
+peopleTableUpsertStmt.setString(1, "X003");
+peopleTableUpsertStmt.setString(2, "Seymour");
+peopleTableUpsertStmt.execute();
+conn.commit();
+
+PreparedStatement myTableUpsertStmt = conn.prepareStatement(
+