diff --git beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java index 9f330e3..fb303b9 100644 --- beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java +++ beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java @@ -582,6 +582,10 @@ public File getPropertiesFile() { } public void setHiveVariables(Map hiveVariables) { + if (hiveVariables == null) { + this.hiveVariables.clear(); + return; + } this.hiveVariables = hiveVariables; } @@ -615,6 +619,10 @@ public String getNullString(){ } public void setHiveConfVariables(Map hiveConfVariables) { + if (hiveConfVariables == null) { + this.hiveConfVariables.clear(); + return; + } this.hiveConfVariables = hiveConfVariables; } diff --git beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java index d73d374..9c0a7f9 100644 --- beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java +++ beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java @@ -18,7 +18,12 @@ package org.apache.hive.beeline; +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; +import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -116,6 +121,33 @@ public void testSimpleArgs() throws Exception { } @Test + public void testEmptyHiveConfVariable() throws Exception { + ByteArrayOutputStream os = new ByteArrayOutputStream(); + PrintStream ops = new PrintStream(os); + TestBeeline bl = new TestBeeline(); + bl.setOutputStream(ops); + BeeLineOpts opts = new BeeLineOpts(bl, System.getProperties()); + String[] args = { "--hiveconf", "hadoop.tmp.dir=/tmp" }; + + File rcFile = new File(opts.saveDir(), "beeline.properties"); + rcFile.deleteOnExit(); + + BufferedWriter writer = new BufferedWriter(new FileWriter(rcFile)); + writer.write("beeline.hiveconfvariables={}"); + writer.newLine(); + writer.write("beeline.hivevariables={}"); + writer.newLine(); + writer.flush(); + + try (InputStream stream = new FileInputStream(rcFile)) { + bl.getOpts().load(stream); + bl.initArgs(args); + bl.getOpts().getHiveVariables().get("test"); + } + } + + + @Test public void testPasswordFileArgs() throws Exception { TestBeeline bl = new TestBeeline(); File passFile = new File("file.password");