This is an automated email from the ASF dual-hosted git repository.
pvary pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 7e4a25b9dd2 HIVE-26114: Fix jdbc connection hivesrerver2 using dfs
command with prefix space will cause exception (Shezm reviewed b Peter Vary)
(#3176)
7e4a25b9dd2 is described below
commit 7e4a25b9dd2ce418eccc859aa8f544e70999398d
Author: shezm <[email protected]>
AuthorDate: Wed Apr 27 14:44:58 2022 +0800
HIVE-26114: Fix jdbc connection hivesrerver2 using dfs command with prefix
space will cause exception (Shezm reviewed b Peter Vary) (#3176)
---
.../cli/operation/HiveCommandOperation.java | 2 +-
.../cli/operation/TestCommandWithSpace.java | 53 ++++++++++++++++++++++
2 files changed, 54 insertions(+), 1 deletion(-)
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 c517049f090..bad602d9f98 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
@@ -107,7 +107,7 @@ public class HiveCommandOperation extends
ExecuteStatementOperation {
setState(OperationState.RUNNING);
try {
String command = getStatement().trim();
- String[] tokens = statement.split("\\s");
+ String[] tokens = command.split("\\s");
String commandArgs = command.substring(tokens[0].length()).trim();
CommandProcessorResponse response = commandProcessor.run(commandArgs);
diff --git
a/service/src/test/org/apache/hive/service/cli/operation/TestCommandWithSpace.java
b/service/src/test/org/apache/hive/service/cli/operation/TestCommandWithSpace.java
new file mode 100644
index 00000000000..5c57357c84b
--- /dev/null
+++
b/service/src/test/org/apache/hive/service/cli/operation/TestCommandWithSpace.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hive.service.cli.operation;
+
+import com.google.common.collect.ImmutableMap;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.ql.hooks.TestQueryHooks;
+import org.apache.hadoop.hive.ql.processors.DfsProcessor;
+import org.apache.hadoop.hive.ql.session.SessionState;
+import org.apache.hive.service.cli.HiveSQLException;
+import org.apache.hive.service.cli.session.HiveSession;
+import org.junit.Test;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class TestCommandWithSpace {
+
+ @Test
+ public void testCommandWithPrefixSpace() throws IllegalAccessException,
ClassNotFoundException, InstantiationException, HiveSQLException {
+ String query = " dfs -ls /";
+ HiveConf conf = new HiveConf();
+ conf.setBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, false);
+ conf.setVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_MANAGER,
+
"org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory");
+
+ SessionState.start(conf);
+ HiveSession mockHiveSession = mock(HiveSession.class);
+ when(mockHiveSession.getHiveConf()).thenReturn(conf);
+ when(mockHiveSession.getSessionState()).thenReturn(SessionState.get());
+ DfsProcessor dfsProcessor = new DfsProcessor(new Configuration());
+ HiveCommandOperation sqlOperation = new
HiveCommandOperation(mockHiveSession, query, dfsProcessor, ImmutableMap.of());
+ sqlOperation.run();
+ }
+
+}