Details
Description
Look at the following code:
Class.forName("org.apache.hive.jdbc.HiveDriver"); Connection db = null; Statement stmt = null; ResultSet rs = null; try { db = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "hive", ""); stmt = db.createStatement(); rs = stmt.executeQuery("SELECT * FROM sample_07 limit 1"); ResultSetMetaData metaData = rs.getMetaData(); for (int i = 1; i <= metaData.getColumnCount(); i++) { System.out.println("Column " + i + ": " + metaData.getColumnName(i)); } while (rs.next()) { System.out.println(rs.findColumn("code")); } } finally { DbUtils.closeQuietly(db, stmt, rs); }
Above program will generate following result on my cluster:
Column 1: code Column 2: description Column 3: total_emp Column 4: salary 1
However, if the last print sentence is changed as following (using uppercase characters):
System.out.println(rs.findColumn("Code"));
The program will fail at exactly that line. The same happens if the column name is changed as "CODE"
Based on the JDBC ResultSet documentation, this method should be case insensitive.
"Column names used as input to getter methods are case insensitive"
http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html