Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
I'm doing some work in string manipulation UDFs and I've found that it would be very convenient if I could always convert the argument to a chararray (internally a Java String).
For example TOLOWERCASE(arg) shouldn't really care whether arg is a bytearray, chararray, int, long, double, or float, it should be treated as a string and operated on.
The simplest and most foolproof method would be if the DataTypes added a static function of DataTypes.toString which did all of the argument type checking and provided consistent translation.
I believe that this function might be coded as:
public static String toString(Object o) throws ExecException {
try {
switch (findType(o))
} catch (ExecException ee)
{ throw ee; }catch (Exception e)
{ int errCode = 2054; String msg = "Internal error. Could not convert " + o + " to String."; throw new ExecException(msg, errCode, PigException.BUG); }}