[ 
https://issues.apache.org/jira/browse/HIVE-27112?focusedWorklogId=848681&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-848681
 ]

ASF GitHub Bot logged work on HIVE-27112:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 02/Mar/23 12:07
            Start Date: 02/Mar/23 12:07
    Worklog Time Spent: 10m 
      Work Description: tarak271 commented on code in PR #4090:
URL: https://github.com/apache/hive/pull/4090#discussion_r1122997604


##########
ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFArrayExcept.java:
##########
@@ -0,0 +1,59 @@
+/*
+ * 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.generic;
+
+import org.apache.hadoop.hive.ql.exec.Description;
+import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * GenericUDFArrayExcept
+ */
+@Description(name = "array_except", value = "_FUNC_(array, value) - Returns an 
array of the elements in array1 but not in array2.", extended =
+    "Example:\n" + "  > SELECT _FUNC_(array(1, 2, 3,4), array(2,3)) FROM src 
LIMIT 1;\n"
+        + "  [1,4]") @NDV(maxNdv = 2) public class GenericUDFArrayExcept 
extends AbstractGenericUDFArrayBase {
+  static final int ARRAY2_IDX = 1;
+  private static final String FUNC_NAME = "ARRAY_EXCEPT";
+
+  public GenericUDFArrayExcept() {
+    super(FUNC_NAME, 2, 2, ObjectInspector.Category.LIST);
+  }
+
+  @Override public ObjectInspector initialize(ObjectInspector[] arguments) 
throws UDFArgumentException {
+    ObjectInspector defaultOI = super.initialize(arguments);
+    checkArgCategory(arguments, ARRAY2_IDX, ObjectInspector.Category.LIST, 
FUNC_NAME,
+        org.apache.hadoop.hive.serde.serdeConstants.LIST_TYPE_NAME); //Array1 
is already getting validated in Parent class
+    return defaultOI;
+  }
+
+  @Override public Object evaluate(DeferredObject[] arguments) throws 
HiveException {
+    Object array = arguments[ARRAY_IDX].get();
+    if (array == null || arrayOI.getListLength(array) <= 0) {
+      return null;
+    }
+
+    List<?> retArray3 = ((ListObjectInspector) 
argumentOIs[ARRAY_IDX]).getList(array);
+    retArray3.removeAll(((ListObjectInspector) 
argumentOIs[ARRAY2_IDX]).getList(arguments[ARRAY2_IDX].get()));

Review Comment:
   Added above test cases in 
ql/src/test/queries/clientpositive/udf_array_except.q





Issue Time Tracking
-------------------

    Worklog Id:     (was: 848681)
    Time Spent: 1h  (was: 50m)

> implement array_except UDF in Hive
> ----------------------------------
>
>                 Key: HIVE-27112
>                 URL: https://issues.apache.org/jira/browse/HIVE-27112
>             Project: Hive
>          Issue Type: Sub-task
>            Reporter: Taraka Rama Rao Lethavadla
>            Assignee: Taraka Rama Rao Lethavadla
>            Priority: Minor
>              Labels: pull-request-available
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> *array_except(array1, array2)* 
> Returns an array of the elements in {{array1}} but not in {{array2, without 
> duplicates.}}
>  
> {noformat}
> > SELECT array_except(array(1, 2, 2, 3), array(1, 1, 3, 5));
> [2]
> {noformat}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to