Description
When the function registry is trying to determine the best version of UDF evaluate() to use based on a set of arguments passed in, it should prefer methods where the argument types are more related to the original types. For example if varchar is used with UDFFromUnixTime(), varchar is convertible to both the double and string versions of evaluate() for that UDF. In this case we would prefer that the function registry select the string version over the double version, since varchar and string are both string types.
This doesn't really affect any of the existing types, but comes into play with the addition of the varchar type (HIVE-4844).