in phoenix5-hive/src/it/java/org/apache/phoenix/hive/HivePhoenixStoreIT.java [274:333]
public void testJoinColumnMaps() throws Exception {
String testName = "testJoin";
utility.getTestFileSystem().createNewFile(new Path(hiveLogDir, testName + ".out"));
createFile("#### A masked pattern was here ####\n10\t200.0\tpart2\n", new Path(hiveOutputDir, testName + ".out").toString());
createFile(StringUtil.EMPTY_STRING, new Path(hiveLogDir, testName + ".out").toString());
StringBuilder sb = new StringBuilder();
sb.append("CREATE EXTERNAL TABLE joinTable3(ID int, ID2 String,description STRING," +
"db DOUBLE,fl FLOAT, us INT)" + HiveTestUtil.CRLF +
" STORED BY \"org.apache.phoenix.hive.PhoenixStorageHandler\"" + HiveTestUtil
.CRLF +
" TBLPROPERTIES(" + HiveTestUtil.CRLF +
" 'phoenix.table.name'='joinTable3'," + HiveTestUtil.CRLF +
" 'phoenix.zookeeper.znode.parent'='/hbase'," + HiveTestUtil.CRLF +
" 'phoenix.zookeeper.quorum'='localhost'," + HiveTestUtil.CRLF +
" 'phoenix.zookeeper.client.port'='" +
utility.getZkCluster().getClientPort() + "'," + HiveTestUtil.CRLF +
" 'phoenix.column.mapping' = 'id:i1, id2:I2, db:db'," + HiveTestUtil.CRLF +
" 'phoenix.rowkeys'='id,id2');" + HiveTestUtil.CRLF);
sb.append("CREATE EXTERNAL TABLE joinTable4(ID int, ID2 String,description STRING," +
"db DOUBLE,fl FLOAT, us INT)" + HiveTestUtil.CRLF +
" STORED BY \"org.apache.phoenix.hive.PhoenixStorageHandler\"" + HiveTestUtil
.CRLF +
" TBLPROPERTIES(" + HiveTestUtil.CRLF +
" 'phoenix.table.name'='joinTable4'," + HiveTestUtil.CRLF +
" 'phoenix.zookeeper.znode.parent'='/hbase'," + HiveTestUtil.CRLF +
" 'phoenix.zookeeper.quorum'='localhost'," + HiveTestUtil.CRLF +
" 'phoenix.zookeeper.client.port'='" +
utility.getZkCluster().getClientPort() + "'," + HiveTestUtil.CRLF +
" 'phoenix.column.mapping' = 'id:i1, id2:I2, db:db'," + HiveTestUtil.CRLF +
" 'phoenix.rowkeys'='id,id2');" + HiveTestUtil.CRLF);
sb.append("INSERT INTO TABLE joinTable3" + HiveTestUtil.CRLF +"VALUES (5, \'part1\',\'foodesc\',200,2.0,-1);" + HiveTestUtil.CRLF);
sb.append("INSERT INTO TABLE joinTable3" + HiveTestUtil.CRLF +"VALUES (10, \'part1\',\'foodesc\',200,2.0,-1);" + HiveTestUtil.CRLF);
sb.append("INSERT INTO TABLE joinTable4" + HiveTestUtil.CRLF +"VALUES (5, \'part2\',\'foodesc\',200,2.0,-1);" + HiveTestUtil.CRLF);
sb.append("INSERT INTO TABLE joinTable4" + HiveTestUtil.CRLF +"VALUES (10, \'part2\',\'foodesc\',200,2.0,-1);" + HiveTestUtil.CRLF);
sb.append("SELECT A.ID, a.db, B.ID2 from joinTable3 A join joinTable4 B on A.ID = B.ID WHERE A.ID=10;" +
HiveTestUtil.CRLF);
String fullPath = new Path(utility.getDataTestDir(), testName).toString();
createFile(sb.toString(), fullPath);
runTest(testName, fullPath);
//Test that Phoenix has correctly mapped columns. We are checking both, primary key and
// regular columns mapped and not mapped
String phoenixQuery = "SELECT \"i1\", \"I2\", \"db\" FROM joinTable3 where \"i1\" = 10 AND \"I2\" = 'part1' AND \"db\" = 200";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props);
PreparedStatement statement = conn.prepareStatement(phoenixQuery)) {
conn.setAutoCommit(true);
ResultSet rs = statement.executeQuery();
assert (rs.getMetaData().getColumnCount() == 3);
while (rs.next()) {
assert (rs.getInt(1) == 10);
assert (rs.getString(2).equalsIgnoreCase("part1"));
assert (rs.getDouble(3) == 200);
}
}
}