diff --git ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUUID.java ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUUID.java index 1340ded..4999bb0 100644 --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUUID.java +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUUID.java @@ -36,6 +36,7 @@ + " '0baf1f52-53df-487f-8292-99a03716b688'\n" + " > SELECT _FUNC_();\n" + " '36718a53-84f5-45d6-8796-4f79983ad49d'") +@UDFType(deterministic = false) public class UDFUUID extends UDF { private final Text result = new Text(); /** diff --git ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFUUID.java ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFUUID.java index 5f04547..cf32c11 100644 --- ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFUUID.java +++ ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFUUID.java @@ -20,6 +20,8 @@ import junit.framework.TestCase; +import org.apache.hadoop.hive.ql.exec.FunctionRegistry; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge; import org.junit.Test; public class TestUDFUUID extends TestCase { @@ -34,5 +36,8 @@ public void testUUID() throws Exception { assertEquals(id1.length(), 36); assertEquals(id2.length(), 36); + + GenericUDFBridge bridge = new GenericUDFBridge("uuid", false, UDFUUID.class.getName()); + assertFalse(FunctionRegistry.isDeterministic(bridge)); } } diff --git ql/src/test/queries/clientpositive/uuid.q ql/src/test/queries/clientpositive/uuid.q new file mode 100644 index 0000000..7d7d33f --- /dev/null +++ ql/src/test/queries/clientpositive/uuid.q @@ -0,0 +1,5 @@ +CREATE TABLE test_uuid (key STRING, uid STRING); + +INSERT INTO TABLE test_uuid SELECT key, uuid() FROM src; + +SELECT COUNT(DISTINCT uid) FROM test_uuid; diff --git ql/src/test/results/clientpositive/uuid.q.out ql/src/test/results/clientpositive/uuid.q.out new file mode 100644 index 0000000..a93e6eb --- /dev/null +++ ql/src/test/results/clientpositive/uuid.q.out @@ -0,0 +1,27 @@ +PREHOOK: query: CREATE TABLE test_uuid (key STRING, uid STRING) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@test_uuid +POSTHOOK: query: CREATE TABLE test_uuid (key STRING, uid STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@test_uuid +PREHOOK: query: INSERT INTO TABLE test_uuid SELECT key, uuid() FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@test_uuid +POSTHOOK: query: INSERT INTO TABLE test_uuid SELECT key, uuid() FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@test_uuid +POSTHOOK: Lineage: test_uuid.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test_uuid.uid EXPRESSION [] +PREHOOK: query: SELECT COUNT(DISTINCT uid) FROM test_uuid +PREHOOK: type: QUERY +PREHOOK: Input: default@test_uuid +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(DISTINCT uid) FROM test_uuid +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_uuid +#### A masked pattern was here #### +500