use of java.sql.ResultSetMetaData in project hive by apache.
the class cbo_rp_TestJdbcDriver2 method testDataTypes2.
@Test
public void testDataTypes2() throws Exception {
Statement stmt = con.createStatement();
ResultSet res = stmt.executeQuery("select c5, c1 from " + dataTypeTableName + " order by c1");
ResultSetMetaData meta = res.getMetaData();
// row 1
assertTrue(res.next());
// skip the last (partitioning) column since it is always non-null
for (int i = 1; i < meta.getColumnCount(); i++) {
assertNull(res.getObject(i));
}
}
use of java.sql.ResultSetMetaData in project hive by apache.
the class cbo_rp_TestJdbcDriver2 method testMetaDataGetCatalogs.
@Test
public void testMetaDataGetCatalogs() throws SQLException {
ResultSet rs = con.getMetaData().getCatalogs();
ResultSetMetaData resMeta = rs.getMetaData();
assertEquals(1, resMeta.getColumnCount());
assertEquals("TABLE_CAT", resMeta.getColumnName(1));
assertFalse(rs.next());
}
use of java.sql.ResultSetMetaData in project hive by apache.
the class TestJdbcDriver2 method testResultSetMetaData.
@Test
public void testResultSetMetaData() throws SQLException {
Statement stmt = con.createStatement();
ResultSet res = stmt.executeQuery("select c1, c2, c3, c4, c5 as a, c6, c7, c8, c9, c10, c11, c12, " + "c1*2, sentences(null, null, null) as b, c17, c18, c20, c21, c22, c23, null as null_val from " + dataTypeTableName + " limit 1");
ResultSetMetaData meta = res.getMetaData();
ResultSet colRS = con.getMetaData().getColumns(null, null, dataTypeTableName.toLowerCase(), null);
assertEquals(21, meta.getColumnCount());
assertTrue(colRS.next());
assertEquals("c1", meta.getColumnName(1));
assertEquals(Types.INTEGER, meta.getColumnType(1));
assertEquals("int", meta.getColumnTypeName(1));
assertEquals(11, meta.getColumnDisplaySize(1));
assertEquals(10, meta.getPrecision(1));
assertEquals(0, meta.getScale(1));
assertEquals("c1", colRS.getString("COLUMN_NAME"));
assertEquals(Types.INTEGER, colRS.getInt("DATA_TYPE"));
assertEquals("int", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(1), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(1), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c2", meta.getColumnName(2));
assertEquals("boolean", meta.getColumnTypeName(2));
assertEquals(Types.BOOLEAN, meta.getColumnType(2));
assertEquals(1, meta.getColumnDisplaySize(2));
assertEquals(1, meta.getPrecision(2));
assertEquals(0, meta.getScale(2));
assertEquals("c2", colRS.getString("COLUMN_NAME"));
assertEquals(Types.BOOLEAN, colRS.getInt("DATA_TYPE"));
assertEquals("boolean", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getScale(2), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c3", meta.getColumnName(3));
assertEquals(Types.DOUBLE, meta.getColumnType(3));
assertEquals("double", meta.getColumnTypeName(3));
assertEquals(25, meta.getColumnDisplaySize(3));
assertEquals(15, meta.getPrecision(3));
assertEquals(15, meta.getScale(3));
assertEquals("c3", colRS.getString("COLUMN_NAME"));
assertEquals(Types.DOUBLE, colRS.getInt("DATA_TYPE"));
assertEquals("double", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(3), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(3), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c4", meta.getColumnName(4));
assertEquals(Types.VARCHAR, meta.getColumnType(4));
assertEquals("string", meta.getColumnTypeName(4));
assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(4));
assertEquals(Integer.MAX_VALUE, meta.getPrecision(4));
assertEquals(0, meta.getScale(4));
assertEquals("c4", colRS.getString("COLUMN_NAME"));
assertEquals(Types.VARCHAR, colRS.getInt("DATA_TYPE"));
assertEquals("string", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(4), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(4), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("a", meta.getColumnName(5));
assertEquals(Types.ARRAY, meta.getColumnType(5));
assertEquals("array", meta.getColumnTypeName(5));
assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(5));
assertEquals(Integer.MAX_VALUE, meta.getPrecision(5));
assertEquals(0, meta.getScale(5));
assertEquals("c5", colRS.getString("COLUMN_NAME"));
assertEquals(Types.ARRAY, colRS.getInt("DATA_TYPE"));
assertEquals("array<int>", colRS.getString("TYPE_NAME").toLowerCase());
assertTrue(colRS.next());
assertEquals("c6", meta.getColumnName(6));
assertEquals(Types.JAVA_OBJECT, meta.getColumnType(6));
assertEquals("map", meta.getColumnTypeName(6));
assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(6));
assertEquals(Integer.MAX_VALUE, meta.getPrecision(6));
assertEquals(0, meta.getScale(6));
assertEquals("c6", colRS.getString("COLUMN_NAME"));
assertEquals(Types.JAVA_OBJECT, colRS.getInt("DATA_TYPE"));
assertEquals("map<int,string>", colRS.getString("TYPE_NAME").toLowerCase());
assertTrue(colRS.next());
assertEquals("c7", meta.getColumnName(7));
assertEquals(Types.JAVA_OBJECT, meta.getColumnType(7));
assertEquals("map", meta.getColumnTypeName(7));
assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(7));
assertEquals(Integer.MAX_VALUE, meta.getPrecision(7));
assertEquals(0, meta.getScale(7));
assertEquals("c7", colRS.getString("COLUMN_NAME"));
assertEquals(Types.JAVA_OBJECT, colRS.getInt("DATA_TYPE"));
assertEquals("map<string,string>", colRS.getString("TYPE_NAME").toLowerCase());
assertTrue(colRS.next());
assertEquals("c8", meta.getColumnName(8));
assertEquals(Types.STRUCT, meta.getColumnType(8));
assertEquals("struct", meta.getColumnTypeName(8));
assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(8));
assertEquals(Integer.MAX_VALUE, meta.getPrecision(8));
assertEquals(0, meta.getScale(8));
assertEquals("c8", colRS.getString("COLUMN_NAME"));
assertEquals(Types.STRUCT, colRS.getInt("DATA_TYPE"));
assertEquals("struct<r:string,s:int,t:double>", colRS.getString("TYPE_NAME").toLowerCase());
assertTrue(colRS.next());
assertEquals("c9", meta.getColumnName(9));
assertEquals(Types.TINYINT, meta.getColumnType(9));
assertEquals("tinyint", meta.getColumnTypeName(9));
assertEquals(4, meta.getColumnDisplaySize(9));
assertEquals(3, meta.getPrecision(9));
assertEquals(0, meta.getScale(9));
assertEquals("c9", colRS.getString("COLUMN_NAME"));
assertEquals(Types.TINYINT, colRS.getInt("DATA_TYPE"));
assertEquals("tinyint", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(9), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(9), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c10", meta.getColumnName(10));
assertEquals(Types.SMALLINT, meta.getColumnType(10));
assertEquals("smallint", meta.getColumnTypeName(10));
assertEquals(6, meta.getColumnDisplaySize(10));
assertEquals(5, meta.getPrecision(10));
assertEquals(0, meta.getScale(10));
assertEquals("c10", colRS.getString("COLUMN_NAME"));
assertEquals(Types.SMALLINT, colRS.getInt("DATA_TYPE"));
assertEquals("smallint", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(10), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(10), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c11", meta.getColumnName(11));
assertEquals(Types.FLOAT, meta.getColumnType(11));
assertEquals("float", meta.getColumnTypeName(11));
assertEquals(24, meta.getColumnDisplaySize(11));
assertEquals(7, meta.getPrecision(11));
assertEquals(7, meta.getScale(11));
assertEquals("c11", colRS.getString("COLUMN_NAME"));
assertEquals(Types.FLOAT, colRS.getInt("DATA_TYPE"));
assertEquals("float", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(11), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(11), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c12", meta.getColumnName(12));
assertEquals(Types.BIGINT, meta.getColumnType(12));
assertEquals("bigint", meta.getColumnTypeName(12));
assertEquals(20, meta.getColumnDisplaySize(12));
assertEquals(19, meta.getPrecision(12));
assertEquals(0, meta.getScale(12));
assertEquals("c12", colRS.getString("COLUMN_NAME"));
assertEquals(Types.BIGINT, colRS.getInt("DATA_TYPE"));
assertEquals("bigint", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(12), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(12), colRS.getInt("DECIMAL_DIGITS"));
assertEquals("_c12", meta.getColumnName(13));
assertEquals(Types.INTEGER, meta.getColumnType(13));
assertEquals("int", meta.getColumnTypeName(13));
assertEquals(11, meta.getColumnDisplaySize(13));
assertEquals(10, meta.getPrecision(13));
assertEquals(0, meta.getScale(13));
assertEquals("b", meta.getColumnName(14));
assertEquals(Types.ARRAY, meta.getColumnType(14));
assertEquals("array", meta.getColumnTypeName(14));
assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(14));
assertEquals(Integer.MAX_VALUE, meta.getPrecision(14));
assertEquals(0, meta.getScale(14));
// Move the result of getColumns() forward to match the columns of the query
// c13
assertTrue(colRS.next());
// c14
assertTrue(colRS.next());
// c15
assertTrue(colRS.next());
// c16
assertTrue(colRS.next());
// c17
assertTrue(colRS.next());
assertEquals("c17", meta.getColumnName(15));
assertEquals(Types.TIMESTAMP, meta.getColumnType(15));
assertEquals("timestamp", meta.getColumnTypeName(15));
assertEquals(29, meta.getColumnDisplaySize(15));
assertEquals(29, meta.getPrecision(15));
assertEquals(9, meta.getScale(15));
assertEquals("c17", colRS.getString("COLUMN_NAME"));
assertEquals(Types.TIMESTAMP, colRS.getInt("DATA_TYPE"));
assertEquals("timestamp", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(15), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(15), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c18", meta.getColumnName(16));
assertEquals(Types.DECIMAL, meta.getColumnType(16));
assertEquals("decimal", meta.getColumnTypeName(16));
assertEquals(18, meta.getColumnDisplaySize(16));
assertEquals(16, meta.getPrecision(16));
assertEquals(7, meta.getScale(16));
assertEquals("c18", colRS.getString("COLUMN_NAME"));
assertEquals(Types.DECIMAL, colRS.getInt("DATA_TYPE"));
assertEquals("decimal", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(16), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(16), colRS.getInt("DECIMAL_DIGITS"));
// skip c19, since not selected by query
assertTrue(colRS.next());
assertTrue(colRS.next());
assertEquals("c20", meta.getColumnName(17));
assertEquals(Types.DATE, meta.getColumnType(17));
assertEquals("date", meta.getColumnTypeName(17));
assertEquals(10, meta.getColumnDisplaySize(17));
assertEquals(10, meta.getPrecision(17));
assertEquals(0, meta.getScale(17));
assertEquals("c20", colRS.getString("COLUMN_NAME"));
assertEquals(Types.DATE, colRS.getInt("DATA_TYPE"));
assertEquals("date", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(17), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(17), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c21", meta.getColumnName(18));
assertEquals(Types.VARCHAR, meta.getColumnType(18));
assertEquals("varchar", meta.getColumnTypeName(18));
// varchar columns should have correct display size/precision
assertEquals(20, meta.getColumnDisplaySize(18));
assertEquals(20, meta.getPrecision(18));
assertEquals(0, meta.getScale(18));
assertEquals("c21", colRS.getString("COLUMN_NAME"));
assertEquals(Types.VARCHAR, colRS.getInt("DATA_TYPE"));
assertEquals("varchar", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(18), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(18), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c22", meta.getColumnName(19));
assertEquals(Types.CHAR, meta.getColumnType(19));
assertEquals("char", meta.getColumnTypeName(19));
// char columns should have correct display size/precision
assertEquals(15, meta.getColumnDisplaySize(19));
assertEquals(15, meta.getPrecision(19));
assertEquals(0, meta.getScale(19));
assertEquals("c22", colRS.getString("COLUMN_NAME"));
assertEquals(Types.CHAR, colRS.getInt("DATA_TYPE"));
assertEquals("char", colRS.getString("TYPE_NAME").toLowerCase());
assertEquals(meta.getPrecision(19), colRS.getInt("COLUMN_SIZE"));
assertEquals(meta.getScale(19), colRS.getInt("DECIMAL_DIGITS"));
assertTrue(colRS.next());
assertEquals("c23", meta.getColumnName(20));
assertEquals(Types.BINARY, meta.getColumnType(20));
assertEquals("binary", meta.getColumnTypeName(20));
assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(20));
assertEquals(Integer.MAX_VALUE, meta.getPrecision(20));
assertEquals(0, meta.getScale(20));
assertTrue(colRS.next());
assertEquals("null_val", meta.getColumnName(21));
assertEquals(Types.NULL, meta.getColumnType(21));
assertEquals("void", meta.getColumnTypeName(21));
assertEquals(4, meta.getColumnDisplaySize(21));
assertEquals(0, meta.getPrecision(21));
assertEquals(0, meta.getScale(21));
for (int i = 1; i <= meta.getColumnCount(); i++) {
assertFalse(meta.isAutoIncrement(i));
assertFalse(meta.isCurrency(i));
assertEquals(ResultSetMetaData.columnNullable, meta.isNullable(i));
}
stmt.close();
}
use of java.sql.ResultSetMetaData in project hive by apache.
the class TestJdbcDriver2 method testMetaDataGetSchemas.
@Test
public void testMetaDataGetSchemas() throws SQLException {
ResultSet rs = con.getMetaData().getSchemas();
ResultSetMetaData resMeta = rs.getMetaData();
assertEquals(2, resMeta.getColumnCount());
assertEquals("TABLE_SCHEM", resMeta.getColumnName(1));
assertEquals("TABLE_CATALOG", resMeta.getColumnName(2));
assertTrue(rs.next());
assertEquals("default", rs.getString(1));
assertTrue(rs.next());
assertEquals(testDbName, rs.getString(1));
assertFalse(rs.next());
rs.close();
}
use of java.sql.ResultSetMetaData in project hive by apache.
the class TestJdbcDriver2 method getTablesTest.
/**
* Test the type returned for pre-created table type table and view type table
* @param tableTypeNames expected table types
* @param viewTypeName expected view type
* @throws SQLException
*/
private void getTablesTest(Set<String> tableTypeNames, String viewTypeName) throws SQLException {
String[] ALL = null;
String[] VIEW_ONLY = { viewTypeName };
String[] TABLE_ONLY = tableTypeNames.toArray(new String[tableTypeNames.size()]);
Set<String> viewOrTableArray = new HashSet<String>();
viewOrTableArray.addAll(tableTypeNames);
viewOrTableArray.add(viewTypeName);
String testTblWithDb = testDbName + "." + tableName;
String testPartTblWithDb = testDbName + "." + partitionedTableName;
String testDataTypeTblWithDb = testDbName + "." + dataTypeTableName;
String testViewWithDb = testDbName + "." + viewName;
String testExtTblWithDb = testDbName + "." + externalTableName;
Map<Object[], String[]> tests = new IdentityHashMap<Object[], String[]>();
tests.put(new Object[] { null, "testjdbc%", ALL }, new String[] { testTblWithDb, testPartTblWithDb, testViewWithDb, testExtTblWithDb, testDataTypeTblWithDb });
tests.put(new Object[] { "test%", "testjdbc%", ALL }, new String[] { testTblWithDb, testPartTblWithDb, testViewWithDb, testExtTblWithDb, testDataTypeTblWithDb });
tests.put(new Object[] { "test%", "testjdbc%", VIEW_ONLY }, new String[] { testViewWithDb });
tests.put(new Object[] { null, "testjdbcdrivertbl", ALL }, new String[] { testTblWithDb });
tests.put(new Object[] { "%jdbc%", "testjdbcdrivertbl", ALL }, new String[] { testTblWithDb });
tests.put(new Object[] { "%jdbc%", "testjdbc%", ALL }, new String[] { testTblWithDb, testPartTblWithDb, testViewWithDb, testExtTblWithDb, testDataTypeTblWithDb });
tests.put(new Object[] { "%jdbc%", "testjdbcdrivertbl", TABLE_ONLY }, new String[] { testTblWithDb });
tests.put(new Object[] { null, "test_dbcdri_ertbl", ALL }, new String[] { testTblWithDb });
tests.put(new Object[] { null, "%jdbc%", ALL }, new String[] { testTblWithDb, testPartTblWithDb, testViewWithDb, testDataTypeTblWithDb, testExtTblWithDb });
tests.put(new Object[] { "%", "%jdbc%", VIEW_ONLY }, new String[] { testViewWithDb });
tests.put(new Object[] { null, "%jdbc%", TABLE_ONLY }, new String[] { testTblWithDb, testPartTblWithDb, testExtTblWithDb, testDataTypeTblWithDb });
for (Map.Entry<Object[], String[]> entry : tests.entrySet()) {
Object[] checkPattern = entry.getKey();
String debugString = checkPattern[0] + ", " + checkPattern[1] + ", " + Arrays.toString((String[]) checkPattern[2]);
Set<String> expectedTables = new HashSet<String>(Arrays.asList(entry.getValue()));
ResultSet rs = con.getMetaData().getTables(null, (String) checkPattern[0], (String) checkPattern[1], (String[]) checkPattern[2]);
ResultSetMetaData resMeta = rs.getMetaData();
assertEquals(10, resMeta.getColumnCount());
assertEquals("TABLE_CAT", resMeta.getColumnName(1));
assertEquals("TABLE_SCHEM", resMeta.getColumnName(2));
assertEquals("TABLE_NAME", resMeta.getColumnName(3));
assertEquals("TABLE_TYPE", resMeta.getColumnName(4));
assertEquals("REMARKS", resMeta.getColumnName(5));
int cnt = 0;
while (rs.next()) {
String resultDbName = rs.getString("TABLE_SCHEM");
String resultTableName = rs.getString("TABLE_NAME");
assertTrue("Invalid table " + resultDbName + "." + resultTableName + " for test " + debugString, expectedTables.contains(resultDbName + "." + resultTableName));
String resultTableComment = rs.getString("REMARKS");
assertTrue("Missing comment on the table.", resultTableComment.length() > 0);
String tableType = rs.getString("TABLE_TYPE");
if (resultTableName.endsWith("view")) {
assertEquals("Expected a tabletype view but got something else.", viewTypeName, tableType);
} else {
assertTrue("Expected one of " + tableTypeNames + " table but got something else: " + tableType, tableTypeNames.contains(tableType));
}
cnt++;
}
rs.close();
assertEquals("Received an incorrect number of tables for test " + debugString, expectedTables.size(), cnt);
}
}
Aggregations