[ https://issues.apache.org/jira/browse/PIG-745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12697056#action_12697056 ]
Alan Gates commented on PIG-745: -------------------------------- I'm reviewing this patch. > Please add DataTypes.toString() conversion function > --------------------------------------------------- > > Key: PIG-745 > URL: https://issues.apache.org/jira/browse/PIG-745 > Project: Pig > Issue Type: Improvement > Reporter: David Ciemiewicz > Attachments: PIG-745.patch > > > 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)) { > case BOOLEAN: > if (((Boolean)o) == true) return new String('1'); > else return new String('0'); > case BYTE: > return ((Byte)o).toString(); > case INTEGER: > return ((Integer)o).toString(); > case LONG: > return ((Long)o).toString(); > case FLOAT: > return ((Float)o).toString(); > case DOUBLE: > return ((Double)o).toString(); > case BYTEARRAY: > return ((DataByteArray)o).toString(); > case CHARARRAY: > return (String)o; > case NULL: > return null; > case MAP: > case TUPLE: > case BAG: > case UNKNOWN: > default: > int errCode = 1071; > String msg = "Cannot convert a " + findTypeName(o) + > " to an String"; > throw new ExecException(msg, errCode, > PigException.INPUT); > } > } 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); > } > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.