You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by sp...@apache.org on 2016/05/27 15:33:30 UTC
hive git commit: HIVE-12721: Add UUID built in function (Jeremy Beard,
reviewed by Sergio Pena and Sean Busbey)
Repository: hive
Updated Branches:
refs/heads/master 68a421080 -> 793681c76
HIVE-12721: Add UUID built in function (Jeremy Beard, reviewed by Sergio Pena and Sean Busbey)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/793681c7
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/793681c7
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/793681c7
Branch: refs/heads/master
Commit: 793681c76e6892bfddc5a4609c124648b9284279
Parents: 68a4210
Author: Jeremy Beard <je...@cloudera.com>
Authored: Fri May 27 10:31:46 2016 -0500
Committer: Sergio Pena <se...@cloudera.com>
Committed: Fri May 27 10:32:16 2016 -0500
----------------------------------------------------------------------
.../hadoop/hive/ql/exec/FunctionRegistry.java | 2 +
.../org/apache/hadoop/hive/ql/udf/UDFUUID.java | 50 ++++++++++++++++++++
.../apache/hadoop/hive/ql/udf/TestUDFUUID.java | 38 +++++++++++++++
.../results/clientpositive/show_functions.q.out | 1 +
4 files changed, 91 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/793681c7/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
index 2f4a94c..fa90242 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
@@ -103,6 +103,7 @@ import org.apache.hadoop.hive.ql.udf.UDFToLong;
import org.apache.hadoop.hive.ql.udf.UDFToShort;
import org.apache.hadoop.hive.ql.udf.UDFToString;
import org.apache.hadoop.hive.ql.udf.UDFType;
+import org.apache.hadoop.hive.ql.udf.UDFUUID;
import org.apache.hadoop.hive.ql.udf.UDFUnbase64;
import org.apache.hadoop.hive.ql.udf.UDFUnhex;
import org.apache.hadoop.hive.ql.udf.UDFWeekOfYear;
@@ -238,6 +239,7 @@ public final class FunctionRegistry {
system.registerUDF("sha", UDFSha1.class, false);
system.registerGenericUDF("aes_encrypt", GenericUDFAesEncrypt.class);
system.registerGenericUDF("aes_decrypt", GenericUDFAesDecrypt.class);
+ system.registerUDF("uuid", UDFUUID.class, false);
system.registerGenericUDF("encode", GenericUDFEncode.class);
system.registerGenericUDF("decode", GenericUDFDecode.class);
http://git-wip-us.apache.org/repos/asf/hive/blob/793681c7/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUUID.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUUID.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUUID.java
new file mode 100644
index 0000000..1340ded
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUUID.java
@@ -0,0 +1,50 @@
+/**
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.hadoop.hive.ql.udf;
+
+import java.util.UUID;
+
+import org.apache.hadoop.hive.ql.exec.Description;
+import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.Text;
+
+/**
+ * UDFUUID.
+ *
+ */
+@Description(name = "uuid",
+value = "_FUNC_() - Returns a universally unique identifier (UUID) string.",
+extended = "The value is returned as a canonical UUID 36-character string.\n"
++ "Example:\n"
++ " > SELECT _FUNC_();\n"
++ " '0baf1f52-53df-487f-8292-99a03716b688'\n"
++ " > SELECT _FUNC_();\n"
++ " '36718a53-84f5-45d6-8796-4f79983ad49d'")
+public class UDFUUID extends UDF {
+ private final Text result = new Text();
+ /**
+ * Returns a universally unique identifier (UUID) string (36 characters).
+ *
+ * @return Text
+ */
+ public Text evaluate() {
+ result.set(UUID.randomUUID().toString());
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/793681c7/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFUUID.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFUUID.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFUUID.java
new file mode 100644
index 0000000..5f04547
--- /dev/null
+++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFUUID.java
@@ -0,0 +1,38 @@
+/**
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.hadoop.hive.ql.udf;
+
+import junit.framework.TestCase;
+
+import org.junit.Test;
+
+public class TestUDFUUID extends TestCase {
+ @Test
+ public void testUUID() throws Exception {
+ UDFUUID udf = new UDFUUID();
+
+ String id1 = udf.evaluate().toString();
+ String id2 = udf.evaluate().toString();
+
+ assertFalse(id1.equals(id2));
+
+ assertEquals(id1.length(), 36);
+ assertEquals(id2.length(), 36);
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/793681c7/ql/src/test/results/clientpositive/show_functions.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/show_functions.q.out b/ql/src/test/results/clientpositive/show_functions.q.out
index a811747..6e3f9c8 100644
--- a/ql/src/test/results/clientpositive/show_functions.q.out
+++ b/ql/src/test/results/clientpositive/show_functions.q.out
@@ -221,6 +221,7 @@ unbase64
unhex
unix_timestamp
upper
+uuid
var_pop
var_samp
variance