You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/09/01 03:55:15 UTC
svn commit: r1621659 - in /hive/trunk/beeline/src:
java/org/apache/hive/beeline/ test/org/apache/hive/beeline/
Author: hashutosh
Date: Mon Sep 1 01:55:14 2014
New Revision: 1621659
URL: http://svn.apache.org/r1621659
Log:
HIVE-6978 : beeline always exits with 0 status, should exit with non-zero status on error (Navis via Ashutosh Chauhan)
Modified:
hive/trunk/beeline/src/java/org/apache/hive/beeline/AbstractCommandHandler.java
hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java
hive/trunk/beeline/src/java/org/apache/hive/beeline/CommandHandler.java
hive/trunk/beeline/src/java/org/apache/hive/beeline/ReflectiveCommandHandler.java
hive/trunk/beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java
Modified: hive/trunk/beeline/src/java/org/apache/hive/beeline/AbstractCommandHandler.java
URL: http://svn.apache.org/viewvc/hive/trunk/beeline/src/java/org/apache/hive/beeline/AbstractCommandHandler.java?rev=1621659&r1=1621658&r2=1621659&view=diff
==============================================================================
--- hive/trunk/beeline/src/java/org/apache/hive/beeline/AbstractCommandHandler.java (original)
+++ hive/trunk/beeline/src/java/org/apache/hive/beeline/AbstractCommandHandler.java Mon Sep 1 01:55:14 2014
@@ -40,6 +40,7 @@ public abstract class AbstractCommandHan
private final String helpText;
private Completor[] parameterCompletors = new Completor[0];
+ protected transient Throwable lastException;
public AbstractCommandHandler(BeeLine beeLine, String[] names, String helpText,
Completor[] completors) {
@@ -101,4 +102,9 @@ public abstract class AbstractCommandHan
public Completor[] getParameterCompletors() {
return parameterCompletors;
}
+
+ @Override
+ public Throwable getLastException() {
+ return lastException;
+ }
}
Modified: hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java
URL: http://svn.apache.org/viewvc/hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java?rev=1621659&r1=1621658&r2=1621659&view=diff
==============================================================================
--- hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java (original)
+++ hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java Mon Sep 1 01:55:14 2014
@@ -57,7 +57,6 @@ import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
@@ -618,9 +617,9 @@ public class BeeLine implements Closeabl
}
- boolean initArgs(String[] args) {
- List<String> commands = new LinkedList<String>();
- List<String> files = new LinkedList<String>();
+ int initArgs(String[] args) {
+ List<String> commands = Collections.emptyList();
+ List<String> files = Collections.emptyList();
CommandLine cl;
BeelineParser beelineParser;
@@ -630,7 +629,8 @@ public class BeeLine implements Closeabl
cl = beelineParser.parse(options, args);
} catch (ParseException e1) {
output(e1.getMessage());
- return false;
+ usage();
+ return -1;
}
String driver = null, user = null, pass = null, url = null;
@@ -638,8 +638,8 @@ public class BeeLine implements Closeabl
if (cl.hasOption("help")) {
- // Return false here, so usage will be printed.
- return false;
+ usage();
+ return 0;
}
Properties hiveVars = cl.getOptionProperties("hivevar");
@@ -690,7 +690,8 @@ public class BeeLine implements Closeabl
dispatch("!properties " + i.next());
}
- if (commands.size() > 0) {
+ int code = 0;
+ if (!commands.isEmpty()) {
// for single command execute, disable color
getOpts().setColor(false);
getOpts().setHeaderInterval(-1);
@@ -698,11 +699,13 @@ public class BeeLine implements Closeabl
for (Iterator<String> i = commands.iterator(); i.hasNext();) {
String command = i.next().toString();
debug(loc("executing-command", command));
- dispatch(command);
+ if (!dispatch(command)) {
+ code++;
+ }
}
exit = true; // execute and exit
}
- return true;
+ return code;
}
@@ -720,9 +723,9 @@ public class BeeLine implements Closeabl
}
try {
- if (!initArgs(args)) {
- usage();
- return ERRNO_ARGS;
+ int code = initArgs(args);
+ if (code != 0) {
+ return code;
}
if (getOpts().getScriptFile() != null) {
Modified: hive/trunk/beeline/src/java/org/apache/hive/beeline/CommandHandler.java
URL: http://svn.apache.org/viewvc/hive/trunk/beeline/src/java/org/apache/hive/beeline/CommandHandler.java?rev=1621659&r1=1621658&r2=1621659&view=diff
==============================================================================
--- hive/trunk/beeline/src/java/org/apache/hive/beeline/CommandHandler.java (original)
+++ hive/trunk/beeline/src/java/org/apache/hive/beeline/CommandHandler.java Mon Sep 1 01:55:14 2014
@@ -74,4 +74,10 @@ interface CommandHandler {
* Returns the completors that can handle parameters.
*/
public Completor[] getParameterCompletors();
+
+ /**
+ * Returns exception thrown for last command
+ * @return
+ */
+ public Throwable getLastException();
}
\ No newline at end of file
Modified: hive/trunk/beeline/src/java/org/apache/hive/beeline/ReflectiveCommandHandler.java
URL: http://svn.apache.org/viewvc/hive/trunk/beeline/src/java/org/apache/hive/beeline/ReflectiveCommandHandler.java?rev=1621659&r1=1621658&r2=1621659&view=diff
==============================================================================
--- hive/trunk/beeline/src/java/org/apache/hive/beeline/ReflectiveCommandHandler.java (original)
+++ hive/trunk/beeline/src/java/org/apache/hive/beeline/ReflectiveCommandHandler.java Mon Sep 1 01:55:14 2014
@@ -40,6 +40,7 @@ public class ReflectiveCommandHandler ex
}
public boolean execute(String line) {
+ lastException = null;
try {
Object ob = beeLine.getCommands().getClass().getMethod(getName(),
new Class[] {String.class})
@@ -47,6 +48,7 @@ public class ReflectiveCommandHandler ex
return ob != null && ob instanceof Boolean
&& ((Boolean) ob).booleanValue();
} catch (Throwable e) {
+ lastException = e;
return beeLine.error(e);
}
}
Modified: hive/trunk/beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java
URL: http://svn.apache.org/viewvc/hive/trunk/beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java?rev=1621659&r1=1621658&r2=1621659&view=diff
==============================================================================
--- hive/trunk/beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java (original)
+++ hive/trunk/beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java Mon Sep 1 01:55:14 2014
@@ -56,7 +56,7 @@ public class TestBeelineArgParsing {
TestBeeline bl = new TestBeeline();
String args[] = new String[] {"-u", "url", "-n", "name",
"-p", "password", "-d", "driver", "-a", "authType"};
- Assert.assertTrue(bl.initArgs(args));
+ Assert.assertEquals(0, bl.initArgs(args));
Assert.assertTrue(bl.connectArgs.equals("url name password driver"));
Assert.assertTrue(bl.getOpts().getAuthType().equals("authType"));
}
@@ -69,7 +69,7 @@ public class TestBeelineArgParsing {
TestBeeline bl = new TestBeeline();
String args[] = new String[] {"-u", "url", "-u", "url2", "-n", "name",
"-p", "password", "-d", "driver"};
- Assert.assertTrue(bl.initArgs(args));
+ Assert.assertEquals(0, bl.initArgs(args));
Assert.assertTrue(bl.connectArgs.equals("url name password driver"));
}
@@ -78,7 +78,7 @@ public class TestBeelineArgParsing {
TestBeeline bl = new TestBeeline();
String args[] = new String[] {"-u", "url", "-n", "name",
"-p", "password", "-d", "driver", "-e", "select1", "-e", "select2"};
- Assert.assertTrue(bl.initArgs(args));
+ Assert.assertEquals(0, bl.initArgs(args));
Assert.assertTrue(bl.connectArgs.equals("url name password driver"));
Assert.assertTrue(bl.queries.contains("select1"));
Assert.assertTrue(bl.queries.contains("select2"));
@@ -93,7 +93,7 @@ public class TestBeelineArgParsing {
String args[] = new String[] {"-u", "url", "-n", "name",
"-p", "password", "-d", "driver", "--hiveconf", "a=avalue", "--hiveconf", "b=bvalue",
"--hivevar", "c=cvalue", "--hivevar", "d=dvalue"};
- Assert.assertTrue(bl.initArgs(args));
+ Assert.assertEquals(0, bl.initArgs(args));
Assert.assertTrue(bl.connectArgs.equals("url name password driver"));
Assert.assertTrue(bl.getOpts().getHiveConfVariables().get("a").equals("avalue"));
Assert.assertTrue(bl.getOpts().getHiveConfVariables().get("b").equals("bvalue"));
@@ -107,7 +107,7 @@ public class TestBeelineArgParsing {
String args[] =
new String[] { "-u", "url", "-n", "name", "-p", "password", "-d", "driver",
"--autoCommit=true", "--verbose", "--truncateTable" };
- Assert.assertTrue(bl.initArgs(args));
+ Assert.assertEquals(0, bl.initArgs(args));
Assert.assertTrue(bl.connectArgs.equals("url name password driver"));
Assert.assertTrue(bl.getOpts().getAutoCommit());
Assert.assertTrue(bl.getOpts().getVerbose());
@@ -122,7 +122,7 @@ public class TestBeelineArgParsing {
TestBeeline bl = new TestBeeline();
String args[] = new String[] {"-u", "url", "-n", "name",
"-p", "password", "-d", "driver", "-f", "myscript"};
- Assert.assertTrue(bl.initArgs(args));
+ Assert.assertEquals(0, bl.initArgs(args));
Assert.assertTrue(bl.connectArgs.equals("url name password driver"));
Assert.assertTrue(bl.getOpts().getScriptFile().equals("myscript"));
}
@@ -134,7 +134,7 @@ public class TestBeelineArgParsing {
public void testHelp() throws Exception {
TestBeeline bl = new TestBeeline();
String args[] = new String[] {"--help"};
- Assert.assertFalse(bl.initArgs(args));
+ Assert.assertEquals(0, bl.initArgs(args));
}
/**
@@ -144,7 +144,7 @@ public class TestBeelineArgParsing {
public void testUnmatchedArgs() throws Exception {
TestBeeline bl = new TestBeeline();
String args[] = new String[] {"-u", "url", "-n"};
- Assert.assertFalse(bl.initArgs(args));
+ Assert.assertEquals(-1, bl.initArgs(args));
}
}