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(-)
----------------------------------------------------------------------