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();
+    }
+
+}

Reply via email to