public void set(String val) { set(val, -1); // copy entire string value }
public void setValue(LazyHiveVarchar copy) { data.set(copy.data, maxLength); }
public HiveVarcharWritable(HiveVarcharWritable hcw) { set(hcw); }
public HiveVarcharWritable(HiveVarchar hc) { set(hc); }
@Override public Object set(Object o, HiveVarchar value) { if (value == null) { return null; } HiveVarcharWritable writable = (HiveVarcharWritable)o; writable.set(value, getMaxLength()); return o; }
@Override public Object set(Object o, String value) { if (value == null) { return null; } HiveVarcharWritable writable = (HiveVarcharWritable)o; writable.set(value, getMaxLength()); return o; }
public void enforceMaxLength(int maxLength) { if (getCharacterLength() > maxLength) { set(value.toString(), maxLength); } }
public void set(HiveVarcharWritable val, int maxLength) { set(val.getHiveVarchar(), maxLength); }
public void set(HiveVarchar val, int len) { set(val.getValue(), len); }
public void set(HiveVarchar val) { set(val.getValue()); }
@Override public Object create(HiveVarchar value) { HiveVarcharWritable ret; ret = new HiveVarcharWritable(); ret.set(value, getMaxLength()); return ret; }
private HiveVarcharWritable getWritableWithParams(HiveVarchar val) { HiveVarcharWritable newValue = new HiveVarcharWritable(); newValue.set(val, getMaxLength()); return newValue; }
private HiveVarcharWritable getWritableWithParams(HiveVarcharWritable val) { HiveVarcharWritable newValue = new HiveVarcharWritable(); newValue.set(val, getMaxLength()); return newValue; }
public Object setReturnValue(String val) throws UDFArgumentException { if (val == null) { return null; } switch (type) { case STRING: ((Text)returnValue).set(val); return returnValue; case CHAR: ((HiveCharWritable) returnValue).set(val); return returnValue; case VARCHAR: ((HiveVarcharWritable)returnValue).set(val); return returnValue; default: throw new UDFArgumentException("Bad return type " + type); } }
@Override public HiveVarcharWritable getPrimitiveWritableObject(Object o) { final VarCharHolder h = (VarCharHolder)o; final HiveVarcharWritable valW = new HiveVarcharWritable(); valW.set(StringFunctionHelpers.toStringFromUTF8(h.start, h.end, h.buffer), HiveVarchar.MAX_VARCHAR_LENGTH); return valW; }
@Override public HiveVarcharWritable getPrimitiveWritableObject(Object o) { if (o == null) { return null; } final NullableVarCharHolder h = (NullableVarCharHolder)o; final HiveVarcharWritable valW = new HiveVarcharWritable(); valW.set(StringFunctionHelpers.toStringFromUTF8(h.start, h.end, h.buffer), HiveVarchar.MAX_VARCHAR_LENGTH); return valW; }
@Override public Object getTransformedWritable(DeferredObject object) throws HiveException { HiveVarchar value = columnType.getPrimitiveJavaObject(object.get()); if(value != null) { String transformedValue = transformer.transform(value.getValue()); if(transformedValue != null) { writable.set(transformedValue); return writable; } } return null; } }
@Override public Object copyObject(Object o) { if (o == null) { return null; } if (o instanceof Text) { String str = ((Text)o).toString(); HiveVarcharWritable hcw = new HiveVarcharWritable(); hcw.set(str, ((VarcharTypeInfo)typeInfo).getLength()); return hcw; } HiveVarcharWritable writable = (HiveVarcharWritable)o; if (doesWritableMatchTypeParams((HiveVarcharWritable)o)) { return new HiveVarcharWritable(writable); } return getWritableWithParams(writable); }
@Override public Object getTransformedWritable(DeferredObject object) throws HiveException { HiveVarchar value = columnType.getPrimitiveJavaObject(object.get()); if(value != null) { String transformedValue = transformer.transform(value.getValue()); if(transformedValue != null) { writable.set(transformedValue); return writable; } } return null; } }
@Test public void testCharFormat() throws HiveException { GenericUDFPrintf udf = new GenericUDFPrintf(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getCharTypeInfo(10)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getVarcharTypeInfo(7)) }; HiveCharWritable formatChar = new HiveCharWritable(); formatChar.set("arg1=%s"); HiveVarcharWritable argVarchar = new HiveVarcharWritable(); argVarchar.set("world"); DeferredObject[] args = { new DeferredJavaObject(formatChar), new DeferredJavaObject(argVarchar) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(PrimitiveObjectInspectorFactory.writableStringObjectInspector, oi); Text res = (Text) udf.evaluate(args); Assert.assertEquals("arg1=world", res.toString()); }