phoenix git commit: PHOENIX-2169 Illegal data error on UPSERT SELECT and JOIN with salted tables(Ankit Singhal)
Repository: phoenix Updated Branches: refs/heads/4.x-HBase-1.0 35944997a -> 0e8f4b23c PHOENIX-2169 Illegal data error on UPSERT SELECT and JOIN with salted tables(Ankit Singhal) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/0e8f4b23 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/0e8f4b23 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/0e8f4b23 Branch: refs/heads/4.x-HBase-1.0 Commit: 0e8f4b23cfe44488e14f77b37b9426dd5707f6c9 Parents: 3594499 Author: Ankit SinghalAuthored: Thu Feb 4 15:29:44 2016 +0530 Committer: Ankit Singhal Committed: Thu Feb 4 15:29:44 2016 +0530 -- .../salted/SaltedTableUpsertSelectIT.java | 57 .../expression/ProjectedColumnExpression.java | 11 +++- .../visitor/CloneExpressionVisitor.java | 2 +- 3 files changed, 68 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/0e8f4b23/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java index 0a11ec7..65eeb20 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java @@ -225,4 +225,61 @@ public class SaltedTableUpsertSelectIT extends BaseHBaseManagedTimeIT { conn.close(); } } + +@Test +public void testUpsertSelectWithJoinOnSaltedTables() throws Exception { +Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); +Connection conn = DriverManager.getConnection(getUrl(), props); +conn.setAutoCommit(false); +try { +String ddl = "CREATE TABLE IF NOT EXISTS source1" + +" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" + +" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4"; +createTestTable(getUrl(), ddl); + +for (int i = 0; i < 1000; i++) { +String upsert = "UPSERT INTO source1(pk1, pk2, pk3, col1) VALUES (?,?,?,?)"; +PreparedStatement stmt = conn.prepareStatement(upsert); +stmt.setString(1, Integer.toString(i)); +stmt.setString(2, Integer.toString(i)); +stmt.setInt(3, i); +stmt.setInt(4, i); +stmt.execute(); +} +conn.commit(); + +String ddl2 = "CREATE TABLE IF NOT EXISTS source2" + +" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" + +" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4"; +createTestTable(getUrl(), ddl2); + +for (int i = 0; i < 1000; i++) { +String upsert = "UPSERT INTO source2(pk1, pk2, pk3, col1) VALUES (?,?,?,?)"; +PreparedStatement stmt = conn.prepareStatement(upsert); +stmt.setString(1, Integer.toString(i)); +stmt.setString(2, Integer.toString(i)); +stmt.setInt(3, i); +stmt.setInt(4, i); +stmt.execute(); +} +conn.commit(); + +String ddl3 = "CREATE TABLE IF NOT EXISTS dest" + +" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" + +" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4"; +createTestTable(getUrl(), ddl3); + +String query = "UPSERT INTO dest(pk1, pk2, pk3, col1) SELECT S1.pk1, S1.pk2, S2.pk3, S2.col1 FROM source1 AS S1 JOIN source2 AS S2 ON S1.pk1 = S2.pk1 AND S1.pk2 = S2.pk2 AND S1.pk3 = S2.pk3"; +conn.createStatement().execute(query); +conn.commit(); + +query = "SELECT COUNT(*) FROM dest"; +PreparedStatement stmt = conn.prepareStatement(query); +ResultSet rs = stmt.executeQuery(); +assertTrue(rs.next()); +assertEquals(1000, rs.getInt(1)); +} finally { +conn.close(); +} +} } http://git-wip-us.apache.org/repos/asf/phoenix/blob/0e8f4b23/phoenix-core/src/main/java/org/apache/phoenix/expression/ProjectedColumnExpression.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/ProjectedColumnExpression.java
phoenix git commit: PHOENIX-2169 Illegal data error on UPSERT SELECT and JOIN with salted tables(Ankit Singhal)
Repository: phoenix Updated Branches: refs/heads/master 12f6a6f48 -> 79724226c PHOENIX-2169 Illegal data error on UPSERT SELECT and JOIN with salted tables(Ankit Singhal) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/79724226 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/79724226 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/79724226 Branch: refs/heads/master Commit: 79724226c737c905b748d73fe8f4d70dca743578 Parents: 12f6a6f Author: Ankit SinghalAuthored: Thu Feb 4 15:27:04 2016 +0530 Committer: Ankit Singhal Committed: Thu Feb 4 15:27:04 2016 +0530 -- .../salted/SaltedTableUpsertSelectIT.java | 57 .../expression/ProjectedColumnExpression.java | 11 +++- .../visitor/CloneExpressionVisitor.java | 2 +- 3 files changed, 68 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/79724226/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java index 0a11ec7..65eeb20 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java @@ -225,4 +225,61 @@ public class SaltedTableUpsertSelectIT extends BaseHBaseManagedTimeIT { conn.close(); } } + +@Test +public void testUpsertSelectWithJoinOnSaltedTables() throws Exception { +Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); +Connection conn = DriverManager.getConnection(getUrl(), props); +conn.setAutoCommit(false); +try { +String ddl = "CREATE TABLE IF NOT EXISTS source1" + +" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" + +" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4"; +createTestTable(getUrl(), ddl); + +for (int i = 0; i < 1000; i++) { +String upsert = "UPSERT INTO source1(pk1, pk2, pk3, col1) VALUES (?,?,?,?)"; +PreparedStatement stmt = conn.prepareStatement(upsert); +stmt.setString(1, Integer.toString(i)); +stmt.setString(2, Integer.toString(i)); +stmt.setInt(3, i); +stmt.setInt(4, i); +stmt.execute(); +} +conn.commit(); + +String ddl2 = "CREATE TABLE IF NOT EXISTS source2" + +" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" + +" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4"; +createTestTable(getUrl(), ddl2); + +for (int i = 0; i < 1000; i++) { +String upsert = "UPSERT INTO source2(pk1, pk2, pk3, col1) VALUES (?,?,?,?)"; +PreparedStatement stmt = conn.prepareStatement(upsert); +stmt.setString(1, Integer.toString(i)); +stmt.setString(2, Integer.toString(i)); +stmt.setInt(3, i); +stmt.setInt(4, i); +stmt.execute(); +} +conn.commit(); + +String ddl3 = "CREATE TABLE IF NOT EXISTS dest" + +" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" + +" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4"; +createTestTable(getUrl(), ddl3); + +String query = "UPSERT INTO dest(pk1, pk2, pk3, col1) SELECT S1.pk1, S1.pk2, S2.pk3, S2.col1 FROM source1 AS S1 JOIN source2 AS S2 ON S1.pk1 = S2.pk1 AND S1.pk2 = S2.pk2 AND S1.pk3 = S2.pk3"; +conn.createStatement().execute(query); +conn.commit(); + +query = "SELECT COUNT(*) FROM dest"; +PreparedStatement stmt = conn.prepareStatement(query); +ResultSet rs = stmt.executeQuery(); +assertTrue(rs.next()); +assertEquals(1000, rs.getInt(1)); +} finally { +conn.close(); +} +} } http://git-wip-us.apache.org/repos/asf/phoenix/blob/79724226/phoenix-core/src/main/java/org/apache/phoenix/expression/ProjectedColumnExpression.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/ProjectedColumnExpression.java
phoenix git commit: PHOENIX-2169 Illegal data error on UPSERT SELECT and JOIN with salted tables(Ankit Singhal)
Repository: phoenix Updated Branches: refs/heads/4.x-HBase-0.98 d0174744c -> 20a995e55 PHOENIX-2169 Illegal data error on UPSERT SELECT and JOIN with salted tables(Ankit Singhal) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/20a995e5 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/20a995e5 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/20a995e5 Branch: refs/heads/4.x-HBase-0.98 Commit: 20a995e554cafc99ab1a35fa8b8f957dc1f2c54f Parents: d017474 Author: Ankit SinghalAuthored: Thu Feb 4 15:30:23 2016 +0530 Committer: Ankit Singhal Committed: Thu Feb 4 15:30:23 2016 +0530 -- .../salted/SaltedTableUpsertSelectIT.java | 57 .../expression/ProjectedColumnExpression.java | 11 +++- .../visitor/CloneExpressionVisitor.java | 2 +- 3 files changed, 68 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/20a995e5/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java index 0a11ec7..65eeb20 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java @@ -225,4 +225,61 @@ public class SaltedTableUpsertSelectIT extends BaseHBaseManagedTimeIT { conn.close(); } } + +@Test +public void testUpsertSelectWithJoinOnSaltedTables() throws Exception { +Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); +Connection conn = DriverManager.getConnection(getUrl(), props); +conn.setAutoCommit(false); +try { +String ddl = "CREATE TABLE IF NOT EXISTS source1" + +" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" + +" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4"; +createTestTable(getUrl(), ddl); + +for (int i = 0; i < 1000; i++) { +String upsert = "UPSERT INTO source1(pk1, pk2, pk3, col1) VALUES (?,?,?,?)"; +PreparedStatement stmt = conn.prepareStatement(upsert); +stmt.setString(1, Integer.toString(i)); +stmt.setString(2, Integer.toString(i)); +stmt.setInt(3, i); +stmt.setInt(4, i); +stmt.execute(); +} +conn.commit(); + +String ddl2 = "CREATE TABLE IF NOT EXISTS source2" + +" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" + +" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4"; +createTestTable(getUrl(), ddl2); + +for (int i = 0; i < 1000; i++) { +String upsert = "UPSERT INTO source2(pk1, pk2, pk3, col1) VALUES (?,?,?,?)"; +PreparedStatement stmt = conn.prepareStatement(upsert); +stmt.setString(1, Integer.toString(i)); +stmt.setString(2, Integer.toString(i)); +stmt.setInt(3, i); +stmt.setInt(4, i); +stmt.execute(); +} +conn.commit(); + +String ddl3 = "CREATE TABLE IF NOT EXISTS dest" + +" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" + +" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4"; +createTestTable(getUrl(), ddl3); + +String query = "UPSERT INTO dest(pk1, pk2, pk3, col1) SELECT S1.pk1, S1.pk2, S2.pk3, S2.col1 FROM source1 AS S1 JOIN source2 AS S2 ON S1.pk1 = S2.pk1 AND S1.pk2 = S2.pk2 AND S1.pk3 = S2.pk3"; +conn.createStatement().execute(query); +conn.commit(); + +query = "SELECT COUNT(*) FROM dest"; +PreparedStatement stmt = conn.prepareStatement(query); +ResultSet rs = stmt.executeQuery(); +assertTrue(rs.next()); +assertEquals(1000, rs.getInt(1)); +} finally { +conn.close(); +} +} } http://git-wip-us.apache.org/repos/asf/phoenix/blob/20a995e5/phoenix-core/src/main/java/org/apache/phoenix/expression/ProjectedColumnExpression.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/ProjectedColumnExpression.java