.typeAttributes(new ColumnTypeAttributes.ColumnTypeAttributesBuilder() .precision(6).scale(2).build() ).build();
public static Schema createSchemaWithDecimalColumns() { ArrayList<ColumnSchema> columns = new ArrayList<ColumnSchema>(); columns.add(new ColumnSchema.ColumnSchemaBuilder("key", Type.DECIMAL).key(true) .typeAttributes( new ColumnTypeAttributes.ColumnTypeAttributesBuilder() .precision(DecimalUtil.MAX_DECIMAL64_PRECISION).build() ).build()); columns.add(new ColumnSchema.ColumnSchemaBuilder("c1", Type.DECIMAL).nullable(true) .typeAttributes( new ColumnTypeAttributes.ColumnTypeAttributesBuilder() .precision(DecimalUtil.MAX_DECIMAL128_PRECISION).build() ).build()); return new Schema(columns); } }
new ColumnSchemaBuilder("int64", Type.INT64).key(true), new ColumnSchemaBuilder("decimal32", Type.DECIMAL).key(true) .typeAttributes(DecimalUtil.typeAttributes(DecimalUtil.MAX_DECIMAL32_PRECISION, 0)), new ColumnSchemaBuilder("decimal64", Type.DECIMAL).key(true) .typeAttributes(DecimalUtil.typeAttributes(DecimalUtil.MAX_DECIMAL64_PRECISION, 0)), new ColumnSchemaBuilder("decimal128", Type.DECIMAL).key(true) .typeAttributes(DecimalUtil.typeAttributes(DecimalUtil.MAX_DECIMAL128_PRECISION, 0)), new ColumnSchemaBuilder("string", Type.STRING).key(true), new ColumnSchemaBuilder("binary", Type.BINARY).key(true));
new ColumnSchemaBuilder("timestamp", Type.UNIXTIME_MICROS).key(true), new ColumnSchemaBuilder("decimal32", Type.DECIMAL).key(true) .typeAttributes(DecimalUtil.typeAttributes(DecimalUtil.MAX_DECIMAL32_PRECISION, 0)), new ColumnSchemaBuilder("decimal64", Type.DECIMAL).key(true) .typeAttributes(DecimalUtil.typeAttributes(DecimalUtil.MAX_DECIMAL64_PRECISION, 0)), new ColumnSchemaBuilder("decimal128", Type.DECIMAL).key(true) .typeAttributes(DecimalUtil.typeAttributes(DecimalUtil.MAX_DECIMAL128_PRECISION, 0)), new ColumnSchemaBuilder("bool", Type.BOOL), // not primary key type new ColumnSchemaBuilder("float", Type.FLOAT), // not primary key type
ColumnSchema key = new ColumnSchema.ColumnSchemaBuilder("key", Type.INT64).key(true).build(); ColumnSchema val = new ColumnSchema.ColumnSchemaBuilder("value", Type.DECIMAL) .typeAttributes(DecimalUtil.typeAttributes(4, 2)).nullable(true).build(); Schema schema = new Schema(ImmutableList.of(key, val));
.typeAttributes(DecimalUtil.typeAttributes(9, 2)) .build(); ColumnSchema decCol2 = new ColumnSchemaBuilder("col1", Type.DECIMAL) .typeAttributes(DecimalUtil.typeAttributes(9, 2)) .build(); assertEquals(decCol1, decCol2); .typeAttributes(DecimalUtil.typeAttributes(9, 0)) .build(); assertNotEquals(decCol1, decCol3);
public static ColumnSchema pbToColumnSchema(Common.ColumnSchemaPB pb) { Type type = Type.getTypeForDataType(pb.getType()); ColumnTypeAttributes typeAttributes = pb.hasTypeAttributes() ? pbToColumnTypeAttributes(pb.getTypeAttributes()) : null; Object defaultValue = pb.hasWriteDefaultValue() ? byteStringToObject(type, typeAttributes, pb.getWriteDefaultValue()) : null; ColumnSchema.Encoding encoding = ColumnSchema.Encoding.valueOf(pb.getEncoding().name()); ColumnSchema.CompressionAlgorithm compressionAlgorithm = ColumnSchema.CompressionAlgorithm.valueOf(pb.getCompression().name()); int desiredBlockSize = pb.getCfileBlockSize(); return new ColumnSchema.ColumnSchemaBuilder(pb.getName(), type) .key(pb.getIsKey()) .nullable(pb.getIsNullable()) .defaultValue(defaultValue) .encoding(encoding) .compressionAlgorithm(compressionAlgorithm) .desiredBlockSize(desiredBlockSize) .typeAttributes(typeAttributes) .build(); }
public static Schema getSchemaWithAllTypes() { List<ColumnSchema> columns = ImmutableList.of( new ColumnSchema.ColumnSchemaBuilder("int8", Type.INT8).key(true).build(), new ColumnSchema.ColumnSchemaBuilder("int16", Type.INT16).build(), new ColumnSchema.ColumnSchemaBuilder("int32", Type.INT32).build(), new ColumnSchema.ColumnSchemaBuilder("int64", Type.INT64).build(), new ColumnSchema.ColumnSchemaBuilder("bool", Type.BOOL).build(), new ColumnSchema.ColumnSchemaBuilder("float", Type.FLOAT).build(), new ColumnSchema.ColumnSchemaBuilder("double", Type.DOUBLE).build(), new ColumnSchema.ColumnSchemaBuilder("string", Type.STRING).build(), new ColumnSchema.ColumnSchemaBuilder("binary-array", Type.BINARY).build(), new ColumnSchema.ColumnSchemaBuilder("binary-bytebuffer", Type.BINARY).build(), new ColumnSchema.ColumnSchemaBuilder("null", Type.STRING).nullable(true).build(), new ColumnSchema.ColumnSchemaBuilder("timestamp", Type.UNIXTIME_MICROS).build(), new ColumnSchema.ColumnSchemaBuilder("decimal", Type.DECIMAL) .typeAttributes(DecimalUtil.typeAttributes(5, 3)).build()); return new Schema(columns); }
@Test public void testToString() { ColumnSchema col1 = new ColumnSchemaBuilder("col1", Type.STRING).build(); ColumnSchema col2 = new ColumnSchemaBuilder("col2", Type.INT64).build(); ColumnSchema col3 = new ColumnSchemaBuilder("col3", Type.DECIMAL) .typeAttributes(DecimalUtil.typeAttributes(5, 2)) .build(); assertEquals("Column name: col1, type: string", col1.toString()); assertEquals("Column name: col2, type: int64", col2.toString()); assertEquals("Column name: col3, type: decimal(5, 2)", col3.toString()); }
/** * Clone the given column schema instance. The new instance will include only the name, type, and * nullability of the passed one. * @return a new column schema */ private static ColumnSchema getStrippedColumnSchema(ColumnSchema columnToClone) { return new ColumnSchema.ColumnSchemaBuilder(columnToClone.getName(), columnToClone.getType()) .nullable(columnToClone.isNullable()) .typeAttributes(columnToClone.getTypeAttributes()) .build(); }
private void setTypeAttributes(ColumnMetadata columnMetadata, ColumnSchema.ColumnSchemaBuilder builder) { if (columnMetadata.getType() instanceof DecimalType) { DecimalType type = (DecimalType) columnMetadata.getType(); ColumnTypeAttributes attributes = new ColumnTypeAttributes.ColumnTypeAttributesBuilder() .precision(type.getPrecision()) .scale(type.getScale()).build(); builder.typeAttributes(attributes); } }
private void setTypeAttributes(ColumnMetadata columnMetadata, ColumnSchema.ColumnSchemaBuilder builder) { if (columnMetadata.getType() instanceof DecimalType) { DecimalType type = (DecimalType) columnMetadata.getType(); ColumnTypeAttributes attributes = new ColumnTypeAttributes.ColumnTypeAttributesBuilder() .precision(type.getPrecision()) .scale(type.getScale()).build(); builder.typeAttributes(attributes); } }
private void setTypeAttributes(ColumnMetadata columnMetadata, ColumnSchema.ColumnSchemaBuilder builder) { if (columnMetadata.getType() instanceof DecimalType) { DecimalType type = (DecimalType) columnMetadata.getType(); ColumnTypeAttributes attributes = new ColumnTypeAttributes.ColumnTypeAttributesBuilder() .precision(type.getPrecision()) .scale(type.getScale()).build(); builder.typeAttributes(attributes); } }