in phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicColumnWildcardIT.java [389:520]
public void testColumnFamilyWildcards() throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
conn.setAutoCommit(true);
String tableName = generateUniqueName();
conn.createStatement().execute(generateTableCreateDDL(tableName,
" (A INTEGER PRIMARY KEY, B VARCHAR, CF1.C INTEGER, CF2.D VARCHAR)"));
conn.createStatement().execute("UPSERT INTO " + tableName +
" (A, B, C, D) VALUES(10, 'test1', 2, 'test2')");
conn.createStatement().execute("UPSERT INTO " + tableName +
" (A, B, C, D, DYN0 INTEGER) VALUES(20, 'test3', 4, 'test4', 100)");
conn.createStatement().execute("UPSERT INTO " + tableName +
" (A, B, C, D, CF1.DYN1 VARCHAR, CF1.DYN2 INTEGER)" +
" VALUES(30, 'test5', 5, 'test6', 'test7', 70)");
conn.createStatement().execute("UPSERT INTO " + tableName +
" (A, B, C, D, CF2.DYN1 VARCHAR, CF2.DYN2 INTEGER)" +
" VALUES(40, 'test8', 6, 'test9', 'test10', 80)");
conn.createStatement().execute("UPSERT INTO " + tableName +
" (A, B, C, D, CF1.DYN3 VARCHAR, CF2.DYN4 INTEGER)" +
" VALUES(50, 'test11', 7, 'test12', 'test13', 90)");
ResultSet rs = conn.createStatement().executeQuery("SELECT CF1.* FROM " + tableName);
int rsCounter = 0;
while(rs.next()) {
ResultSetMetaData rmd = rs.getMetaData();
int count = rmd.getColumnCount();
assertEquals(rsCounter <= 1 || rsCounter == 3 ?
1 : rsCounter == 2 ? 3 : 2, count);
for (int i = 1; i <= count; i++) {
if (rsCounter == 0) {
if (i == 1) {
assertEquals("C", rmd.getColumnName(i));
assertEquals(INTEGER, rmd.getColumnType(i));
assertEquals(2, rs.getObject(i));
}
} else if (rsCounter == 1) {
if (i == 1) {
assertEquals("C", rmd.getColumnName(i));
assertEquals(INTEGER, rmd.getColumnType(i));
assertEquals(4, rs.getObject(i));
}
} else if (rsCounter == 2) {
if (i == 1) {
assertEquals("C", rmd.getColumnName(i));
assertEquals(INTEGER, rmd.getColumnType(i));
assertEquals(5, rs.getObject(i));
} else if (i == 2) {
assertEquals("DYN1", rmd.getColumnName(i));
assertEquals(VARCHAR, rmd.getColumnType(i));
assertEquals("test7", rs.getObject(i));
} else if (i == 3) {
assertEquals("DYN2", rmd.getColumnName(i));
assertEquals(INTEGER, rmd.getColumnType(i));
assertEquals(70, rs.getObject(i));
}
} else if (rsCounter == 3) {
if (i == 1) {
assertEquals("C", rmd.getColumnName(i));
assertEquals(INTEGER, rmd.getColumnType(i));
assertEquals(6, rs.getObject(i));
}
} else if (rsCounter == 4) {
if (i == 1) {
assertEquals("C", rmd.getColumnName(i));
assertEquals(INTEGER, rmd.getColumnType(i));
assertEquals(7, rs.getObject(i));
} else if (i == 2) {
assertEquals("DYN3", rmd.getColumnName(i));
assertEquals(VARCHAR, rmd.getColumnType(i));
assertEquals("test13", rs.getObject(i));
}
}
}
rsCounter++;
}
rs = conn.createStatement().executeQuery("SELECT CF2.* FROM " + tableName);
rsCounter = 0;
while(rs.next()) {
ResultSetMetaData rmd = rs.getMetaData();
int count = rmd.getColumnCount();
assertEquals(rsCounter <= 2 ?
1 : rsCounter == 3 ? 3 : 2, count);
for (int i = 1; i <= count; i++) {
if (rsCounter == 0) {
if (i == 1) {
assertEquals("D", rmd.getColumnName(i));
assertEquals(VARCHAR, rmd.getColumnType(i));
assertEquals("test2", rs.getObject(i));
}
} else if (rsCounter == 1) {
if (i == 1) {
assertEquals("D", rmd.getColumnName(i));
assertEquals(VARCHAR, rmd.getColumnType(i));
assertEquals("test4", rs.getObject(i));
}
} else if (rsCounter == 2) {
if (i == 1) {
assertEquals("D", rmd.getColumnName(i));
assertEquals(VARCHAR, rmd.getColumnType(i));
assertEquals("test6", rs.getObject(i));
}
} else if (rsCounter == 3) {
if (i == 1) {
assertEquals("D", rmd.getColumnName(i));
assertEquals(VARCHAR, rmd.getColumnType(i));
assertEquals("test9", rs.getObject(i));
} else if (i == 2) {
assertEquals("DYN1", rmd.getColumnName(i));
assertEquals(VARCHAR, rmd.getColumnType(i));
assertEquals("test10", rs.getObject(i));
} else if (i == 3) {
assertEquals("DYN2", rmd.getColumnName(i));
assertEquals(INTEGER, rmd.getColumnType(i));
assertEquals(80, rs.getObject(i));
}
} else if (rsCounter == 4) {
if (i == 1) {
assertEquals("D", rmd.getColumnName(i));
assertEquals(VARCHAR, rmd.getColumnType(i));
assertEquals("test12", rs.getObject(i));
} else if (i == 2) {
assertEquals("DYN4", rmd.getColumnName(i));
assertEquals(INTEGER, rmd.getColumnType(i));
assertEquals(90, rs.getObject(i));
}
}
}
rsCounter++;
}
}