phoenix git commit: PHOENIX-4508 Order-by not optimized in sort-merge-join on salted tables
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
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
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
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
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
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
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
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
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
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
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( +