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;
|
||||||
import io.debezium.relational.Tables.ColumnNameFilter;
|
import io.debezium.relational.Tables.ColumnNameFilter;
|
||||||
import io.debezium.relational.Tables.TableFilter;
|
import io.debezium.relational.Tables.TableFilter;
|
||||||
|
import oracle.jdbc.OracleTypes;
|
||||||
|
|
||||||
public class OracleConnection extends JdbcConnection {
|
public class OracleConnection extends JdbcConnection {
|
||||||
|
|
||||||
private final static Logger LOGGER = LoggerFactory.getLogger(OracleConnection.class);
|
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) {
|
public OracleConnection(Configuration config, ConnectionFactory connectionFactory) {
|
||||||
super(config, connectionFactory);
|
super(config, connectionFactory);
|
||||||
}
|
}
|
||||||
@ -117,6 +123,19 @@ public void readSchema(Tables tables, String databaseCatalog, String schemaNameP
|
|||||||
.create()
|
.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());
|
tables.overwriteTable(editor.create());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user