in phoenix-core/src/it/java/org/apache/phoenix/end2end/VarBinaryEncoded1IT.java [1522:1887]
public void testVarBinaryPkSchema6() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
final String tableName = generateUniqueName();
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.createStatement().execute("CREATE TABLE " + tableName
+ " (PK1 VARBINARY_ENCODED, PK2 DOUBLE NOT NULL, PK3 VARBINARY_ENCODED,"
+ " COL1 VARBINARY_ENCODED, COL2 VARBINARY_ENCODED,"
+ " COL3 VARBINARY_ENCODED CONSTRAINT pk PRIMARY KEY(PK1, PK2, PK3)) "
+ tableDDLOptions);
byte[] b1 = new byte[] {1, 1, 19, -28, 24, 1, 1, -11, -21, 1};
double b2 = 4148316.50906;
byte[] b3 = new byte[] {4, 34, -19, 8, -73, 3, 4, 23};
byte[] b4 = new byte[] {56, 50, 19, 34, 83, -101, -102, 91};
byte[] b5 = new byte[] {10, 55, 19, -5, -34, 0, 0, 0, 0, 1};
byte[] b6 = new byte[] {-11, 55, -119, 8, 0, 1, 2, -4, 33};
byte[] b10 = new byte[] {1, 1, 19, -28, 25, -1, 1, -11, -21, -1};
double b20 = 3479039.03887;
byte[] b30 = new byte[] {4, 1, -19, 8, 0, -73, 3, 4, 23};
byte[] b40 = new byte[] {56, 50, 19, 34, 83, -101, -102, 91};
byte[] b50 = new byte[] {10, 55, 19, -5, -34, 0, 0, 0, 0, 1};
byte[] b60 = new byte[] {-11, 55, -119, 8, 0, 1, 2, -4, 33};
byte[] b11 = new byte[] {1, 1, 20, -28, 0, -1, 0, -11, -21, -1};
double b21 = 3579039.03887;
byte[] b31 = new byte[] {4, 1, 0, 0, 0, 73, 3, 0, 23};
byte[] b41 = new byte[] {56, 50, 19, 0, 34, 83, -101, -102, 91};
byte[] b51 = new byte[] {10, 55, 0, 19, -5, -34, 0, 0, 0, 0, 1};
byte[] b61 = new byte[] {-11, 55, -119, 0, 8, 0, 1, 2, -4, 33};
byte[] b12 = new byte[] {1, 1, 20, -28, 0, -1, 0, -11, -21, -1};
double b22 = 3579039.038871;
byte[] b32 = new byte[] {4, 1, 75, 0, 0, 73, 0, -24, 3, 0, 12, 99, 23};
byte[] b42 = new byte[] {56, 50, 19, 0, 34, 83, -101, -102, 91};
byte[] b52 = new byte[] {10, 55, 0, 19, -5, -34, 0, 0, 0, 0, 1};
byte[] b62 = new byte[] {-11, 55, -119, 0, 8, 0, 1, 2, -4, 33};
byte[] b13 = new byte[] {1, 1, 20, -28, 0, -1, 0, -11, -21, -1};
double b23 = 3579039.03887;
byte[] b33 = new byte[] {4, 1, 0, 0, 0, 0, 22, 122, 48, -121, 73, 3, 0, 23};
byte[] b43 = new byte[] {56, 50, 19, 0, 34, 83, -101, -102, 91, 92};
byte[] b53 = new byte[] {10, 55, 0, 19, -5, -34, 0, -12, 0, 0, 0, 1};
byte[] b63 = new byte[] {-11, 55, -119, 0, 8, 0, 1, 2, -4, 33};
byte[] b15 = new byte[] {1, 1, 20, -28, 0, -1, 0, -11, -21, -1};
double b25 = 3579039.03887;
byte[] b35 = null;
byte[] b45 = new byte[] {56, 50, 19, 0, 34, 83, -101, -102, 91, 92};
byte[] b55 = new byte[] {10, 55, 0, 19, -5, -34, 0, -12, 0, 0, 0, 1};
byte[] b65 = new byte[] {-11, 55, -119, 0, 8, 0, 1, 2, -4, 33};
try (PreparedStatement preparedStatement = conn.prepareStatement("UPSERT INTO " + tableName
+ "(PK1, PK2, PK3, COL1, COL2, COL3) VALUES (?, ?, ?, ?, ?, ?)")) {
upsertRow(preparedStatement, Bytes.toBytes("pk1-ehgir4jf"), 937598.284D,
Bytes.toBytes("pk33ogjirhhf"), Bytes.toBytes("col19fnbb0hf0t"),
Bytes.toBytes("col21048rnbfpe3-"), Bytes.toBytes("col319efnrugifj"));
upsertRow(preparedStatement, b10, b20, b30, b40, b50, b60);
upsertRow(preparedStatement, b1, b2, b3, b4, b5, b6);
upsertRow(preparedStatement, b11, b21, b31, b41, b51, b61);
upsertRow(preparedStatement, b12, b22, b32, b42, b52, b62);
upsertRow(preparedStatement, b13, b23, b33, b43, b53, b63);
upsertRow(preparedStatement, b15, b25, b35, b45, b55, b65);
}
conn.commit();
PreparedStatement pst = conn.prepareStatement("SELECT * FROM " + tableName);
ResultSet resultSet = pst.executeQuery();
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b1, resultSet.getBytes(1));
Assert.assertEquals(b2, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b3, resultSet.getBytes(3));
Assert.assertArrayEquals(b4, resultSet.getBytes(4));
Assert.assertArrayEquals(b5, resultSet.getBytes(5));
Assert.assertArrayEquals(b6, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b10, resultSet.getBytes(1));
Assert.assertEquals(b20, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b30, resultSet.getBytes(3));
Assert.assertArrayEquals(b40, resultSet.getBytes(4));
Assert.assertArrayEquals(b50, resultSet.getBytes(5));
Assert.assertArrayEquals(b60, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b15, resultSet.getBytes(1));
Assert.assertEquals(b25, resultSet.getDouble(2), 0D);
Assert.assertNull(resultSet.getBytes(3));
Assert.assertArrayEquals(b45, resultSet.getBytes(4));
Assert.assertArrayEquals(b55, resultSet.getBytes(5));
Assert.assertArrayEquals(b65, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b13, resultSet.getBytes(1));
Assert.assertEquals(b23, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b33, resultSet.getBytes(3));
Assert.assertArrayEquals(b43, resultSet.getBytes(4));
Assert.assertArrayEquals(b53, resultSet.getBytes(5));
Assert.assertArrayEquals(b63, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b11, resultSet.getBytes(1));
Assert.assertEquals(b21, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b31, resultSet.getBytes(3));
Assert.assertArrayEquals(b41, resultSet.getBytes(4));
Assert.assertArrayEquals(b51, resultSet.getBytes(5));
Assert.assertArrayEquals(b61, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b12, resultSet.getBytes(1));
Assert.assertEquals(b22, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b32, resultSet.getBytes(3));
Assert.assertArrayEquals(b42, resultSet.getBytes(4));
Assert.assertArrayEquals(b52, resultSet.getBytes(5));
Assert.assertArrayEquals(b62, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(Bytes.toBytes("pk1-ehgir4jf"), resultSet.getBytes(1));
Assert.assertEquals(937598.284D, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(Bytes.toBytes("pk33ogjirhhf"), resultSet.getBytes(3));
Assert.assertArrayEquals(Bytes.toBytes("col19fnbb0hf0t"), resultSet.getBytes(4));
Assert.assertArrayEquals(Bytes.toBytes("col21048rnbfpe3-"), resultSet.getBytes(5));
Assert.assertArrayEquals(Bytes.toBytes("col319efnrugifj"), resultSet.getBytes(6));
Assert.assertFalse(resultSet.next());
PreparedStatement preparedStatement =
conn.prepareStatement("SELECT * FROM " + tableName + " WHERE PK1 = ?");
preparedStatement.setBytes(1, b11);
resultSet = preparedStatement.executeQuery();
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b15, resultSet.getBytes(1));
Assert.assertEquals(b25, resultSet.getDouble(2), 0D);
Assert.assertNull(resultSet.getBytes(3));
Assert.assertArrayEquals(b45, resultSet.getBytes(4));
Assert.assertArrayEquals(b55, resultSet.getBytes(5));
Assert.assertArrayEquals(b65, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b13, resultSet.getBytes(1));
Assert.assertEquals(b23, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b33, resultSet.getBytes(3));
Assert.assertArrayEquals(b43, resultSet.getBytes(4));
Assert.assertArrayEquals(b53, resultSet.getBytes(5));
Assert.assertArrayEquals(b63, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b11, resultSet.getBytes(1));
Assert.assertEquals(b21, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b31, resultSet.getBytes(3));
Assert.assertArrayEquals(b41, resultSet.getBytes(4));
Assert.assertArrayEquals(b51, resultSet.getBytes(5));
Assert.assertArrayEquals(b61, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b12, resultSet.getBytes(1));
Assert.assertEquals(b22, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b32, resultSet.getBytes(3));
Assert.assertArrayEquals(b42, resultSet.getBytes(4));
Assert.assertArrayEquals(b52, resultSet.getBytes(5));
Assert.assertArrayEquals(b62, resultSet.getBytes(6));
Assert.assertFalse(resultSet.next());
preparedStatement = conn.prepareStatement(
"SELECT * FROM " + tableName + " WHERE PK1 = ? AND PK2 IS NOT NULL ");
preparedStatement.setBytes(1, b11);
resultSet = preparedStatement.executeQuery();
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b15, resultSet.getBytes(1));
Assert.assertEquals(b25, resultSet.getDouble(2), 0D);
Assert.assertNull(resultSet.getBytes(3));
Assert.assertArrayEquals(b45, resultSet.getBytes(4));
Assert.assertArrayEquals(b55, resultSet.getBytes(5));
Assert.assertArrayEquals(b65, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b13, resultSet.getBytes(1));
Assert.assertEquals(b23, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b33, resultSet.getBytes(3));
Assert.assertArrayEquals(b43, resultSet.getBytes(4));
Assert.assertArrayEquals(b53, resultSet.getBytes(5));
Assert.assertArrayEquals(b63, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b11, resultSet.getBytes(1));
Assert.assertEquals(b21, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b31, resultSet.getBytes(3));
Assert.assertArrayEquals(b41, resultSet.getBytes(4));
Assert.assertArrayEquals(b51, resultSet.getBytes(5));
Assert.assertArrayEquals(b61, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b12, resultSet.getBytes(1));
Assert.assertEquals(b22, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b32, resultSet.getBytes(3));
Assert.assertArrayEquals(b42, resultSet.getBytes(4));
Assert.assertArrayEquals(b52, resultSet.getBytes(5));
Assert.assertArrayEquals(b62, resultSet.getBytes(6));
Assert.assertFalse(resultSet.next());
preparedStatement =
conn.prepareStatement("SELECT * FROM " + tableName + " WHERE PK1 = ? AND PK2 = ?");
preparedStatement.setBytes(1, b11);
preparedStatement.setDouble(2, b21);
resultSet = preparedStatement.executeQuery();
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b15, resultSet.getBytes(1));
Assert.assertEquals(b25, resultSet.getDouble(2), 0D);
Assert.assertNull(resultSet.getBytes(3));
Assert.assertArrayEquals(b45, resultSet.getBytes(4));
Assert.assertArrayEquals(b55, resultSet.getBytes(5));
Assert.assertArrayEquals(b65, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b13, resultSet.getBytes(1));
Assert.assertEquals(b23, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b33, resultSet.getBytes(3));
Assert.assertArrayEquals(b43, resultSet.getBytes(4));
Assert.assertArrayEquals(b53, resultSet.getBytes(5));
Assert.assertArrayEquals(b63, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b11, resultSet.getBytes(1));
Assert.assertEquals(b21, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b31, resultSet.getBytes(3));
Assert.assertArrayEquals(b41, resultSet.getBytes(4));
Assert.assertArrayEquals(b51, resultSet.getBytes(5));
Assert.assertArrayEquals(b61, resultSet.getBytes(6));
Assert.assertFalse(resultSet.next());
preparedStatement = conn.prepareStatement("SELECT * FROM " + tableName
+ " WHERE PK1 = ? AND PK2 BETWEEN ? AND ? AND PK3 IS NOT NULL");
preparedStatement.setBytes(1, b11);
preparedStatement.setDouble(2, 3579039.0388);
preparedStatement.setDouble(3, 3579039.03887);
resultSet = preparedStatement.executeQuery();
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b13, resultSet.getBytes(1));
Assert.assertEquals(b23, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b33, resultSet.getBytes(3));
Assert.assertArrayEquals(b43, resultSet.getBytes(4));
Assert.assertArrayEquals(b53, resultSet.getBytes(5));
Assert.assertArrayEquals(b63, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b11, resultSet.getBytes(1));
Assert.assertEquals(b21, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b31, resultSet.getBytes(3));
Assert.assertArrayEquals(b41, resultSet.getBytes(4));
Assert.assertArrayEquals(b51, resultSet.getBytes(5));
Assert.assertArrayEquals(b61, resultSet.getBytes(6));
Assert.assertFalse(resultSet.next());
preparedStatement = conn.prepareStatement("SELECT * FROM " + tableName
+ " WHERE PK1 = ? AND PK2 IN (?, ?, ?)");
preparedStatement.setBytes(1, b11);
preparedStatement.setDouble(2, b21);
preparedStatement.setDouble(3, b23);
preparedStatement.setDouble(4, b22);
resultSet = preparedStatement.executeQuery();
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b15, resultSet.getBytes(1));
Assert.assertEquals(b25, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b35, resultSet.getBytes(3));
Assert.assertArrayEquals(b45, resultSet.getBytes(4));
Assert.assertArrayEquals(b55, resultSet.getBytes(5));
Assert.assertArrayEquals(b65, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b13, resultSet.getBytes(1));
Assert.assertEquals(b23, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b33, resultSet.getBytes(3));
Assert.assertArrayEquals(b43, resultSet.getBytes(4));
Assert.assertArrayEquals(b53, resultSet.getBytes(5));
Assert.assertArrayEquals(b63, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b11, resultSet.getBytes(1));
Assert.assertEquals(b21, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b31, resultSet.getBytes(3));
Assert.assertArrayEquals(b41, resultSet.getBytes(4));
Assert.assertArrayEquals(b51, resultSet.getBytes(5));
Assert.assertArrayEquals(b61, resultSet.getBytes(6));
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b12, resultSet.getBytes(1));
Assert.assertEquals(b22, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b32, resultSet.getBytes(3));
Assert.assertArrayEquals(b42, resultSet.getBytes(4));
Assert.assertArrayEquals(b52, resultSet.getBytes(5));
Assert.assertArrayEquals(b62, resultSet.getBytes(6));
Assert.assertFalse(resultSet.next());
preparedStatement = conn.prepareStatement(
"SELECT * FROM " + tableName + " WHERE PK1 = ? AND PK2 = ? AND PK3 = ?");
preparedStatement.setBytes(1, b11);
preparedStatement.setDouble(2, b21);
preparedStatement.setBytes(3, b31);
resultSet = preparedStatement.executeQuery();
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b11, resultSet.getBytes(1));
Assert.assertEquals(b21, resultSet.getDouble(2), 0D);
Assert.assertArrayEquals(b31, resultSet.getBytes(3));
Assert.assertArrayEquals(b41, resultSet.getBytes(4));
Assert.assertArrayEquals(b51, resultSet.getBytes(5));
Assert.assertArrayEquals(b61, resultSet.getBytes(6));
Assert.assertFalse(resultSet.next());
preparedStatement = conn.prepareStatement(
"SELECT * FROM " + tableName + " WHERE PK1 = ? AND PK2 = ? AND PK3 IS NULL");
preparedStatement.setBytes(1, b11);
preparedStatement.setDouble(2, b21);
resultSet = preparedStatement.executeQuery();
Assert.assertTrue(resultSet.next());
Assert.assertArrayEquals(b15, resultSet.getBytes(1));
Assert.assertEquals(b25, resultSet.getDouble(2), 0D);
Assert.assertNull(resultSet.getBytes(3));
Assert.assertArrayEquals(b45, resultSet.getBytes(4));
Assert.assertArrayEquals(b55, resultSet.getBytes(5));
Assert.assertArrayEquals(b65, resultSet.getBytes(6));
Assert.assertFalse(resultSet.next());
}
}