Author: xuefu
Date: Fri Dec 6 21:05:33 2013
New Revision: 1548722
URL: http://svn.apache.org/r1548722
Log:
HIVE-3181: getDatabaseMajor/Minor version does not return values (Szehon via
Xuefu, reviewed by Navis)
Modified:
hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java
hive/trunk/jdbc/src/java/org/apache/hive/jdbc/Utils.java
Modified:
hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
URL:
http://svn.apache.org/viewvc/hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java?rev=1548722&r1=1548721&r2=1548722&view=diff
==============================================================================
---
hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
(original)
+++
hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
Fri Dec 6 21:05:33 2013
@@ -1315,6 +1315,10 @@ public class TestJdbcDriver2 {
assertFalse(meta.supportsMultipleResultSets());
assertFalse(meta.supportsStoredProcedures());
assertTrue(meta.supportsAlterTableWithAddColumn());
+
+ //-1 indicates malformed version.
+ assertTrue(meta.getDatabaseMajorVersion() > -1);
+ assertTrue(meta.getDatabaseMinorVersion() > -1);
}
@Test
Modified: hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
URL:
http://svn.apache.org/viewvc/hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java?rev=1548722&r1=1548721&r2=1548722&view=diff
==============================================================================
--- hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java (original)
+++ hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java Fri Dec
6 21:05:33 2013
@@ -540,6 +540,9 @@ public class HiveConnection implements j
*/
public DatabaseMetaData getMetaData() throws SQLException {
+ if (isClosed) {
+ throw new SQLException("Connection is closed");
+ }
return new HiveDatabaseMetaData(this, client, sessHandle);
}
Modified:
hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java
URL:
http://svn.apache.org/viewvc/hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java?rev=1548722&r1=1548721&r2=1548722&view=diff
==============================================================================
--- hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java
(original)
+++ hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java Fri
Dec 6 21:05:33 2013
@@ -65,6 +65,9 @@ public class HiveDatabaseMetaData implem
// The maximum column length = MFieldSchema.FNAME in
metastore/src/model/package.jdo
private static final int maxColumnNameLength = 128;
+ // Cached values, to save on round trips to database.
+ private String dbVersion = null;
+
/**
*
*/
@@ -254,11 +257,11 @@ public class HiveDatabaseMetaData implem
}
public int getDatabaseMajorVersion() throws SQLException {
- throw new SQLException("Method not supported");
+ return Utils.getVersionPart(getDatabaseProductVersion(), 1);
}
public int getDatabaseMinorVersion() throws SQLException {
- throw new SQLException("Method not supported");
+ return Utils.getVersionPart(getDatabaseProductVersion(), 2);
}
public String getDatabaseProductName() throws SQLException {
@@ -266,6 +269,9 @@ public class HiveDatabaseMetaData implem
}
public String getDatabaseProductVersion() throws SQLException {
+ if (dbVersion != null) { //lazy-caching of the version.
+ return dbVersion;
+ }
TGetInfoReq req = new TGetInfoReq(sessHandle,
GetInfoType.CLI_DBMS_VER.toTGetInfoType());
TGetInfoResp resp;
@@ -276,7 +282,8 @@ public class HiveDatabaseMetaData implem
}
Utils.verifySuccess(resp.getStatus());
- return resp.getInfoValue().getStringValue();
+ this.dbVersion = resp.getInfoValue().getStringValue();
+ return dbVersion;
}
public int getDefaultTransactionIsolation() throws SQLException {
Modified: hive/trunk/jdbc/src/java/org/apache/hive/jdbc/Utils.java
URL:
http://svn.apache.org/viewvc/hive/trunk/jdbc/src/java/org/apache/hive/jdbc/Utils.java?rev=1548722&r1=1548721&r2=1548722&view=diff
==============================================================================
--- hive/trunk/jdbc/src/java/org/apache/hive/jdbc/Utils.java (original)
+++ hive/trunk/jdbc/src/java/org/apache/hive/jdbc/Utils.java Fri Dec 6
21:05:33 2013
@@ -270,4 +270,30 @@ public class Utils {
return connParams;
}
+
+ /**
+ * Takes a version string delmited by '.' and '-' characters
+ * and returns a partial version.
+ *
+ * @param fullVersion
+ * version string.
+ * @param tokenPosition
+ * position of version string to get starting at 1. eg, for a
X.x.xxx
+ * string, 1 will return the major version, 2 will return minor
+ * version.
+ * @return version part, or -1 if version string was malformed.
+ */
+ static int getVersionPart(String fullVersion, int position) {
+ int version = -1;
+ try {
+ String[] tokens = fullVersion.split("[\\.-]"); //$NON-NLS-1$
+
+ if (tokens != null && tokens.length > 1 && tokens[position] != null) {
+ version = Integer.parseInt(tokens[position]);
+ }
+ } catch (Exception e) {
+ version = -1;
+ }
+ return version;
+ }
}