diff --git beeline/src/java/org/apache/hive/beeline/Commands.java beeline/src/java/org/apache/hive/beeline/Commands.java index 338b105a2d..ff9839b144 100644 --- beeline/src/java/org/apache/hive/beeline/Commands.java +++ beeline/src/java/org/apache/hive/beeline/Commands.java @@ -974,86 +974,79 @@ private boolean executeInternal(String sql, boolean call) { ClientHook hook = ClientCommandHookFactory.get().getHook(beeLine, sql); - try { - Statement stmnt = null; - boolean hasResults; - Thread logThread = null; + Statement stmnt = null; + boolean hasResults; + Thread logThread = null; - try { - long start = System.currentTimeMillis(); + try { + long start = System.currentTimeMillis(); - if (call) { - stmnt = beeLine.getDatabaseConnection().getConnection().prepareCall(sql); - hasResults = ((CallableStatement) stmnt).execute(); + if (call) { + stmnt = beeLine.getDatabaseConnection().getConnection().prepareCall(sql); + hasResults = ((CallableStatement) stmnt).execute(); + } else { + stmnt = beeLine.createStatement(); + // In test mode we want the operation logs regardless of the settings + if (!beeLine.isTestMode() && beeLine.getOpts().isSilent()) { + hasResults = stmnt.execute(sql); } else { - stmnt = beeLine.createStatement(); - // In test mode we want the operation logs regardless of the settings - if (!beeLine.isTestMode() && beeLine.getOpts().isSilent()) { - hasResults = stmnt.execute(sql); - } else { - InPlaceUpdateStream.EventNotifier eventNotifier = - new InPlaceUpdateStream.EventNotifier(); - logThread = new Thread(createLogRunnable(stmnt, eventNotifier)); - logThread.setDaemon(true); - logThread.start(); - if (stmnt instanceof HiveStatement) { - HiveStatement hiveStatement = (HiveStatement) stmnt; - hiveStatement.setInPlaceUpdateStream( - new BeelineInPlaceUpdateStream( - beeLine.getErrorStream(), - eventNotifier - )); - } - hasResults = stmnt.execute(sql); - logThread.interrupt(); - logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT); + InPlaceUpdateStream.EventNotifier eventNotifier = + new InPlaceUpdateStream.EventNotifier(); + logThread = new Thread(createLogRunnable(stmnt, eventNotifier)); + logThread.setDaemon(true); + logThread.start(); + if (stmnt instanceof HiveStatement) { + HiveStatement hiveStatement = (HiveStatement) stmnt; + hiveStatement.setInPlaceUpdateStream( + new BeelineInPlaceUpdateStream( + beeLine.getErrorStream(), + eventNotifier + )); } + hasResults = stmnt.execute(sql); + logThread.interrupt(); + logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT); } + } - beeLine.showWarnings(); - - if (hasResults) { - OutputFile outputFile = beeLine.getRecordOutputFile(); - if (beeLine.isTestMode() && outputFile != null && outputFile.isActiveConverter()) { - outputFile.fetchStarted(); - if (!sql.trim().toLowerCase().startsWith("explain")) { - outputFile.foundQuery(true); - } else { - outputFile.foundQuery(false); - } - } - do { - ResultSet rs = stmnt.getResultSet(); - try { - int count = beeLine.print(rs); - long end = System.currentTimeMillis(); - - if (showReport()) { - beeLine.output(beeLine.loc("rows-selected", count) + " " + beeLine.locElapsedTime(end - start), - true, beeLine.getErrorStream()); - } - } finally { - if (logThread != null) { - logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT); - showRemainingLogsIfAny(stmnt); - logThread = null; - } - rs.close(); - } - } while (BeeLine.getMoreResults(stmnt)); - if (beeLine.isTestMode() && outputFile != null && outputFile.isActiveConverter()) { - outputFile.fetchFinished(); + beeLine.showWarnings(); + + if (hasResults) { + OutputFile outputFile = beeLine.getRecordOutputFile(); + if (beeLine.isTestMode() && outputFile != null && outputFile.isActiveConverter()) { + outputFile.fetchStarted(); + if (!sql.trim().toLowerCase().startsWith("explain")) { + outputFile.foundQuery(true); + } else { + outputFile.foundQuery(false); } - } else { - int count = stmnt.getUpdateCount(); + } + do { + ResultSet rs = stmnt.getResultSet(); + int count = beeLine.print(rs); long end = System.currentTimeMillis(); if (showReport()) { - beeLine.output(beeLine.loc("rows-affected", count) + " " + beeLine.locElapsedTime(end - start), + beeLine.output(beeLine.loc("rows-selected", count) + " " + beeLine.locElapsedTime(end - start), true, beeLine.getErrorStream()); } + } while (BeeLine.getMoreResults(stmnt)); + if (beeLine.isTestMode() && outputFile != null && outputFile.isActiveConverter()) { + outputFile.fetchFinished(); } - } finally { + } else { + int count = stmnt.getUpdateCount(); + long end = System.currentTimeMillis(); + + if (showReport()) { + beeLine.output(beeLine.loc("rows-affected", count) + " " + beeLine.locElapsedTime(end - start), + true, beeLine.getErrorStream()); + } + } + } catch (Throwable e) { + return beeLine.error(e); + } finally { + try { if (logThread != null) { if (!logThread.isInterrupted()) { logThread.interrupt(); @@ -1066,10 +1059,11 @@ private boolean executeInternal(String sql, boolean call) { if (stmnt != null) { stmnt.close(); } + } catch (Exception e) { + return beeLine.error(e); } - } catch (Exception e) { - return beeLine.error(e); } + beeLine.showWarnings(); if (hook != null) { hook.postHook(beeLine); diff --git itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java index 73e6262485..f76bce69dd 100644 --- itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java +++ itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java @@ -1161,6 +1161,7 @@ public void testRowsAffected() throws Throwable { + "insert into new_table values (1);\n"; final String EXPECTED_PATTERN = "1 row affected"; List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + DriverManager.setLoginTimeout(60); testScriptFile(SCRIPT_TEXT, argList, OutStream.ERR, EXPECTED_PATTERN, true); }