Repository: hive Updated Branches: refs/heads/branch-1.0 8df94b51b -> 4afa63210
HIVE-8330 - HiveResultSet.findColumn() parameters are case sensitive (Sergio Pena via Brock) git-svn-id: https://svn.apache.org/repos/asf/hive/trunk@1629416 13f79535-47bb-0310-9956-ffa450edef68 Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/a6615141 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/a6615141 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/a6615141 Branch: refs/heads/branch-1.0 Commit: a6615141d7cd77e5b7fdd8d8be1c251b38ed590b Parents: 8df94b5 Author: Brock Noland <[email protected]> Authored: Sat Oct 4 16:50:00 2014 +0000 Committer: Jason Dere <[email protected]> Committed: Mon Aug 10 16:26:03 2015 -0700 ---------------------------------------------------------------------- .../org/apache/hive/jdbc/TestJdbcDriver2.java | 36 ++++++++++++++++++++ .../org/apache/hive/jdbc/HiveBaseResultSet.java | 3 +- .../apache/hive/jdbc/HiveMetaDataResultSet.java | 5 +++ .../apache/hive/jdbc/HiveQueryResultSet.java | 6 ++++ 4 files changed, 49 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/a6615141/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java ---------------------------------------------------------------------- diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java index 8eb9005..e7428ba 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java @@ -1320,6 +1320,42 @@ public class TestJdbcDriver2 { } @Test + public void testResultSetColumnNameCaseInsensitive() throws SQLException { + Statement stmt = con.createStatement(); + ResultSet res; + + res = stmt.executeQuery("select c1 from " + dataTypeTableName + " limit 1"); + try { + int count = 0; + while (res.next()) { + res.findColumn("c1"); + res.findColumn("C1"); + count++; + } + assertEquals(count, 1); + } catch (Exception e) { + String msg = "Unexpected exception: " + e; + LOG.info(msg, e); + fail(msg); + } + + res = stmt.executeQuery("select c1 C1 from " + dataTypeTableName + " limit 1"); + try { + int count = 0; + while (res.next()) { + res.findColumn("c1"); + res.findColumn("C1"); + count++; + } + assertEquals(count, 1); + } catch (Exception e) { + String msg = "Unexpected exception: " + e; + LOG.info(msg, e); + fail(msg); + } + } + + @Test public void testResultSetMetaData() throws SQLException { Statement stmt = con.createStatement(); http://git-wip-us.apache.org/repos/asf/hive/blob/a6615141/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java b/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java index ec5e555..8cbf9e7 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java @@ -58,6 +58,7 @@ public abstract class HiveBaseResultSet implements ResultSet { protected boolean wasNull = false; protected Object[] row; protected List<String> columnNames; + protected List<String> normalizedColumnNames; protected List<String> columnTypes; protected List<JdbcColumnAttributes> columnAttributes; @@ -84,7 +85,7 @@ public abstract class HiveBaseResultSet implements ResultSet { } public int findColumn(String columnName) throws SQLException { - int columnIndex = columnNames.indexOf(columnName); + int columnIndex = normalizedColumnNames.indexOf(columnName.toLowerCase()); if (columnIndex==-1) { throw new SQLException(); } else { http://git-wip-us.apache.org/repos/asf/hive/blob/a6615141/jdbc/src/java/org/apache/hive/jdbc/HiveMetaDataResultSet.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveMetaDataResultSet.java b/jdbc/src/java/org/apache/hive/jdbc/HiveMetaDataResultSet.java index d1ac109..c1bd898 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveMetaDataResultSet.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveMetaDataResultSet.java @@ -36,8 +36,13 @@ public abstract class HiveMetaDataResultSet<M> extends HiveBaseResultSet { } if (columnNames!=null) { this.columnNames = new ArrayList<String>(columnNames); + this.normalizedColumnNames = new ArrayList<String>(); + for (String colName : columnNames) { + this.normalizedColumnNames.add(colName.toLowerCase()); + } } else { this.columnNames = new ArrayList<String>(); + this.normalizedColumnNames = new ArrayList<String>(); } if (columnTypes!=null) { this.columnTypes = new ArrayList<String>(columnTypes); http://git-wip-us.apache.org/repos/asf/hive/blob/a6615141/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java index a7dbc82..7bc09cd 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java @@ -191,6 +191,7 @@ public class HiveQueryResultSet extends HiveBaseResultSet { this.fetchSize = builder.fetchSize; this.transportLock = builder.transportLock; columnNames = new ArrayList<String>(); + normalizedColumnNames = new ArrayList<String>(); columnTypes = new ArrayList<String>(); columnAttributes = new ArrayList<JdbcColumnAttributes>(); if (builder.retrieveSchema) { @@ -279,6 +280,7 @@ public class HiveQueryResultSet extends HiveBaseResultSet { } String columnName = columns.get(pos).getColumnName(); columnNames.add(columnName); + normalizedColumnNames.add(columnName.toLowerCase()); TPrimitiveTypeEntry primitiveTypeEntry = columns.get(pos).getTypeDesc().getTypes().get(0).getPrimitiveEntry(); String columnTypeName = TYPE_NAMES.get(primitiveTypeEntry.getType()); @@ -303,6 +305,10 @@ public class HiveQueryResultSet extends HiveBaseResultSet { columnNames.addAll(colNames); columnTypes.addAll(colTypes); columnAttributes.addAll(colAttributes); + + for (String colName : colNames) { + normalizedColumnNames.add(colName.toLowerCase()); + } } @Override
