HIVE-10541 : Beeline requires newline at the end of each query in a file (Chaoyu Tang, reviewed by Thejas)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/24788335 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/24788335 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/24788335 Branch: refs/heads/llap Commit: 2478833548c3fd7899ec69b6e9305498831b9d5d Parents: 8eb0ede Author: Szehon Ho <[email protected]> Authored: Sun May 3 17:12:54 2015 -0700 Committer: Szehon Ho <[email protected]> Committed: Sun May 3 17:12:54 2015 -0700 ---------------------------------------------------------------------- beeline/src/java/org/apache/hive/beeline/BeeLine.java | 7 ++++++- .../org/apache/hive/beeline/TestBeeLineWithArgs.java | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/24788335/beeline/src/java/org/apache/hive/beeline/BeeLine.java ---------------------------------------------------------------------- diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java index b3d89cb..e207670 100644 --- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java +++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java @@ -31,6 +31,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; +import java.io.SequenceInputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; @@ -829,7 +830,11 @@ public class BeeLine implements Closeable { public ConsoleReader getConsoleReader(InputStream inputStream) throws IOException { if (inputStream != null) { // ### NOTE: fix for sf.net bug 879425. - consoleReader = new ConsoleReader(inputStream, getOutputStream()); + // Working around an issue in jline-2.1.2, see https://github.com/jline/jline/issues/10 + // by appending a newline to the end of inputstream + InputStream inputStreamAppendedNewline = new SequenceInputStream(inputStream, + new ByteArrayInputStream((new String("\n")).getBytes())); + consoleReader = new ConsoleReader(inputStreamAppendedNewline, getOutputStream()); } else { consoleReader = new ConsoleReader(); } http://git-wip-us.apache.org/repos/asf/hive/blob/24788335/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java ---------------------------------------------------------------------- diff --git a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java index f66229f..f0795d2 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java @@ -220,6 +220,18 @@ public class TestBeeLineWithArgs { } /** + * Fix to HIVE-10541: Beeline requires a newline at the end of each query in a file. + * Otherwise, the last line of cmd in the script will be ignored. + */ + @Test + public void testLastLineCmdInScriptFile() throws Throwable { + final String SCRIPT_TEXT = "show databases;\nshow tables;"; + final String EXPECTED_PATTERN = " testbeelinetable1 "; + List<String> argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + testScriptFile( SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + } + + /** * Test Beeline -hivevar option. User can specify --hivevar name=value on Beeline command line. * In the script, user should be able to use it in the form of ${name}, which will be substituted with * the value.
