hive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ron Bodkin (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HIVE-3866) Allow sort_array to work on non-primitive types.
Date Mon, 07 Jan 2013 00:26:12 GMT
Ron Bodkin created HIVE-3866:
--------------------------------

             Summary: Allow sort_array to work on non-primitive types.
                 Key: HIVE-3866
                 URL: https://issues.apache.org/jira/browse/HIVE-3866
             Project: Hive
          Issue Type: Improvement
            Reporter: Ron Bodkin


It's also nice to be able to sort an array of structs, as a kind of generalization of HIVE-1128,
so you can have not only the maximum value from a list but a sorted list of value and source
keys. As with HIVE-3865 it's fairly easy to relax the assumption that sort_array works only
on primitives:

@@ -35,6 +35,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters.Converter;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
 
 /**
  * Generic UDF for array sort
@@ -66,10 +67,12 @@ public class GenericUDFSortArray extends GenericUDF {
 
     switch(arguments[0].getCategory()) {
       case LIST:
-        if(((ListObjectInspector)(arguments[0])).getListElementObjectInspector()
-          .getCategory().equals(Category.PRIMITIVE)) {
-          break;
-        }
+            ObjectInspector loi = ((ListObjectInspector)(arguments[0])).getListElementObjectInspector();
+           if (!ObjectInspectorUtils.compareSupported(loi)) {
+             throw new UDFArgumentTypeException(0,
+                 "Cannot support comparison of map<> type or complex type containing
map<>.");
+           }
+            break;
       default:
         throw new UDFArgumentTypeException(0, "Argument 1"
           + " of function SORT_ARRAY must be array "


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message