diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 10fd2e2..59775ad 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -79,6 +79,8 @@
import jline.FileNameCompletor;
import jline.History;
import jline.SimpleCompletor;
+import org.apache.commons.io.ByteOrderMark;
+import org.apache.commons.io.input.BOMInputStream;
import org.apache.hadoop.io.IOUtils;
import org.apache.commons.cli.CommandLine;
@@ -753,9 +755,21 @@ int runInit() {
}
private int executeFile(String fileName) {
- FileInputStream initStream = null;
+ BOMInputStream initStream = null;
try {
- initStream = new FileInputStream(fileName);
+ ByteOrderMark[] excludeBoms;
+ String bisVersion = BOMInputStream.class.getPackage().getSpecificationVersion();
+ if("2.2".compareTo(bisVersion) > 0){
+ // if commons-io library version is lower than 2.2, there is no UTF_32LE and UTF_32BE.
+ excludeBoms = new ByteOrderMark[]{ByteOrderMark.UTF_8,
+ ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE};
+ }else{
+ excludeBoms = new ByteOrderMark[]{ByteOrderMark.UTF_8,
+ ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE,
+ ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE};
+ }
+
+ initStream = new BOMInputStream(new FileInputStream(fileName), excludeBoms);
return execute(getConsoleReader(initStream), true);
} catch (Throwable t) {
handleException(t);
diff --git a/cli/pom.xml b/cli/pom.xml
index 345f124..e871cbc 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -84,7 +84,6 @@
commons-io
commons-io
${commons-io.version}
- test
jline
diff --git a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
index 3cdedba..5ce6b2c 100644
--- a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
+++ b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
@@ -24,6 +24,7 @@
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
@@ -42,6 +43,8 @@
import jline.History;
import jline.SimpleCompletor;
+import org.apache.commons.io.ByteOrderMark;
+import org.apache.commons.io.input.BOMInputStream;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -472,7 +475,20 @@ public int processFile(String fileName) throws IOException {
BufferedReader bufferReader = null;
int rc = 0;
try {
- bufferReader = new BufferedReader(new InputStreamReader(fs.open(path)));
+ ByteOrderMark[] excludeBoms;
+ String bisVersion = BOMInputStream.class.getPackage().getSpecificationVersion();
+ if("2.2".compareTo(bisVersion) > 0){
+ // if commons-io library version is lower than 2.2, there is no UTF_32LE and UTF_32BE.
+ excludeBoms = new ByteOrderMark[]{ByteOrderMark.UTF_8,
+ ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE};
+ }else{
+ excludeBoms = new ByteOrderMark[]{ByteOrderMark.UTF_8,
+ ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE,
+ ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE};
+ }
+
+ BOMInputStream bomIn = new BOMInputStream(fs.open(path), excludeBoms);
+ bufferReader = new BufferedReader(new InputStreamReader(bomIn));
rc = processReader(bufferReader);
} finally {
IOUtils.closeStream(bufferReader);