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