You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jd...@apache.org on 2015/08/11 01:31:22 UTC
[1/2] hive git commit: HIVE-8330 - HiveResultSet.findColumn()
parameters are case sensitive (Sergio Pena via Brock)
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 <br...@apache.org>
Authored: Sat Oct 4 16:50:00 2014 +0000
Committer: Jason Dere <jd...@hortonworks.com>
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
[2/2] hive git commit: HIVE-8889 - JDBC Driver
ResultSet.getXXXXXX(String columnLabel) methods Broken (Chaoyu Tang via
Brock)
Posted by jd...@apache.org.
HIVE-8889 - JDBC Driver ResultSet.getXXXXXX(String columnLabel) methods Broken (Chaoyu Tang via Brock)
git-svn-id: https://svn.apache.org/repos/asf/hive/trunk@1642470 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/4afa6321
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/4afa6321
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/4afa6321
Branch: refs/heads/branch-1.0
Commit: 4afa632100c20f53fb334a9f5b2dd3153e528c44
Parents: a661514
Author: Brock Noland <br...@apache.org>
Authored: Sat Nov 29 20:12:02 2014 +0000
Committer: Jason Dere <jd...@hortonworks.com>
Committed: Mon Aug 10 16:28:34 2015 -0700
----------------------------------------------------------------------
.../org/apache/hive/jdbc/TestJdbcDriver2.java | 19 ++++++++++++++-----
.../org/apache/hive/jdbc/HiveBaseResultSet.java | 18 ++++++++++++++----
2 files changed, 28 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/4afa6321/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 e7428ba..ad0fd84 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
@@ -583,6 +583,12 @@ public class TestJdbcDriver2 {
}
@Test
+ public final void testSelectAllFromView() throws Exception {
+ doTestSelectAll(viewName, -1, -1); // tests not setting maxRows (return all)
+ doTestSelectAll(viewName, 0, -1); // tests setting maxRows to 0 (return all)
+ }
+
+ @Test
public final void testSelectAllPartioned() throws Exception {
doTestSelectAll(partitionedTableName, -1, -1); // tests not setting maxRows
// (return all)
@@ -877,17 +883,20 @@ public class TestJdbcDriver2 {
assertEquals(
"Unexpected column count", expectedColCount, meta.getColumnCount());
- String colQualifier = ((tableName != null) && !tableName.isEmpty()) ? tableName.toLowerCase() + "." : "";
boolean moreRow = res.next();
while (moreRow) {
try {
i++;
- assertEquals(res.getInt(1), res.getInt(colQualifier + "under_col"));
- assertEquals(res.getString(1), res.getString(colQualifier + "under_col"));
- assertEquals(res.getString(2), res.getString(colQualifier + "value"));
+ assertEquals(res.getInt(1), res.getInt(tableName + ".under_col"));
+ assertEquals(res.getInt(1), res.getInt("under_col"));
+ assertEquals(res.getString(1), res.getString(tableName + ".under_col"));
+ assertEquals(res.getString(1), res.getString("under_col"));
+ assertEquals(res.getString(2), res.getString(tableName + ".value"));
+ assertEquals(res.getString(2), res.getString("value"));
if (isPartitionTable) {
assertEquals(res.getString(3), partitionedColumnValue);
- assertEquals(res.getString(3), res.getString(colQualifier + partitionedColumnName));
+ assertEquals(res.getString(3), res.getString(partitionedColumnName));
+ assertEquals(res.getString(3), res.getString(tableName + "."+ partitionedColumnName));
}
assertFalse("Last result value was not null", res.wasNull());
assertNull("No warnings should be found on ResultSet", res
http://git-wip-us.apache.org/repos/asf/hive/blob/4afa6321/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 8cbf9e7..cd1916f 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java
@@ -85,11 +85,21 @@ public abstract class HiveBaseResultSet implements ResultSet {
}
public int findColumn(String columnName) throws SQLException {
- int columnIndex = normalizedColumnNames.indexOf(columnName.toLowerCase());
- if (columnIndex==-1) {
- throw new SQLException();
+ int columnIndex = 0;
+ boolean findColumn = false;
+ for (String normalizedColumnName : normalizedColumnNames) {
+ ++columnIndex;
+ String[] names = normalizedColumnName.split("\\.");
+ String name = names[names.length -1];
+ if (name.equalsIgnoreCase(columnName) || normalizedColumnName.equalsIgnoreCase(columnName)) {
+ findColumn = true;
+ break;
+ }
+ }
+ if (!findColumn) {
+ throw new SQLException("Could not find " + columnName + " in " + normalizedColumnNames);
} else {
- return ++columnIndex;
+ return columnIndex;
}
}