DBZ-804 Adjust metadata for NUMBER columns without explicit scale value
This commit is contained in:
parent
f4aa437741
commit
5b07419ee9
@ -25,11 +25,17 @@
|
||||
import io.debezium.relational.Tables;
|
||||
import io.debezium.relational.Tables.ColumnNameFilter;
|
||||
import io.debezium.relational.Tables.TableFilter;
|
||||
import oracle.jdbc.OracleTypes;
|
||||
|
||||
public class OracleConnection extends JdbcConnection {
|
||||
|
||||
private final static Logger LOGGER = LoggerFactory.getLogger(OracleConnection.class);
|
||||
|
||||
/**
|
||||
* Returned by column metadata in Oracle if no scale is set;
|
||||
*/
|
||||
private static final int ORACLE_UNSET_SCALE = -127;
|
||||
|
||||
public OracleConnection(Configuration config, ConnectionFactory connectionFactory) {
|
||||
super(config, connectionFactory);
|
||||
}
|
||||
@ -117,6 +123,19 @@ public void readSchema(Tables tables, String databaseCatalog, String schemaNameP
|
||||
.create()
|
||||
);
|
||||
}
|
||||
// NUMBER columns without scale value have it set to -127 instead of null;
|
||||
// let's rectify that
|
||||
else if (column.jdbcType() == OracleTypes.NUMBER) {
|
||||
column.scale()
|
||||
.filter(s -> s == ORACLE_UNSET_SCALE)
|
||||
.ifPresent(s -> {
|
||||
editor.addColumn(
|
||||
column.edit()
|
||||
.scale(null)
|
||||
.create()
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
tables.overwriteTable(editor.create());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user