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

Reply via email to