VirtualColumn(String name, PrimitiveTypeInfo typeInfo) { this(name, typeInfo, true, PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(typeInfo)); }
public Field(PrimitiveCategory primitiveCategory, DataTypePhysicalVariation dataTypePhysicalVariation, int maxLength) { isPrimitive = true; this.category = Category.PRIMITIVE; this.primitiveCategory = primitiveCategory; this.dataTypePhysicalVariation = dataTypePhysicalVariation; this.maxLength = maxLength; this.isConvert = false; this.conversionWritable = null; this.complexTypeHelper = null; this.objectInspector = PrimitiveObjectInspectorFactory. getPrimitiveWritableObjectInspector(primitiveCategory); }
@Override protected ObjectInspector getSumFieldWritableObjectInspector() { DecimalTypeInfo typeInfo = deriveResultDecimalTypeInfo(); return PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(typeInfo); }
public void initialize(InputStream in, Configuration conf, Properties tbl) throws IOException { din = new DataInputStream(in); tbIn = new TypedBytesWritableInput(din); tbOut = new TypedBytesWritableOutput(barrStr); String columnTypeProperty = tbl.getProperty(serdeConstants.LIST_COLUMN_TYPES); columnTypes = Arrays.asList(columnTypeProperty.split(",")); for (String columnType : columnTypes) { PrimitiveTypeInfo dstTypeInfo = TypeInfoFactory.getPrimitiveTypeInfo(columnType); dstOIns.add(PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector( dstTypeInfo)); } }
public AbstractPrimitiveWritableObjectInspector getObjectInspector() { return PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getPrimitiveTypeInfo( typeInfo.getTypeName())); }
/** * Ensures that an ObjectInspector is Writable. */ public static ObjectInspector getWritableObjectInspector(ObjectInspector oi) { // All non-primitive OIs are writable so we need only check this case. if (oi.getCategory() == Category.PRIMITIVE) { PrimitiveObjectInspector poi = (PrimitiveObjectInspector) oi; if (!(poi instanceof AbstractPrimitiveWritableObjectInspector)) { return PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector( poi.getTypeInfo()); } } return oi; }
public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { LOG.debug("==> BaseMaskUDF.initialize()"); checkArgPrimitive(arguments, 0); // first argument is the column to be transformed PrimitiveObjectInspector columnType = ((PrimitiveObjectInspector) arguments[0]); transformer.init(arguments, 1); transformerAdapter = AbstractTransformerAdapter.getTransformerAdapter(columnType, transformer); ObjectInspector ret = PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(columnType.getPrimitiveCategory()); LOG.debug("<== BaseMaskUDF.initialize()"); return ret; }
public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { LOG.debug("==> BaseMaskUDF.initialize()"); checkArgPrimitive(arguments, 0); // first argument is the column to be transformed PrimitiveObjectInspector columnType = ((PrimitiveObjectInspector) arguments[0]); transformer.init(arguments, 1); transformerAdapter = AbstractTransformerAdapter.getTransformerAdapter(columnType, transformer); ObjectInspector ret = PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(columnType.getPrimitiveCategory()); LOG.debug("<== BaseMaskUDF.initialize()"); return ret; }
private void testDecimalDivisionResultType(int prec1, int scale1, int prec2, int scale2, int prec3, int scale3) throws HiveException { GenericUDFOPDivide udf = new GenericUDFOPDivide(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(prec1, scale1)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(prec2, scale2)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(prec3, scale3), oi.getTypeInfo()); }
@Test public void testDecimalRoundingMetaData2() throws UDFArgumentException { GenericUDFRound udf = new GenericUDFRound(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(7, 3)), PrimitiveObjectInspectorFactory.getPrimitiveWritableConstantObjectInspector(TypeInfoFactory.intTypeInfo, new IntWritable(5)) }; PrimitiveObjectInspector outputOI = (PrimitiveObjectInspector) udf.initialize(inputOIs); DecimalTypeInfo outputTypeInfo = (DecimalTypeInfo)outputOI.getTypeInfo(); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(9, 5), outputTypeInfo); }
@Test public void testDecimalPosModDecimalSameParams() throws HiveException { GenericUDFPosMod udf = new GenericUDFPosMod(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(5, 2), oi.getTypeInfo()); }
@Test public void testDecimalRoundingMetaData1() throws UDFArgumentException { GenericUDFRound udf = new GenericUDFRound(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(7, 3)), PrimitiveObjectInspectorFactory.getPrimitiveWritableConstantObjectInspector(TypeInfoFactory.intTypeInfo, new IntWritable(-2)) }; PrimitiveObjectInspector outputOI = (PrimitiveObjectInspector) udf.initialize(inputOIs); DecimalTypeInfo outputTypeInfo = (DecimalTypeInfo)outputOI.getTypeInfo(); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(5, 0), outputTypeInfo); }
@Test public void testDecimalPlusDecimalSameParams() throws HiveException { GenericUDFOPPlus udf = new GenericUDFOPPlus(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(6, 2), oi.getTypeInfo()); }
@Test public void testDecimalTimesDecimalSameParams() throws HiveException { GenericUDFOPMultiply udf = new GenericUDFOPMultiply(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(11, 4), oi.getTypeInfo()); }
@Test public void testDecimalDivideDecimalSameParams() throws HiveException { GenericUDFOPDivide udf = new GenericUDFOPDivide(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(13, 8), oi.getTypeInfo()); }
@Test public void testDecimalModDecimal() throws HiveException { GenericUDFOPMod udf = new GenericUDFOPMod(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(3, 1)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(4, 2), oi.getTypeInfo()); }
@Test public void testDecimalMinusDecimalSameParams() throws HiveException { GenericUDFOPMinus udf = new GenericUDFOPMinus(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(6, 2), oi.getTypeInfo()); }
@Test public void testDecimalRoundingMetaData() throws UDFArgumentException { GenericUDFRound udf = new GenericUDFRound(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(7, 3)), PrimitiveObjectInspectorFactory.getPrimitiveWritableConstantObjectInspector(TypeInfoFactory.intTypeInfo, new IntWritable(2)) }; PrimitiveObjectInspector outputOI = (PrimitiveObjectInspector) udf.initialize(inputOIs); DecimalTypeInfo outputTypeInfo = (DecimalTypeInfo)outputOI.getTypeInfo(); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(7, 2), outputTypeInfo); }
@Test public void testDecimalPosModDecimal() throws HiveException { GenericUDFPosMod udf = new GenericUDFPosMod(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(3, 1)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(5, 2), oi.getTypeInfo()); }
@Test public void testDecimalModDecimalSameParams() throws HiveException { GenericUDFOPMod udf = new GenericUDFOPMod(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)), PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(5, 2)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(5, 2), oi.getTypeInfo()); }