diff --git ql/src/java/org/apache/hadoop/hive/ql/Context.java ql/src/java/org/apache/hadoop/hive/ql/Context.java index 535670a347..5ad32347d8 100644 --- ql/src/java/org/apache/hadoop/hive/ql/Context.java +++ ql/src/java/org/apache/hadoop/hive/ql/Context.java @@ -420,7 +420,7 @@ public Path getFsResultCacheDirs() { /** * Find whether we should execute the current query due to explain - * @return true if the query needs to be executed, false if not + * @return true if the query skips execution, false if does execute */ public boolean isExplainSkipExecution() { return (explainConfig != null && explainConfig.getAnalyze() != AnalyzeState.RUNNING); diff --git ql/src/java/org/apache/hadoop/hive/ql/DriverTxnHandler.java ql/src/java/org/apache/hadoop/hive/ql/DriverTxnHandler.java index 44bcd2092a..4c566dfc70 100644 --- ql/src/java/org/apache/hadoop/hive/ql/DriverTxnHandler.java +++ ql/src/java/org/apache/hadoop/hive/ql/DriverTxnHandler.java @@ -156,6 +156,11 @@ private boolean requiresLock() { return false; } + // no execution is going to be attempted, skip acquiring locks + if (context.isExplainSkipExecution()) { + return false; + } + if (!HiveConf.getBoolVar(driverContext.getConf(), ConfVars.HIVE_LOCK_MAPRED_ONLY)) { return true; }