[ https://issues.apache.org/jira/browse/HIVE-3866?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14583315#comment-14583315 ]
Michael Haeusler commented on HIVE-3866: ---------------------------------------- Is this issue duplicated by Hive-10788? > 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 was sent by Atlassian JIRA (v6.3.4#6332)