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.