You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ma...@apache.org on 2014/01/31 20:24:29 UTC
[1/2] git commit: Fix incorrect hashCode in ImmutableBytesPtr caused
by incorrect order of calling ImmutableBytesPtr#set();
Add salted table for RHS/LHS in HashJoinTest (github #658)
Updated Branches:
refs/heads/master b2a8e2dd2 -> ef8f6b0a3
Fix incorrect hashCode in ImmutableBytesPtr caused by incorrect order of calling ImmutableBytesPtr#set(); Add salted table for RHS/LHS in HashJoinTest (github #658)
Project: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/commit/0a39c5fd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/tree/0a39c5fd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/diff/0a39c5fd
Branch: refs/heads/master
Commit: 0a39c5fd1b4346299185ff9184f4aa7f78d24348
Parents: 2491077
Author: maryannxue <ma...@apache.org>
Authored: Fri Jan 31 11:27:01 2014 -0500
Committer: maryannxue <ma...@apache.org>
Committed: Fri Jan 31 11:27:01 2014 -0500
----------------------------------------------------------------------
.../apache/phoenix/compile/JoinCompiler.java | 5 +
.../phoenix/expression/DateAddExpression.java | 2 +-
.../expression/DateSubtractExpression.java | 2 +-
.../phoenix/expression/DoubleAddExpression.java | 2 +-
.../expression/DoubleDivideExpression.java | 2 +-
.../expression/DoubleMultiplyExpression.java | 2 +-
.../expression/DoubleSubtractExpression.java | 2 +-
.../phoenix/expression/LongAddExpression.java | 2 +-
.../expression/LongDivideExpression.java | 2 +-
.../expression/LongMultiplyExpression.java | 2 +-
.../expression/LongSubtractExpression.java | 2 +-
.../aggregator/DoubleSumAggregator.java | 2 +-
.../aggregator/NumberSumAggregator.java | 2 +-
.../function/SumAggregateFunction.java | 5 +-
.../apache/phoenix/end2end/HashJoinTest.java | 160 +++++++++++++++++--
15 files changed, 170 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java
index 4bbb357..0fc9734 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java
@@ -600,6 +600,11 @@ public class JoinCompiler {
return lType == null ? rType : lType; // to preserve UNSIGNED type
}
+ if ((lType == null || lType.isCoercibleTo(PDataType.DOUBLE))
+ && (rType == null || rType.isCoercibleTo(PDataType.DOUBLE))) {
+ return lType == null ? rType : lType; // to preserve UNSIGNED type
+ }
+
if ((lType == null || lType.isCoercibleTo(PDataType.DECIMAL))
&& (rType == null || rType.isCoercibleTo(PDataType.DECIMAL))) {
return PDataType.DECIMAL;
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/DateAddExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/DateAddExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/DateAddExpression.java
index a36bb48..8556015 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/DateAddExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/DateAddExpression.java
@@ -67,8 +67,8 @@ public class DateAddExpression extends AddExpression {
finalResult += value;
}
byte[] resultPtr = new byte[getDataType().getByteSize()];
+ getDataType().getCodec().encodeLong(finalResult, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeLong(finalResult, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/DateSubtractExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/DateSubtractExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/DateSubtractExpression.java
index 7329aff..3a66eea 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/DateSubtractExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/DateSubtractExpression.java
@@ -67,8 +67,8 @@ public class DateSubtractExpression extends SubtractExpression {
}
}
byte[] resultPtr=new byte[getDataType().getByteSize()];
+ getDataType().getCodec().encodeLong(finalResult, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeLong(finalResult, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleAddExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleAddExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleAddExpression.java
index 96fc9fa..6e85a47 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleAddExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleAddExpression.java
@@ -57,8 +57,8 @@ public class DoubleAddExpression extends AddExpression {
}
}
byte[] resultPtr = new byte[getDataType().getByteSize()];
+ getDataType().getCodec().encodeDouble(result, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeDouble(result, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleDivideExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleDivideExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleDivideExpression.java
index 561cf90..20307e6 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleDivideExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleDivideExpression.java
@@ -61,8 +61,8 @@ public class DoubleDivideExpression extends DivideExpression {
}
}
byte[] resultPtr = new byte[getDataType().getByteSize()];
+ getDataType().getCodec().encodeDouble(result, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeDouble(result, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleMultiplyExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleMultiplyExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleMultiplyExpression.java
index b9e8165..9fe0bee 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleMultiplyExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleMultiplyExpression.java
@@ -57,8 +57,8 @@ public class DoubleMultiplyExpression extends MultiplyExpression {
}
}
byte[] resultPtr = new byte[getDataType().getByteSize()];
+ getDataType().getCodec().encodeDouble(result, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeDouble(result, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleSubtractExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleSubtractExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleSubtractExpression.java
index 8752c15..79e4568 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleSubtractExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/DoubleSubtractExpression.java
@@ -61,8 +61,8 @@ public class DoubleSubtractExpression extends SubtractExpression {
}
}
byte[] resultPtr = new byte[getDataType().getByteSize()];
+ getDataType().getCodec().encodeDouble(result, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeDouble(result, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/LongAddExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/LongAddExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/LongAddExpression.java
index a14286d..e2fb8ef 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/LongAddExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/LongAddExpression.java
@@ -49,8 +49,8 @@ public class LongAddExpression extends AddExpression {
finalResult += childvalue;
}
byte[] resultPtr=new byte[PDataType.LONG.getByteSize()];
+ getDataType().getCodec().encodeLong(finalResult, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeLong(finalResult, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/LongDivideExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/LongDivideExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/LongDivideExpression.java
index 68560a6..9096794 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/LongDivideExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/LongDivideExpression.java
@@ -53,8 +53,8 @@ public class LongDivideExpression extends DivideExpression {
}
}
byte[] resultPtr=new byte[PDataType.LONG.getByteSize()];
+ getDataType().getCodec().encodeLong(finalResult, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeLong(finalResult, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/LongMultiplyExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/LongMultiplyExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/LongMultiplyExpression.java
index 508d33c..9e27957 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/LongMultiplyExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/LongMultiplyExpression.java
@@ -52,8 +52,8 @@ public class LongMultiplyExpression extends MultiplyExpression {
finalResult *= childvalue;
}
byte[] resultPtr=new byte[getDataType().getByteSize()];
+ getDataType().getCodec().encodeLong(finalResult, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeLong(finalResult, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/LongSubtractExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/LongSubtractExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/LongSubtractExpression.java
index 56317d6..29b3374 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/LongSubtractExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/LongSubtractExpression.java
@@ -70,8 +70,8 @@ public class LongSubtractExpression extends SubtractExpression {
}
}
byte[] resultPtr=new byte[getDataType().getByteSize()];
+ getDataType().getCodec().encodeLong(finalResult, resultPtr, 0);
ptr.set(resultPtr);
- getDataType().getCodec().encodeLong(finalResult, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/DoubleSumAggregator.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/DoubleSumAggregator.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/DoubleSumAggregator.java
index fa1dda7..aafb460 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/DoubleSumAggregator.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/DoubleSumAggregator.java
@@ -64,8 +64,8 @@ public class DoubleSumAggregator extends BaseAggregator {
}
initBuffer();
}
+ getDataType().getCodec().encodeDouble(sum, buffer, 0);
ptr.set(buffer);
- getDataType().getCodec().encodeDouble(sum, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/NumberSumAggregator.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/NumberSumAggregator.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/NumberSumAggregator.java
index a7cfcd1..7904693 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/NumberSumAggregator.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/aggregator/NumberSumAggregator.java
@@ -83,8 +83,8 @@ abstract public class NumberSumAggregator extends BaseAggregator {
}
initBuffer();
}
+ getDataType().getCodec().encodeLong(sum, buffer, 0);
ptr.set(buffer);
- getDataType().getCodec().encodeLong(sum, ptr);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SumAggregateFunction.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SumAggregateFunction.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SumAggregateFunction.java
index ab64ce8..853e2ba 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SumAggregateFunction.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SumAggregateFunction.java
@@ -117,8 +117,9 @@ public class SumAggregateFunction extends DelegateConstantToCountAggregateFuncti
} else {
long constantLongValue = ((Number)constantValue).longValue();
long value = constantLongValue * type.getCodec().decodeLong(ptr, null);
- ptr.set(new byte[type.getByteSize()]);
- type.getCodec().encodeLong(value, ptr);
+ byte[] resultPtr = new byte[type.getByteSize()];
+ type.getCodec().encodeLong(value, resultPtr, 0);
+ ptr.set(resultPtr);
}
}
return true;
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/0a39c5fd/phoenix-core/src/test/java/org/apache/phoenix/end2end/HashJoinTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/end2end/HashJoinTest.java b/phoenix-core/src/test/java/org/apache/phoenix/end2end/HashJoinTest.java
index 7c1b50f..8d0dc76 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/end2end/HashJoinTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/end2end/HashJoinTest.java
@@ -1439,14 +1439,6 @@ public class HashJoinTest extends BaseHBaseManagedTimeTest {
@Test
public void testUpsertWithJoin() throws Exception {
String tempTable = "TEMP_JOINED_TABLE";
- String upsertQuery1 = "UPSERT INTO " + tempTable + "(order_id, item_name, supplier_name, quantity, date) "
- + "SELECT order_id, i.name, s.name, quantity, date FROM " + JOIN_ORDER_TABLE + " o LEFT JOIN "
- + JOIN_ITEM_TABLE + " i ON o.item_id = i.item_id LEFT JOIN "
- + JOIN_SUPPLIER_TABLE + " s ON i.supplier_id = s.supplier_id";
- String upsertQuery2 = "UPSERT INTO " + tempTable + "(order_id, item_name, quantity) "
- + "SELECT 'ORDER_SUM', i.name, sum(quantity) FROM " + JOIN_ORDER_TABLE + " o LEFT JOIN "
- + JOIN_ITEM_TABLE + " i ON o.item_id = i.item_id GROUP BY i.name ORDER BY i.name";
- String query = "SELECT * FROM " + tempTable;
Properties props = new Properties(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(PHOENIX_JDBC_URL, props);
conn.setAutoCommit(true);
@@ -1458,9 +1450,20 @@ public class HashJoinTest extends BaseHBaseManagedTimeTest {
+ " quantity integer, "
+ " date timestamp "
+ " CONSTRAINT pk PRIMARY KEY (order_id, item_name))");
- conn.createStatement().execute(upsertQuery1);
- conn.createStatement().execute(upsertQuery2);
+ conn.createStatement().execute("UPSERT INTO " + tempTable
+ + "(order_id, item_name, supplier_name, quantity, date) "
+ + "SELECT order_id, i.name, s.name, quantity, date FROM "
+ + JOIN_ORDER_TABLE + " o LEFT JOIN "
+ + JOIN_ITEM_TABLE + " i ON o.item_id = i.item_id LEFT JOIN "
+ + JOIN_SUPPLIER_TABLE + " s ON i.supplier_id = s.supplier_id");
+ conn.createStatement().execute("UPSERT INTO " + tempTable
+ + "(order_id, item_name, quantity) "
+ + "SELECT 'ORDER_SUM', i.name, sum(quantity) FROM "
+ + JOIN_ORDER_TABLE + " o LEFT JOIN "
+ + JOIN_ITEM_TABLE + " i ON o.item_id = i.item_id "
+ + "GROUP BY i.name ORDER BY i.name");
+ String query = "SELECT * FROM " + tempTable;
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -1523,5 +1526,142 @@ public class HashJoinTest extends BaseHBaseManagedTimeTest {
conn.close();
}
}
+
+ @Test
+ public void testJoinOverSaltedTables() throws Exception {
+ String tempTableNoSalting = "TEMP_TABLE_NO_SALTING";
+ String tempTableWithSalting = "TEMP_TABLE_WITH_SALTING";
+ Properties props = new Properties(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(PHOENIX_JDBC_URL, props);
+ try {
+ conn.createStatement().execute("CREATE TABLE " + tempTableNoSalting
+ + " (mypk INTEGER NOT NULL PRIMARY KEY, "
+ + " col1 INTEGER)");
+ conn.createStatement().execute("CREATE TABLE " + tempTableWithSalting
+ + " (mypk INTEGER NOT NULL PRIMARY KEY, "
+ + " col1 INTEGER) SALT_BUCKETS=4");
+
+ PreparedStatement upsertStmt = conn.prepareStatement(
+ "upsert into " + tempTableNoSalting + "(mypk, col1) " + "values (?, ?)");
+ for (int i = 0; i < 3; i++) {
+ upsertStmt.setInt(1, i + 1);
+ upsertStmt.setInt(2, 3 - i);
+ upsertStmt.execute();
+ }
+ conn.commit();
+
+ upsertStmt = conn.prepareStatement(
+ "upsert into " + tempTableWithSalting + "(mypk, col1) " + "values (?, ?)");
+ for (int i = 0; i < 6; i++) {
+ upsertStmt.setInt(1, i + 1);
+ upsertStmt.setInt(2, 3 - (i % 3));
+ upsertStmt.execute();
+ }
+ conn.commit();
+
+ // LHS=unsalted JOIN RHS=salted
+ String query = "SELECT lhs.mypk, lhs.col1, rhs.mypk, rhs.col1 FROM "
+ + tempTableNoSalting + " lhs JOIN "
+ + tempTableWithSalting + " rhs ON rhs.mypk = lhs.col1";
+ PreparedStatement statement = conn.prepareStatement(query);
+ ResultSet rs = statement.executeQuery();
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 1);
+ assertEquals(rs.getInt(2), 3);
+ assertEquals(rs.getInt(3), 3);
+ assertEquals(rs.getInt(4), 1);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 2);
+ assertEquals(rs.getInt(2), 2);
+ assertEquals(rs.getInt(3), 2);
+ assertEquals(rs.getInt(4), 2);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 3);
+ assertEquals(rs.getInt(2), 1);
+ assertEquals(rs.getInt(3), 1);
+ assertEquals(rs.getInt(4), 3);
+
+ assertFalse(rs.next());
+
+ // LHS=salted JOIN RHS=salted
+ query = "SELECT lhs.mypk, lhs.col1, rhs.mypk, rhs.col1 FROM "
+ + tempTableWithSalting + " lhs JOIN "
+ + tempTableNoSalting + " rhs ON rhs.mypk = lhs.col1";
+ statement = conn.prepareStatement(query);
+ rs = statement.executeQuery();
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 1);
+ assertEquals(rs.getInt(2), 3);
+ assertEquals(rs.getInt(3), 3);
+ assertEquals(rs.getInt(4), 1);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 2);
+ assertEquals(rs.getInt(2), 2);
+ assertEquals(rs.getInt(3), 2);
+ assertEquals(rs.getInt(4), 2);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 3);
+ assertEquals(rs.getInt(2), 1);
+ assertEquals(rs.getInt(3), 1);
+ assertEquals(rs.getInt(4), 3);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 4);
+ assertEquals(rs.getInt(2), 3);
+ assertEquals(rs.getInt(3), 3);
+ assertEquals(rs.getInt(4), 1);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 5);
+ assertEquals(rs.getInt(2), 2);
+ assertEquals(rs.getInt(3), 2);
+ assertEquals(rs.getInt(4), 2);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 6);
+ assertEquals(rs.getInt(2), 1);
+ assertEquals(rs.getInt(3), 1);
+ assertEquals(rs.getInt(4), 3);
+ assertFalse(rs.next());
+
+ // LHS=salted JOIN RHS=salted
+ query = "SELECT lhs.mypk, lhs.col1, rhs.mypk, rhs.col1 FROM "
+ + tempTableWithSalting + " lhs JOIN "
+ + tempTableWithSalting + " rhs ON rhs.mypk = (lhs.col1 + 3)";
+ statement = conn.prepareStatement(query);
+ rs = statement.executeQuery();
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 1);
+ assertEquals(rs.getInt(2), 3);
+ assertEquals(rs.getInt(3), 6);
+ assertEquals(rs.getInt(4), 1);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 2);
+ assertEquals(rs.getInt(2), 2);
+ assertEquals(rs.getInt(3), 5);
+ assertEquals(rs.getInt(4), 2);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 3);
+ assertEquals(rs.getInt(2), 1);
+ assertEquals(rs.getInt(3), 4);
+ assertEquals(rs.getInt(4), 3);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 4);
+ assertEquals(rs.getInt(2), 3);
+ assertEquals(rs.getInt(3), 6);
+ assertEquals(rs.getInt(4), 1);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 5);
+ assertEquals(rs.getInt(2), 2);
+ assertEquals(rs.getInt(3), 5);
+ assertEquals(rs.getInt(4), 2);
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 6);
+ assertEquals(rs.getInt(2), 1);
+ assertEquals(rs.getInt(3), 4);
+ assertEquals(rs.getInt(4), 3);
+
+ assertFalse(rs.next());
+ } finally {
+ conn.close();
+ }
+ }
}
[2/2] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-phoenix
Posted by ma...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-phoenix
Project: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/commit/ef8f6b0a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/tree/ef8f6b0a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/diff/ef8f6b0a
Branch: refs/heads/master
Commit: ef8f6b0a35d4e3ea9627244cf966c1f6c8d2a84d
Parents: 0a39c5f b2a8e2d
Author: maryannxue <ma...@apache.org>
Authored: Fri Jan 31 13:15:27 2014 -0500
Committer: maryannxue <ma...@apache.org>
Committed: Fri Jan 31 13:15:27 2014 -0500
----------------------------------------------------------------------
.../phoenix/end2end/TenantSpecificTablesDDLTest.java | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
----------------------------------------------------------------------