diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/Server.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/Server.java index d2127e1..914e2f7 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/Server.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/Server.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.net.InetAddress; +import java.net.URLEncoder; import java.net.UnknownHostException; import java.text.MessageFormat; import java.util.ArrayList; @@ -29,6 +30,7 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; + import javax.servlet.http.HttpServletRequest; import javax.ws.rs.DELETE; import javax.ws.rs.FormParam; @@ -847,12 +849,17 @@ public EnqueueBean hive(@FormParam("execute") String execute, throw new BadParam("Either execute or file parameter required"); } + List definesEnc = new ArrayList(); + for (String d : defines) { + definesEnc.add(URLEncoder.encode(d)); + } + //add all function arguments to a map Map userArgs = new HashMap(); userArgs.put("user.name", getDoAsUser()); userArgs.put("execute", execute); userArgs.put("file", srcFile); - userArgs.put("define", defines); + userArgs.put("define", definesEnc); userArgs.put("files", otherFiles); userArgs.put("statusdir", statusdir); userArgs.put("callback", callback); @@ -861,7 +868,7 @@ public EnqueueBean hive(@FormParam("execute") String execute, checkEnableLogPrerequisite(enablelog, statusdir); HiveDelegator d = new HiveDelegator(appConf); - return d.run(getDoAsUser(), userArgs, execute, srcFile, defines, hiveArgs, otherFiles, + return d.run(getDoAsUser(), userArgs, execute, srcFile, definesEnc, hiveArgs, otherFiles, statusdir, callback, getCompletedUrl(), enablelog); }