You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2016/03/09 20:14:48 UTC
[3/3] hive git commit: HIVE-13211 : normalize Hive.get overloads to
go thru one path (Sergey Shelukhin, reviewed by Ashutosh Chauhan)
HIVE-13211 : normalize Hive.get overloads to go thru one path (Sergey Shelukhin, reviewed by Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/5bf324ea
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/5bf324ea
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/5bf324ea
Branch: refs/heads/master
Commit: 5bf324ea5eaf308233a2af6149e8fb01bee0e4c6
Parents: 3931d4d
Author: Sergey Shelukhin <se...@apache.org>
Authored: Wed Mar 9 11:03:52 2016 -0800
Committer: Sergey Shelukhin <se...@apache.org>
Committed: Wed Mar 9 11:03:52 2016 -0800
----------------------------------------------------------------------
.../apache/hadoop/hive/ql/metadata/Hive.java | 92 +++++++++++---------
.../hive/ql/parse/BaseSemanticAnalyzer.java | 2 +-
2 files changed, 52 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/5bf324ea/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
index fdc7956..80208c2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
@@ -248,7 +248,7 @@ public class Hive {
*
*/
public static Hive get(HiveConf c) throws HiveException {
- return getInternal(c, false);
+ return getInternal(c, false, false, true);
}
/**
@@ -256,24 +256,67 @@ public class Hive {
* MS client, assuming the relevant settings would be unchanged within the same conf object.
*/
public static Hive getWithFastCheck(HiveConf c) throws HiveException {
- return getInternal(c, true);
+ return getWithFastCheck(c, true);
}
- private static Hive getInternal(HiveConf c, boolean isFastCheck) throws HiveException {
+ /**
+ * Same as {@link #get(HiveConf)}, except that it checks only the object identity of existing
+ * MS client, assuming the relevant settings would be unchanged within the same conf object.
+ */
+ public static Hive getWithFastCheck(HiveConf c, boolean doRegisterAllFns) throws HiveException {
+ return getInternal(c, false, true, doRegisterAllFns);
+ }
+
+ private static Hive getInternal(HiveConf c, boolean needsRefresh, boolean isFastCheck,
+ boolean doRegisterAllFns) throws HiveException {
Hive db = hiveDB.get();
- if (db == null || !db.isCurrentUserOwner() ||
- (db.metaStoreClient != null && !isCompatible(db, c, isFastCheck))) {
- return get(c, true);
+ if (db == null || !db.isCurrentUserOwner() || needsRefresh
+ || (c != null && db.metaStoreClient != null && !isCompatible(db, c, isFastCheck))) {
+ return create(c, false, db, doRegisterAllFns);
+ }
+ if (c != null) {
+ db.conf = c;
}
- db.conf = c;
return db;
}
+ private static Hive create(HiveConf c, boolean needsRefresh, Hive db, boolean doRegisterAllFns)
+ throws HiveException {
+ if (db != null) {
+ LOG.debug("Creating new db. db = " + db + ", needsRefresh = " + needsRefresh +
+ ", db.isCurrentUserOwner = " + db.isCurrentUserOwner());
+ db.close();
+ }
+ closeCurrent();
+ if (c == null) {
+ c = createHiveConf();
+ }
+ c.set("fs.scheme.class", "dfs");
+ Hive newdb = new Hive(c, doRegisterAllFns);
+ hiveDB.set(newdb);
+ return newdb;
+ }
+
+
+ private static HiveConf createHiveConf() {
+ SessionState session = SessionState.get();
+ return (session == null) ? new HiveConf(Hive.class) : session.getConf();
+ }
+
private static boolean isCompatible(Hive db, HiveConf c, boolean isFastCheck) {
return isFastCheck
? db.metaStoreClient.isSameConfObj(c) : db.metaStoreClient.isCompatibleWith(c);
}
+
+ public static Hive get() throws HiveException {
+ return get(true);
+ }
+
+ public static Hive get(boolean doRegisterAllFns) throws HiveException {
+ return getInternal(null, false, false, doRegisterAllFns);
+ }
+
/**
* get a connection to metastore. see get(HiveConf) function for comments
*
@@ -285,40 +328,7 @@ public class Hive {
* @throws HiveException
*/
public static Hive get(HiveConf c, boolean needsRefresh) throws HiveException {
- Hive db = hiveDB.get();
- if (db == null || needsRefresh || !db.isCurrentUserOwner()) {
- if (db != null) {
- LOG.debug("Creating new db. db = " + db + ", needsRefresh = " + needsRefresh +
- ", db.isCurrentUserOwner = " + db.isCurrentUserOwner());
- }
- closeCurrent();
- c.set("fs.scheme.class", "dfs");
- Hive newdb = new Hive(c, true);
- hiveDB.set(newdb);
- return newdb;
- }
- db.conf = c;
- return db;
- }
-
- public static Hive get() throws HiveException {
- return get(true);
- }
-
- public static Hive get(boolean doRegisterAllFns) throws HiveException {
- Hive db = hiveDB.get();
- if (db != null && !db.isCurrentUserOwner()) {
- LOG.debug("Creating new db. db.isCurrentUserOwner = " + db.isCurrentUserOwner());
- db.close();
- db = null;
- }
- if (db == null) {
- SessionState session = SessionState.get();
- HiveConf conf = session == null ? new HiveConf(Hive.class) : session.getConf();
- db = new Hive(conf, doRegisterAllFns);
- hiveDB.set(db);
- }
- return db;
+ return getInternal(c, needsRefresh, false, true);
}
public static void set(Hive hive) {
http://git-wip-us.apache.org/repos/asf/hive/blob/5bf324ea/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
index b36a9a0..f6ba521 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
@@ -200,7 +200,7 @@ public abstract class BaseSemanticAnalyzer {
}
public BaseSemanticAnalyzer(HiveConf conf) throws SemanticException {
- this(conf, createHiveDB(conf));
+ this(conf, createHiveDB(conf));
}
public BaseSemanticAnalyzer(HiveConf conf, Hive db) throws SemanticException {