diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index 9f738df..eece93e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -1224,11 +1224,8 @@ private static String getURLType(String value) throws URISyntaxException { String scheme = uri.getScheme() == null ? null : uri.getScheme().toLowerCase(); if (scheme == null || scheme.equals("file")) { return "file"; - } else if (scheme.equals("hdfs") || scheme.equals("ivy")) { - return scheme; - } else { - throw new RuntimeException("invalid url: " + uri + ", expecting ( file | hdfs | ivy) as url scheme. "); } + return scheme; } List resolveAndDownload(ResourceType t, String value, boolean convertToUnix) throws URISyntaxException, @@ -1238,10 +1235,8 @@ private static String getURLType(String value) throws URISyntaxException { return Arrays.asList(uri); } else if (getURLType(value).equals("ivy")) { return dependencyResolver.downloadDependencies(uri); - } else if (getURLType(value).equals("hdfs")) { - return Arrays.asList(createURI(downloadResource(value, convertToUnix))); } else { - throw new RuntimeException("Invalid url " + uri); + return Arrays.asList(createURI(downloadResource(value, convertToUnix))); } } diff --git a/ql/src/test/queries/clientpositive/add_jar_pfile.q b/ql/src/test/queries/clientpositive/add_jar_pfile.q new file mode 100644 index 0000000..ed55518 --- /dev/null +++ b/ql/src/test/queries/clientpositive/add_jar_pfile.q @@ -0,0 +1,8 @@ + +dfs -copyFromLocal ${system:maven.local.repository}/org/apache/hive/hive-contrib/${system:hive.version}/hive-contrib-${system:hive.version}.jar pfile://${system:test.tmp.dir}/hive-contrib-${system:hive.version}.jar; + +add jar pfile://${system:test.tmp.dir}/hive-contrib-${system:hive.version}.jar; + +CREATE TEMPORARY FUNCTION example_add AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleAdd'; + +DROP TEMPORARY FUNCTION example_add; diff --git a/ql/src/test/results/clientpositive/add_jar_pfile.q.out b/ql/src/test/results/clientpositive/add_jar_pfile.q.out new file mode 100644 index 0000000..60c65cc --- /dev/null +++ b/ql/src/test/results/clientpositive/add_jar_pfile.q.out @@ -0,0 +1,12 @@ +PREHOOK: query: CREATE TEMPORARY FUNCTION example_add AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleAdd' +PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: example_add +POSTHOOK: query: CREATE TEMPORARY FUNCTION example_add AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleAdd' +POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: example_add +PREHOOK: query: DROP TEMPORARY FUNCTION example_add +PREHOOK: type: DROPFUNCTION +PREHOOK: Output: example_add +POSTHOOK: query: DROP TEMPORARY FUNCTION example_add +POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: example_add