Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g?rev=1570760&r1=1570759&r2=1570760&view=diff ============================================================================== --- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g (original) +++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g Sat Feb 22 00:20:49 2014 @@ -544,5 +544,5 @@ functionIdentifier nonReserved : - KW_TRUE | KW_FALSE | KW_LIKE | KW_EXISTS | KW_ASC | KW_DESC | KW_ORDER | KW_GROUP | KW_BY | KW_AS | KW_INSERT | KW_OVERWRITE | KW_OUTER | KW_LEFT | KW_RIGHT | KW_FULL | KW_PARTITION | KW_PARTITIONS | KW_TABLE | KW_TABLES | KW_COLUMNS | KW_INDEX | KW_INDEXES | KW_REBUILD | KW_FUNCTIONS | KW_SHOW | KW_MSCK | KW_REPAIR | KW_DIRECTORY | KW_LOCAL | KW_USING | KW_CLUSTER | KW_DISTRIBUTE | KW_SORT | KW_UNION | KW_LOAD | KW_EXPORT | KW_IMPORT | KW_DATA | KW_INPATH | KW_IS | KW_NULL | KW_CREATE | KW_EXTERNAL | KW_ALTER | KW_CHANGE | KW_FIRST | KW_AFTER | KW_DESCRIBE | KW_DROP | KW_RENAME | KW_IGNORE | KW_PROTECTION | KW_TO | KW_COMMENT | KW_BOOLEAN | KW_TINYINT | KW_SMALLINT | KW_INT | KW_BIGINT | KW_FLOAT | KW_DOUBLE | KW_DATE | KW_DATETIME | KW_TIMESTAMP | KW_DECIMAL | KW_STRING | KW_ARRAY | KW_STRUCT | KW_UNIONTYPE | KW_PARTITIONED | KW_CLUSTERED | KW_SORTED | KW_INTO | KW_BUCKETS | KW_ROW | KW_ROWS | KW_FORMAT | KW_DELIMITED | KW_FIELDS | KW_TERMINATED | KW_ESCAPED | KW_COLLECTION | KW_ITEMS | KW_KEYS | KW_KEY_TYPE | KW_LINES | KW_STORED | KW_FILEFORMAT | KW_SEQUENCEFILE | KW_TEXTFILE | KW_RCFILE | KW_ORCFILE | KW_PARQUETFILE | KW_INPUTFORMAT | KW_OUTPUTFORMAT | KW_INPUTDRIVER | KW_OUTPUTDRIVER | KW_OFFLINE | KW_ENABLE | KW_DISABLE | KW_READONLY | KW_NO_DROP | KW_LOCATION | KW_BUCKET | KW_OUT | KW_OF | KW_PERCENT | KW_ADD | KW_REPLACE | KW_RLIKE | KW_REGEXP | KW_TEMPORARY | KW_EXPLAIN | KW_FORMATTED | KW_PRETTY | KW_DEPENDENCY | KW_LOGICAL | KW_SERDE | KW_WITH | KW_DEFERRED | KW_SERDEPROPERTIES | KW_DBPROPERTIES | KW_LIMIT | KW_SET | KW_UNSET | KW_TBLPROPERTIES | KW_IDXPROPERTIES | KW_VALUE_TYPE | KW_ELEM_TYPE | KW_MAPJOIN | KW_STREAMTABLE | KW_HOLD_DDLTIME | KW_CLUSTERSTATUS | KW_UTC | KW_UTCTIMESTAMP | KW_LONG | KW_DELETE | KW_PLUS | KW_MINUS | KW_FETCH | KW_INTERSECT | KW_VIEW | KW_IN | KW_DATABASES | KW_MATERIALIZED | KW_SCHEMA | KW_SCHEMAS | KW_GRANT | KW_REVOKE | KW_SSL | KW_UNDO | KW_LOCK | KW_LOCKS | KW_UNLOCK | KW_SHARED | KW_EXCLUSIVE | KW_PROCEDURE | KW_UNSIGNED | KW_WHILE | KW_READ | KW_READS | KW_PURGE | KW_RANGE | KW_ANALYZE | KW_BEFORE | KW_BETWEEN | KW_BOTH | KW_BINARY | KW_CONTINUE | KW_CURSOR | KW_TRIGGER | KW_RECORDREADER | KW_RECORDWRITER | KW_SEMI | KW_LATERAL | KW_TOUCH | KW_ARCHIVE | KW_UNARCHIVE | KW_COMPUTE | KW_STATISTICS | KW_USE | KW_OPTION | KW_CONCATENATE | KW_SHOW_DATABASE | KW_UPDATE | KW_RESTRICT | KW_CASCADE | KW_SKEWED | KW_ROLLUP | KW_CUBE | KW_DIRECTORIES | KW_FOR | KW_GROUPING | KW_SETS | KW_TRUNCATE | KW_NOSCAN | KW_USER | KW_ROLE | KW_ROLES | KW_INNER | KW_DEFINED | KW_ADMIN + KW_TRUE | KW_FALSE | KW_LIKE | KW_EXISTS | KW_ASC | KW_DESC | KW_ORDER | KW_GROUP | KW_BY | KW_AS | KW_INSERT | KW_OVERWRITE | KW_OUTER | KW_LEFT | KW_RIGHT | KW_FULL | KW_PARTITION | KW_PARTITIONS | KW_TABLE | KW_TABLES | KW_COLUMNS | KW_INDEX | KW_INDEXES | KW_REBUILD | KW_FUNCTIONS | KW_SHOW | KW_MSCK | KW_REPAIR | KW_DIRECTORY | KW_LOCAL | KW_USING | KW_CLUSTER | KW_DISTRIBUTE | KW_SORT | KW_UNION | KW_LOAD | KW_EXPORT | KW_IMPORT | KW_DATA | KW_INPATH | KW_IS | KW_NULL | KW_CREATE | KW_EXTERNAL | KW_ALTER | KW_CHANGE | KW_FIRST | KW_AFTER | KW_DESCRIBE | KW_DROP | KW_RENAME | KW_IGNORE | KW_PROTECTION | KW_TO | KW_COMMENT | KW_BOOLEAN | KW_TINYINT | KW_SMALLINT | KW_INT | KW_BIGINT | KW_FLOAT | KW_DOUBLE | KW_DATE | KW_DATETIME | KW_TIMESTAMP | KW_DECIMAL | KW_STRING | KW_ARRAY | KW_STRUCT | KW_UNIONTYPE | KW_PARTITIONED | KW_CLUSTERED | KW_SORTED | KW_INTO | KW_BUCKETS | KW_ROW | KW_ROWS | KW_FORMAT | KW_DELIMITED | KW_FIELDS | KW_TERMINATED | KW_ESCAPED | KW_COLLECTION | KW_ITEMS | KW_KEYS | KW_KEY_TYPE | KW_LINES | KW_STORED | KW_FILEFORMAT | KW_SEQUENCEFILE | KW_TEXTFILE | KW_RCFILE | KW_ORCFILE | KW_PARQUETFILE | KW_INPUTFORMAT | KW_OUTPUTFORMAT | KW_INPUTDRIVER | KW_OUTPUTDRIVER | KW_OFFLINE | KW_ENABLE | KW_DISABLE | KW_READONLY | KW_NO_DROP | KW_LOCATION | KW_BUCKET | KW_OUT | KW_OF | KW_PERCENT | KW_ADD | KW_REPLACE | KW_RLIKE | KW_REGEXP | KW_TEMPORARY | KW_EXPLAIN | KW_FORMATTED | KW_PRETTY | KW_DEPENDENCY | KW_LOGICAL | KW_SERDE | KW_WITH | KW_DEFERRED | KW_SERDEPROPERTIES | KW_DBPROPERTIES | KW_LIMIT | KW_SET | KW_UNSET | KW_TBLPROPERTIES | KW_IDXPROPERTIES | KW_VALUE_TYPE | KW_ELEM_TYPE | KW_MAPJOIN | KW_STREAMTABLE | KW_HOLD_DDLTIME | KW_CLUSTERSTATUS | KW_UTC | KW_UTCTIMESTAMP | KW_LONG | KW_DELETE | KW_PLUS | KW_MINUS | KW_FETCH | KW_INTERSECT | KW_VIEW | KW_IN | KW_DATABASES | KW_MATERIALIZED | KW_SCHEMA | KW_SCHEMAS | KW_GRANT | KW_REVOKE | KW_SSL | KW_UNDO | KW_LOCK | KW_LOCKS | KW_UNLOCK | KW_SHARED | KW_EXCLUSIVE | KW_PROCEDURE | KW_UNSIGNED | KW_WHILE | KW_READ | KW_READS | KW_PURGE | KW_RANGE | KW_ANALYZE | KW_BEFORE | KW_BETWEEN | KW_BOTH | KW_BINARY | KW_CONTINUE | KW_CURSOR | KW_TRIGGER | KW_RECORDREADER | KW_RECORDWRITER | KW_SEMI | KW_LATERAL | KW_TOUCH | KW_ARCHIVE | KW_UNARCHIVE | KW_COMPUTE | KW_STATISTICS | KW_USE | KW_OPTION | KW_CONCATENATE | KW_SHOW_DATABASE | KW_UPDATE | KW_RESTRICT | KW_CASCADE | KW_SKEWED | KW_ROLLUP | KW_CUBE | KW_DIRECTORIES | KW_FOR | KW_GROUPING | KW_SETS | KW_TRUNCATE | KW_NOSCAN | KW_USER | KW_ROLE | KW_ROLES | KW_INNER | KW_DEFINED | KW_ADMIN | KW_JAR | KW_FILE ;
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateFunctionDesc.java URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateFunctionDesc.java?rev=1570760&r1=1570759&r2=1570760&view=diff ============================================================================== --- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateFunctionDesc.java (original) +++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateFunctionDesc.java Sat Feb 22 00:20:49 2014 @@ -19,6 +19,9 @@ package org.apache.hadoop.hive.ql.plan; import java.io.Serializable; +import java.util.List; + +import org.apache.hadoop.hive.metastore.api.ResourceUri; /** * CreateFunctionDesc. @@ -31,6 +34,7 @@ public class CreateFunctionDesc implemen private String functionName; private String className; private boolean isTemp; + private List<ResourceUri> resources; /** * For serialization only. @@ -38,10 +42,12 @@ public class CreateFunctionDesc implemen public CreateFunctionDesc() { } - public CreateFunctionDesc(String functionName, boolean isTemp, String className) { + public CreateFunctionDesc(String functionName, boolean isTemp, String className, + List<ResourceUri> resources) { this.functionName = functionName; this.isTemp = isTemp; this.className = className; + this.resources = resources; } @Explain(displayName = "name") @@ -70,4 +76,12 @@ public class CreateFunctionDesc implemen this.isTemp = isTemp; } + public List<ResourceUri> getResources() { + return resources; + } + + public void setResources(List<ResourceUri> resources) { + this.resources = resources; + } + } Added: hive/trunk/ql/src/test/queries/clientnegative/udf_local_resource.q URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/udf_local_resource.q?rev=1570760&view=auto ============================================================================== --- hive/trunk/ql/src/test/queries/clientnegative/udf_local_resource.q (added) +++ hive/trunk/ql/src/test/queries/clientnegative/udf_local_resource.q Sat Feb 22 00:20:49 2014 @@ -0,0 +1 @@ +create function lookup as 'org.apache.hadoop.hive.ql.udf.UDFFileLookup' using file '../../data/files/sales.txt'; Added: hive/trunk/ql/src/test/queries/clientnegative/udf_nonexistent_resource.q URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/udf_nonexistent_resource.q?rev=1570760&view=auto ============================================================================== --- hive/trunk/ql/src/test/queries/clientnegative/udf_nonexistent_resource.q (added) +++ hive/trunk/ql/src/test/queries/clientnegative/udf_nonexistent_resource.q Sat Feb 22 00:20:49 2014 @@ -0,0 +1 @@ +create function lookup as 'org.apache.hadoop.hive.ql.udf.UDFFileLookup' using file 'nonexistent_file.txt'; Added: hive/trunk/ql/src/test/queries/clientpositive/udf_using.q URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/udf_using.q?rev=1570760&view=auto ============================================================================== --- hive/trunk/ql/src/test/queries/clientpositive/udf_using.q (added) +++ hive/trunk/ql/src/test/queries/clientpositive/udf_using.q Sat Feb 22 00:20:49 2014 @@ -0,0 +1,15 @@ +dfs ${system:test.dfs.mkdir} hdfs:///tmp/udf_using; + +dfs -copyFromLocal ../../data/files/sales.txt hdfs:///tmp/udf_using/sales.txt; + +create function lookup as 'org.apache.hadoop.hive.ql.udf.UDFFileLookup' using file 'hdfs:///tmp/udf_using/sales.txt'; + +create table udf_using (c1 string); +insert overwrite table udf_using select 'Joe' from src limit 2; + +select c1, lookup(c1) from udf_using; + +drop table udf_using; +drop function lookup; + +dfs -rmr hdfs:///tmp/udf_using; Added: hive/trunk/ql/src/test/results/clientnegative/udf_local_resource.q.out URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/udf_local_resource.q.out?rev=1570760&view=auto ============================================================================== --- hive/trunk/ql/src/test/results/clientnegative/udf_local_resource.q.out (added) +++ hive/trunk/ql/src/test/results/clientnegative/udf_local_resource.q.out Sat Feb 22 00:20:49 2014 @@ -0,0 +1,3 @@ +PREHOOK: query: create function lookup as 'org.apache.hadoop.hive.ql.udf.UDFFileLookup' using file '../../data/files/sales.txt' +PREHOOK: type: CREATEFUNCTION +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask. Hive warehouse is non-local, but ../../data/files/sales.txt specifies file on local filesystem. Resources on non-local warehouse should specify a non-local scheme/path Added: hive/trunk/ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out?rev=1570760&view=auto ============================================================================== --- hive/trunk/ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out (added) +++ hive/trunk/ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out Sat Feb 22 00:20:49 2014 @@ -0,0 +1,4 @@ +PREHOOK: query: create function lookup as 'org.apache.hadoop.hive.ql.udf.UDFFileLookup' using file 'nonexistent_file.txt' +PREHOOK: type: CREATEFUNCTION +nonexistent_file.txt does not exist +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask. Unable to load FILE nonexistent_file.txt Added: hive/trunk/ql/src/test/results/clientpositive/udf_using.q.out URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/udf_using.q.out?rev=1570760&view=auto ============================================================================== --- hive/trunk/ql/src/test/results/clientpositive/udf_using.q.out (added) +++ hive/trunk/ql/src/test/results/clientpositive/udf_using.q.out Sat Feb 22 00:20:49 2014 @@ -0,0 +1,44 @@ +#### A masked pattern was here #### +PREHOOK: type: CREATEFUNCTION +#### A masked pattern was here #### +POSTHOOK: type: CREATEFUNCTION +PREHOOK: query: create table udf_using (c1 string) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table udf_using (c1 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@udf_using +PREHOOK: query: insert overwrite table udf_using select 'Joe' from src limit 2 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@udf_using +POSTHOOK: query: insert overwrite table udf_using select 'Joe' from src limit 2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@udf_using +POSTHOOK: Lineage: udf_using.c1 SIMPLE [] +PREHOOK: query: select c1, lookup(c1) from udf_using +PREHOOK: type: QUERY +PREHOOK: Input: default@udf_using +#### A masked pattern was here #### +POSTHOOK: query: select c1, lookup(c1) from udf_using +POSTHOOK: type: QUERY +POSTHOOK: Input: default@udf_using +#### A masked pattern was here #### +POSTHOOK: Lineage: udf_using.c1 SIMPLE [] +Joe 2 +Joe 2 +PREHOOK: query: drop table udf_using +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@udf_using +PREHOOK: Output: default@udf_using +POSTHOOK: query: drop table udf_using +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@udf_using +POSTHOOK: Output: default@udf_using +POSTHOOK: Lineage: udf_using.c1 SIMPLE [] +PREHOOK: query: drop function lookup +PREHOOK: type: DROPFUNCTION +POSTHOOK: query: drop function lookup +POSTHOOK: type: DROPFUNCTION +POSTHOOK: Lineage: udf_using.c1 SIMPLE [] +#### A masked pattern was here ####
