DBZ-804 Basing decision whether to use VariableScaleDecimal on presence of scale and not precision
This commit is contained in:
parent
e493951271
commit
6c899c2de4
@ -223,13 +223,10 @@ else if (ctx.datatype().native_datatype_element().REAL() != null) {
|
|||||||
else if (ctx.datatype().native_datatype_element().NUMBER() != null) {
|
else if (ctx.datatype().native_datatype_element().NUMBER() != null) {
|
||||||
columnEditor
|
columnEditor
|
||||||
.jdbcType(Types.NUMERIC)
|
.jdbcType(Types.NUMERIC)
|
||||||
.type("NUMBER")
|
.type("NUMBER");
|
||||||
.length(38)
|
|
||||||
.scale(0);
|
|
||||||
if (precisionPart == null) {
|
if (precisionPart == null) {
|
||||||
columnEditor
|
columnEditor.length(38);
|
||||||
.length(0)
|
|
||||||
.scale(-127);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
import oracle.sql.TIMESTAMPTZ;
|
import oracle.sql.TIMESTAMPTZ;
|
||||||
|
|
||||||
public class OracleValueConverters extends JdbcValueConverters {
|
public class OracleValueConverters extends JdbcValueConverters {
|
||||||
private static int NUMBER_VARIABLE_SCALE_LENGTH = 0;
|
|
||||||
private static final Pattern INTERVAL_DAY_SECOND_PATTERN = Pattern.compile("([+\\-])?(\\d+) (\\d+):(\\d+):(\\d+).(\\d+)");
|
private static final Pattern INTERVAL_DAY_SECOND_PATTERN = Pattern.compile("([+\\-])?(\\d+) (\\d+):(\\d+):(\\d+).(\\d+)");
|
||||||
|
|
||||||
private final OracleConnection connection;
|
private final OracleConnection connection;
|
||||||
@ -61,9 +61,9 @@ public SchemaBuilder schemaBuilder(Column column) {
|
|||||||
case Types.FLOAT:
|
case Types.FLOAT:
|
||||||
return VariableScaleDecimal.builder();
|
return VariableScaleDecimal.builder();
|
||||||
case Types.NUMERIC:
|
case Types.NUMERIC:
|
||||||
return column.length() == NUMBER_VARIABLE_SCALE_LENGTH ?
|
return column.scale().isPresent() ?
|
||||||
VariableScaleDecimal.builder() :
|
super.schemaBuilder(column) :
|
||||||
super.schemaBuilder(column);
|
VariableScaleDecimal.builder();
|
||||||
case OracleTypes.BINARY_FLOAT:
|
case OracleTypes.BINARY_FLOAT:
|
||||||
return SchemaBuilder.float32();
|
return SchemaBuilder.float32();
|
||||||
case OracleTypes.BINARY_DOUBLE:
|
case OracleTypes.BINARY_DOUBLE:
|
||||||
@ -92,9 +92,9 @@ public ValueConverter converter(Column column, Field fieldDefn) {
|
|||||||
case OracleTypes.BINARY_DOUBLE:
|
case OracleTypes.BINARY_DOUBLE:
|
||||||
return data -> convertDouble(column, fieldDefn, data);
|
return data -> convertDouble(column, fieldDefn, data);
|
||||||
case Types.NUMERIC:
|
case Types.NUMERIC:
|
||||||
return column.length() == NUMBER_VARIABLE_SCALE_LENGTH ?
|
return column.scale().isPresent() ?
|
||||||
data -> convertVariableScale(column, fieldDefn, data) :
|
data -> convertNumeric(column, fieldDefn, data) :
|
||||||
data -> convertNumeric(column, fieldDefn, data);
|
data -> convertVariableScale(column, fieldDefn, data);
|
||||||
case Types.FLOAT:
|
case Types.FLOAT:
|
||||||
return data -> convertVariableScale(column, fieldDefn, data);
|
return data -> convertVariableScale(column, fieldDefn, data);
|
||||||
case OracleTypes.TIMESTAMPTZ:
|
case OracleTypes.TIMESTAMPTZ:
|
||||||
|
Loading…
Reference in New Issue
Block a user