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 2015/09/28 21:10:21 UTC
[19/43] hive git commit: HIVE-11579: Invoke the set command will
close standard error output[beeline-cli](Ferdinand Xu,
reviewed by Xuefu Zhang)
HIVE-11579: Invoke the set command will close standard error output[beeline-cli](Ferdinand Xu, reviewed by Xuefu Zhang)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/80f6184d
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/80f6184d
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/80f6184d
Branch: refs/heads/llap
Commit: 80f6184d301d94b5c203f45d0d849ea4bea054fb
Parents: e28043f
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Aug 19 21:12:00 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Aug 19 21:12:00 2015 -0400
----------------------------------------------------------------------
.../org/apache/hive/beeline/BeeLineOpts.java | 2 +-
.../apache/hive/beeline/cli/TestHiveCli.java | 12 ++++++++---
.../hadoop/hive/ql/session/SessionState.java | 21 ++++++++++++++++++++
.../cli/operation/HiveCommandOperation.java | 18 +++++++++--------
.../service/cli/operation/SQLOperation.java | 4 ++++
5 files changed, 45 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
index d9f726d..72e9037 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
@@ -228,7 +228,7 @@ class BeeLineOpts implements Completer {
public void updateBeeLineOptsFromConf() {
if (!beeLine.isBeeLine()) {
if (conf == null) {
- conf = beeLine.getCommands().getHiveConf(true);
+ conf = beeLine.getCommands().getHiveConf(false);
}
setForce(HiveConf.getBoolVar(conf, HiveConf.ConfVars.CLIIGNOREERRORS));
}
http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index c465eac..c7eaa8e 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -107,7 +107,7 @@ public class TestHiveCli {
@Test
public void testDatabaseOptions() {
- verifyCMD("\nshow tables;\nquit;", "testTbl", os, new String[] { "--database", "test" },
+ verifyCMD("\nshow tables;\nquit;", "testtbl", os, new String[] { "--database", "test" },
ERRNO_OK);
}
@@ -134,7 +134,7 @@ public class TestHiveCli {
@Test
public void testSqlFromCmdWithDBName() {
- verifyCMD(null, "testTbl", os, new String[] { "-e", "show tables;", "--database", "test" },
+ verifyCMD(null, "testtbl", os, new String[] { "-e", "show tables;", "--database", "test" },
ERRNO_OK);
}
@@ -164,6 +164,12 @@ public class TestHiveCli {
f.delete();
}
+ @Test
+ public void testErrOutput() {
+ verifyCMD("show tables;set system:xxx=5;set system:yyy=${system:xxx};\nlss;",
+ "cannot recognize input near 'lss' '<EOF>' '<EOF>'", errS, null, ERRNO_OK);
+ }
+
private void redirectOutputStream() {
// Setup output stream to redirect output to
os = new ByteArrayOutputStream();
@@ -200,8 +206,8 @@ public class TestHiveCli {
@Before
public void setup() {
cli = new HiveCli();
- redirectOutputStream();
initFromFile();
+ redirectOutputStream();
}
@After
http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
index 49d64db..13ca87d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
@@ -161,6 +161,11 @@ public class SessionState {
protected File tmpOutputFile;
/**
+ * Temporary file name used to store error output of executing non-Hive commands (e.g., set, dfs)
+ */
+ protected File tmpErrOutputFile;
+
+ /**
* type of the command.
*/
private HiveOperation commandType;
@@ -305,6 +310,14 @@ public class SessionState {
tmpOutputFile = f;
}
+ public File getTmpErrOutputFile() {
+ return tmpErrOutputFile;
+ }
+
+ public void setTmpErrOutputFile(File tmpErrOutputFile) {
+ this.tmpErrOutputFile = tmpErrOutputFile;
+ }
+
public boolean getIsSilent() {
if(conf != null) {
return conf.getBoolVar(HiveConf.ConfVars.HIVESESSIONSILENT);
@@ -525,6 +538,14 @@ public class SessionState {
}
}
+ // Set temp file containing error output to be sent to client
+ if (startSs.getTmpErrOutputFile() == null) {
+ try {
+ startSs.setTmpErrOutputFile(createTempFile(startSs.getConf()));
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
} catch (Exception e) {
// Catch-all due to some exec time dependencies on session state
// that would cause ClassNoFoundException otherwise
http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java b/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java
index bcc66cf..1d1e995 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java
@@ -66,13 +66,14 @@ public class HiveCommandOperation extends ExecuteStatementOperation {
private void setupSessionIO(SessionState sessionState) {
try {
- LOG.info("Putting temp output to file " + sessionState.getTmpOutputFile().toString());
+ LOG.info("Putting temp output to file " + sessionState.getTmpOutputFile().toString()
+ + " and error output to file " + sessionState.getTmpErrOutputFile().toString());
sessionState.in = null; // hive server's session input stream is not used
- // open a per-session file in auto-flush mode for writing temp results
- sessionState.out = new PrintStream(new FileOutputStream(sessionState.getTmpOutputFile()), true, "UTF-8");
- // TODO: for hadoop jobs, progress is printed out to session.err,
- // we should find a way to feed back job progress to client
- sessionState.err = new PrintStream(System.err, true, "UTF-8");
+ // open a per-session file in auto-flush mode for writing temp results and tmp error output
+ sessionState.out =
+ new PrintStream(new FileOutputStream(sessionState.getTmpOutputFile()), true, "UTF-8");
+ sessionState.err =
+ new PrintStream(new FileOutputStream(sessionState.getTmpErrOutputFile()), true, "UTF-8");
} catch (IOException e) {
LOG.error("Error in creating temp output file ", e);
try {
@@ -90,8 +91,7 @@ public class HiveCommandOperation extends ExecuteStatementOperation {
private void tearDownSessionIO() {
- IOUtils.cleanup(LOG, parentSession.getSessionState().out);
- IOUtils.cleanup(LOG, parentSession.getSessionState().err);
+ IOUtils.cleanup(LOG, parentSession.getSessionState().out, parentSession.getSessionState().err);
}
@Override
@@ -202,6 +202,8 @@ public class HiveCommandOperation extends ExecuteStatementOperation {
SessionState sessionState = getParentSession().getSessionState();
File tmp = sessionState.getTmpOutputFile();
tmp.delete();
+ tmp = sessionState.getTmpErrOutputFile();
+ tmp.delete();
}
private void resetResultReader() {
http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
index f4334e4..175348b 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
@@ -296,6 +296,10 @@ public class SQLOperation extends ExecuteStatementOperation {
if (ss.getTmpOutputFile() != null) {
ss.getTmpOutputFile().delete();
}
+
+ if (ss.getTmpErrOutputFile() != null) {
+ ss.getTmpErrOutputFile().delete();
+ }
}
@Override