/** * Returns a Schema for a VariableScaleDecimal but with all other default Schema settings. * * @return the schema * @see #builder() */ public static Schema schema() { return builder().build(); }
/** * Returns a Schema for an optional VariableScaleDecimal but with all other default Schema settings. * * @return the schema * @see #builder() */ public static Schema optionalSchema() { return builder().optional().build(); }
private SchemaBuilder numericSchema(Column column) { if (decimalMode == DecimalMode.PRECISE && isVariableScaleDecimal(column)) { return VariableScaleDecimal.builder(); } return SpecialValueDecimal.builder(decimalMode, column.length(), column.scale().get()); }
new BigDecimal("5.60") )), new SchemaAndValueField("varnumeric_array", SchemaBuilder.array(VariableScaleDecimal.builder().optional().build()).optional().build(), varnumArray), new SchemaAndValueField("citext_array", SchemaBuilder.array(SchemaBuilder.OPTIONAL_STRING_SCHEMA).optional().build(),
VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 3); assertRecordSchemaAndValues( Collections.singletonList(new SchemaAndValueField("num_val", VariableScaleDecimal.builder().optional().build(), dvs)), updatedRecord, Envelope.FieldName.AFTER); VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 6); assertRecordSchemaAndValues( Collections.singletonList(new SchemaAndValueField("num_val", VariableScaleDecimal.builder().optional().build(), dvs2)), updatedRecord, Envelope.FieldName.AFTER); VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 7); assertRecordSchemaAndValues( Collections.singletonList(new SchemaAndValueField("num_val", VariableScaleDecimal.builder().build(), dvs2)), updatedRecord, Envelope.FieldName.AFTER);
Decimal.builder(2).parameter(TestHelper.PRECISION_PARAMETER_KEY, "3").optional().build(), Decimal.builder(0).parameter(TestHelper.PRECISION_PARAMETER_KEY, "4").optional().build(), VariableScaleDecimal.builder().optional().build(), Decimal.builder(4).parameter(TestHelper.PRECISION_PARAMETER_KEY, "6").optional().build(), Decimal.builder(0).parameter(TestHelper.PRECISION_PARAMETER_KEY, "4").optional().build(), VariableScaleDecimal.builder().optional().build() ); assertTableSchema("public.string_table", "vc, vcv, ch, c, t, ct",
/** * Returns a Schema for a VariableScaleDecimal but with all other default Schema settings. * * @return the schema * @see #builder() */ public static Schema schema() { return builder().build(); }
/** * Returns a Schema for an optional VariableScaleDecimal but with all other default Schema settings. * * @return the schema * @see #builder() */ public static Schema optionalSchema() { return builder().optional().build(); }
private SchemaBuilder numericSchema(Column column) { if (decimalMode == DecimalMode.PRECISE && isVariableScaleDecimal(column)) { return VariableScaleDecimal.builder(); } return SpecialValueDecimal.builder(decimalMode, column.length(), column.scale().get()); }
private SchemaBuilder getNumericSchema(Column column) { if (column.scale().isPresent()) { // return sufficiently sized int schema for non-floating point types Integer scale = column.scale().get(); // a negative scale means rounding, e.g. NUMBER(10, -2) would be rounded to hundreds if (scale <= 0) { int width = column.length() - scale; if (width < 3) { return SchemaBuilder.int8(); } else if (width < 5) { return SchemaBuilder.int16(); } else if (width < 10) { return SchemaBuilder.int32(); } else if (width < 19) { return SchemaBuilder.int64(); } } // larger non-floating point types and floating point types use Decimal return super.schemaBuilder(column); } else { return VariableScaleDecimal.builder(); } }
@Override public SchemaBuilder schemaBuilder(Column column) { logger.debug("Building schema for column {} of type {} named {} with constraints ({},{})", column.name(), column.jdbcType(), column.typeName(), column.length(), column.scale() ); switch (column.jdbcType()) { // Oracle's float is not float as in Java but a NUMERIC without scale case Types.FLOAT: return VariableScaleDecimal.builder(); case Types.NUMERIC: return getNumericSchema(column); case OracleTypes.BINARY_FLOAT: return SchemaBuilder.float32(); case OracleTypes.BINARY_DOUBLE: return SchemaBuilder.float64(); case OracleTypes.TIMESTAMPTZ: case OracleTypes.TIMESTAMPLTZ: return ZonedTimestamp.builder(); case OracleTypes.INTERVALYM: case OracleTypes.INTERVALDS: return MicroDuration.builder(); default: return super.schemaBuilder(column); } }
new BigDecimal("5.60") )), new SchemaAndValueField("varnumeric_array", SchemaBuilder.array(VariableScaleDecimal.builder().optional().build()).optional().build(), varnumArray), new SchemaAndValueField("citext_array", SchemaBuilder.array(SchemaBuilder.OPTIONAL_STRING_SCHEMA).optional().build(),
VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 3); assertRecordSchemaAndValues( Collections.singletonList(new SchemaAndValueField("num_val", VariableScaleDecimal.builder().optional().build(), dvs)), updatedRecord, Envelope.FieldName.AFTER); VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 6); assertRecordSchemaAndValues( Collections.singletonList(new SchemaAndValueField("num_val", VariableScaleDecimal.builder().optional().build(), dvs2)), updatedRecord, Envelope.FieldName.AFTER); VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 7); assertRecordSchemaAndValues( Collections.singletonList(new SchemaAndValueField("num_val", VariableScaleDecimal.builder().build(), dvs2)), updatedRecord, Envelope.FieldName.AFTER);
Decimal.builder(2).parameter(TestHelper.PRECISION_PARAMETER_KEY, "3").optional().build(), Decimal.builder(0).parameter(TestHelper.PRECISION_PARAMETER_KEY, "4").optional().build(), VariableScaleDecimal.builder().optional().build(), Decimal.builder(4).parameter(TestHelper.PRECISION_PARAMETER_KEY, "6").optional().build(), Decimal.builder(0).parameter(TestHelper.PRECISION_PARAMETER_KEY, "4").optional().build(), VariableScaleDecimal.builder().optional().build() ); assertTableSchema("public.string_table", "vc, vcv, ch, c, t, ct",