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) {
|
||||
columnEditor
|
||||
.jdbcType(Types.NUMERIC)
|
||||
.type("NUMBER")
|
||||
.length(38)
|
||||
.scale(0);
|
||||
.type("NUMBER");
|
||||
|
||||
if (precisionPart == null) {
|
||||
columnEditor
|
||||
.length(0)
|
||||
.scale(-127);
|
||||
columnEditor.length(38);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -37,7 +37,7 @@
|
||||
import oracle.sql.TIMESTAMPTZ;
|
||||
|
||||
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 final OracleConnection connection;
|
||||
@ -61,9 +61,9 @@ public SchemaBuilder schemaBuilder(Column column) {
|
||||
case Types.FLOAT:
|
||||
return VariableScaleDecimal.builder();
|
||||
case Types.NUMERIC:
|
||||
return column.length() == NUMBER_VARIABLE_SCALE_LENGTH ?
|
||||
VariableScaleDecimal.builder() :
|
||||
super.schemaBuilder(column);
|
||||
return column.scale().isPresent() ?
|
||||
super.schemaBuilder(column) :
|
||||
VariableScaleDecimal.builder();
|
||||
case OracleTypes.BINARY_FLOAT:
|
||||
return SchemaBuilder.float32();
|
||||
case OracleTypes.BINARY_DOUBLE:
|
||||
@ -92,9 +92,9 @@ public ValueConverter converter(Column column, Field fieldDefn) {
|
||||
case OracleTypes.BINARY_DOUBLE:
|
||||
return data -> convertDouble(column, fieldDefn, data);
|
||||
case Types.NUMERIC:
|
||||
return column.length() == NUMBER_VARIABLE_SCALE_LENGTH ?
|
||||
data -> convertVariableScale(column, fieldDefn, data) :
|
||||
data -> convertNumeric(column, fieldDefn, data);
|
||||
return column.scale().isPresent() ?
|
||||
data -> convertNumeric(column, fieldDefn, data) :
|
||||
data -> convertVariableScale(column, fieldDefn, data);
|
||||
case Types.FLOAT:
|
||||
return data -> convertVariableScale(column, fieldDefn, data);
|
||||
case OracleTypes.TIMESTAMPTZ:
|
||||
|
Loading…
Reference in New Issue
Block a user