private DecimalWriter(int precision, int scale) { this.precision = precision; this.scale = scale; this.length = TypeUtil.decimalRequriedBytes(precision); this.bytes = ThreadLocal.withInitial(() -> new byte[length]); }
private DecimalWriter(int precision, int scale) { this.precision = precision; this.scale = scale; this.length = TypeUtil.decimalRequriedBytes(precision); this.bytes = ThreadLocal.withInitial(() -> new byte[length]); }
private FixedDecimalWriter(ColumnDescriptor desc, int precision, int scale) { super(desc); this.precision = precision; this.scale = scale; this.length = TypeUtil.decimalRequriedBytes(precision); this.bytes = ThreadLocal.withInitial(() -> new byte[length]); }
.addToSchema(Schema.createFixed( "decimal_" + decimal.precision() + "_" + decimal.scale(), null, null, TypeUtil.decimalRequriedBytes(decimal.precision()))); break; default:
@Override public Schema primitive(Schema primitive) { LogicalType logicalType = primitive.getLogicalType(); if (logicalType != null && logicalType instanceof LogicalTypes.Decimal) { LogicalTypes.Decimal decimal = (LogicalTypes.Decimal) logicalType; if (decimal.getPrecision() <= 9) { return new ParquetDecimal(decimal.getPrecision(), decimal.getScale()) .addToSchema(Schema.create(Schema.Type.INT)); } else if (decimal.getPrecision() <= 18) { return new ParquetDecimal(decimal.getPrecision(), decimal.getScale()) .addToSchema(Schema.create(Schema.Type.LONG)); } else { return new ParquetDecimal(decimal.getPrecision(), decimal.getScale()) .addToSchema(Schema.createFixed(primitive.getName(), null, null, TypeUtil.decimalRequriedBytes(decimal.getPrecision()))); } } return primitive; }
int minLength = TypeUtil.decimalRequriedBytes(decimal.precision()); return Types.primitive(FIXED_LEN_BYTE_ARRAY, repetition).length(minLength) .as(DECIMAL)