You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pig.apache.org by "Alan Gates (JIRA)" <ji...@apache.org> on 2009/11/12 02:52:39 UTC
[jira] Assigned: (PIG-745) Please add DataTypes.toString()
conversion function
[ https://issues.apache.org/jira/browse/PIG-745?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alan Gates reassigned PIG-745:
------------------------------
Assignee: David Ciemiewicz
> 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
> Assignee: David Ciemiewicz
> Fix For: 0.3.0
>
> 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.