diff --git ql/src/java/org/apache/hadoop/hive/ql/Driver.java ql/src/java/org/apache/hadoop/hive/ql/Driver.java index 5308e2c..5e5405e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -879,8 +879,19 @@ private void releaseLocks(List hiveLocks) { perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.RELEASE_LOCKS); } - public CommandProcessorResponse run(String command) throws CommandNeedRetryException { - CommandProcessorResponse cpr = runInternal(command); + public CommandProcessorResponse run(String command) + throws CommandNeedRetryException { + return run(command, false); + } + + public CommandProcessorResponse run() + throws CommandNeedRetryException { + return run(null, true); + } + + public CommandProcessorResponse run(String command, boolean alreadyCompiled) + throws CommandNeedRetryException { + CommandProcessorResponse cpr = runInternal(command, alreadyCompiled); if(cpr.getResponseCode() == 0) { return cpr; } @@ -935,7 +946,26 @@ public CommandProcessorResponse run(String command) throws CommandNeedRetryExcep } return cpr; } - private CommandProcessorResponse runInternal(String command) throws CommandNeedRetryException { + + public CommandProcessorResponse compileAndRespond(String command) { + return new CommandProcessorResponse(compileInternal(command), + errorMessage, SQLState); + } + + private int compileInternal(String command) { + int ret; + synchronized (compileMonitor) { + ret = compile(command); + } + if (ret != 0) { + releaseLocks(ctx.getHiveLocks()); + // console.printError("Compilation failed for statement '" + command + "'"); + } + return ret; + } + + private CommandProcessorResponse runInternal(String command, boolean alreadyCompiled) + throws CommandNeedRetryException { errorMessage = null; SQLState = null; downstreamError = null; @@ -968,12 +998,11 @@ private CommandProcessorResponse runInternal(String command) throws CommandNeedR perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.TIME_TO_SUBMIT); int ret; - synchronized (compileMonitor) { - ret = compile(command); - } - if (ret != 0) { - releaseLocks(ctx.getHiveLocks()); - return new CommandProcessorResponse(ret, errorMessage, SQLState); + if (!alreadyCompiled) { + ret = compileInternal(command); + if (ret != 0) { + return new CommandProcessorResponse(ret, errorMessage, SQLState); + } } boolean requireLock = false; diff --git service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java index 1791a7b..c93d4c2 100644 --- service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java +++ service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java @@ -76,32 +76,20 @@ public SQLOperation(HiveSession parentSession, String statement, Map