final int precision = decimalTypeInfo.precision(); final int scale = decimalTypeInfo.scale(); return Field.nullable(name, new ArrowType.Decimal(precision, scale)); case INTERVAL_YEAR_MONTH: return Field.nullable(name, MinorType.INTERVALYEAR.getType());
case DECIMAL: final DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) typeInfo; return new ArrowType.Decimal(decimalTypeInfo.precision(), decimalTypeInfo.scale()); case INTERVAL_YEAR_MONTH: return Types.MinorType.INTERVALYEAR.getType();
@Override public void writeDecimal(BigDecimal value) { // Infer decimal scale and precision if (arrowType == null) { arrowType = new ArrowType.Decimal(MAX_DECIMAL_PRECISION, value.scale()); } getWriter(MinorType.DECIMAL, arrowType).writeDecimal(value); }
int precision = decimalType.precision(); int scale = decimalType.scale(); return new ArrowType.Decimal(precision, scale);
.addField(new Field("string", FieldType.nullable(ArrowType.Utf8.INSTANCE), null)) .addField(new Field("bool", FieldType.nullable(ArrowType.Bool.INSTANCE), null)) .addField(new Field("decimal", FieldType.nullable(new ArrowType.Decimal(0, 0)), null)) .addField(new Field("int", FieldType.nullable(new ArrowType.Int(8, false)), null)) .addField(new Field("date", FieldType.nullable(new ArrowType.Date(DateUnit.MILLISECOND)), null))
case DECIMAL: { DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) pTypeInfo; return new Field(name, true, new Decimal(decimalTypeInfo.getPrecision(), decimalTypeInfo.getScale()), null);
return new Field(name, true, new Decimal(serializedField.getMajorType().getPrecision(), serializedField.getMajorType().getScale()), null); default: return new Field(name, true, arrowMinorType.getType(), null);
@Override public DecimalWriter decimal(String name, int scale, int precision) { FieldWriter writer = fields.get(handleCase(name)); if(writer == null) { ValueVector vector; ValueVector currentVector = container.getChild(name); DecimalVector v = container.addOrGet(name, FieldType.nullable( new org.apache.arrow.vector.types.pojo.ArrowType.Decimal(precision, scale) ), DecimalVector.class); writer = new PromotableWriter(v, container, getNullableStructWriterFactory()); vector = v; if (currentVector == null || currentVector != vector) { if(this.initialCapacity > 0) { vector.setInitialCapacity(this.initialCapacity); } vector.allocateNewSafe(); } writer.setPosition(idx()); fields.put(handleCase(name), writer); } else { if (writer instanceof PromotableWriter) { // ensure writers are initialized ((PromotableWriter)writer).getWriter(MinorType.DECIMAL); } } return writer; }
@Override public DecimalWriter decimal(String name, int scale, int precision) { FieldWriter writer = fields.get(handleCase(name)); if(writer == null) { ValueVector vector; ValueVector currentVector = container.getChild(name); DecimalVector v = container.addOrGet(name, FieldType.nullable( new org.apache.arrow.vector.types.pojo.ArrowType.Decimal(precision, scale) ), DecimalVector.class); writer = new PromotableWriter(v, container, getNullableStructWriterFactory()); vector = v; if (currentVector == null || currentVector != vector) { if(this.initialCapacity > 0) { vector.setInitialCapacity(this.initialCapacity); } vector.allocateNewSafe(); } writer.setPosition(idx()); fields.put(handleCase(name), writer); } else { if (writer instanceof PromotableWriter) { // ensure writers are initialized ((PromotableWriter)writer).getWriter(MinorType.DECIMAL); } } return writer; }
protected void baseManyColumnsDecimal() throws Exception { int columns = 1000; int leftColumns = columns; int rightColumns = columns; JoinInfo joinInfo = getJoinInfo(Arrays.asList(new JoinCondition("EQUALS", f("left_1"), f("right_1"))), JoinRelType.LEFT); Table expected = t(getHeader("right", rightColumns, "left", leftColumns), false, getDataDecimal(columns, leftColumns, 1)); validateDual(joinInfo.operator, joinInfo.clazz, new ManyColumnsGenerator<DecimalVector>(getTestAllocator(), "left", leftColumns, 1, DecimalVector.class, new ArrowType.Decimal(38, 0), BaseTestJoin::insertIntoDecimalVector), new ManyColumnsGenerator<DecimalVector>(getTestAllocator(), "right", rightColumns, 1, DecimalVector.class, new ArrowType.Decimal(38, 0), BaseTestJoin::insertIntoDecimalVector), DEFAULT_BATCH, expected); }
public static CompleteType fromDecimalPrecisionScale(int precision, int scale){ return new CompleteType(new ArrowType.Decimal(precision, scale)); }
@Override public void write(DecimalHolder holder) { // Infer decimal scale and precision if (arrowType == null) { arrowType = new ArrowType.Decimal(MAX_DECIMAL_PRECISION, holder.scale); } getWriter(MinorType.DECIMAL, arrowType).write(holder); }
@Override ArrowType getType() { return new ArrowType.Decimal(38 , 0); }
public void setup(OutputMutator output){ vector = (DecimalVector)output.getVector(name); if (vector == null) { vector = output.addField(new Field(name, true, new Decimal(precision, scale), null), DecimalVector.class); } }
/** Helper method which creates a union vector with no data */ private static UnionVector testEmptyUnionVector() { final UnionVector unionVector = new UnionVector("unionVector", ALLOCATOR, null); unionVector.initializeChildrenFromFields( asList( Field.nullable("intType", new ArrowType.Int(32, true)), Field.nullable("decimalType", new ArrowType.Decimal(4, 10)) ) ); return unionVector; }
/** * Instantiate a DecimalVector. This doesn't allocate any memory for * the data in vector. * * @param name name of the vector * @param allocator allocator for memory management. */ public DecimalVector(String name, BufferAllocator allocator, int precision, int scale) { this(name, FieldType.nullable( new ArrowType.Decimal(precision, scale)), allocator); }
public void setup(OutputMutator output){ vector = (DecimalVector)output.getVector(pair.getName()); if (vector == null) { vector = output.addField(new Field(pair.getName(), true, new Decimal(value.precision, value.scale), null), DecimalVector.class); } }
public static ArrowType getArrowTypeForMajorType(MajorType majorType) { if (majorType.getMinorType() == TypeProtos.MinorType.DECIMAL) { return new Decimal(majorType.getPrecision(), majorType.getScale()); } return getArrowMinorType(majorType.getMinorType()).getType(); }