-
Bug
-
Resolution: Obsolete
-
Major
-
None
-
0.9.5.Final
-
None
My config like:
- Oracle: pluggable db,
*service name:* `ORCLCDB.localhost` and `ORCLPDB1.localhost`
*sid:* `ORCLCDB` and `ORCLPDB1` - Confluent platform 5.2.1
- Connector config:
{ "connector.class" : "io.debezium.connector.oracle.OracleConnector", "tasks.max" : "1", "database.server.name" : "server1", "database.hostname" : "localhost", "database.port" : "32769", "database.user" : "c##xstrm", "database.password" : "xs", "database.dbname" : "ORCLCDB.localdomain", "database.pdb.name" : "ORCLPDB1", "database.tablename.case.insensitive": "true", "table.whitelist" : "ORCLPDB1.DEBEZIUM.products", "database.out.server.name" : "dbzxout", "database.history.kafka.bootstrap.servers" : "localhost:9092", "database.history.kafka.topic": "schema-changes.inventory", "database.tablename.case.insensitive": true }
In this scenario debezium can't catch the changes because it thinks the wihe listed table is
different from the table coming from the LCR. because
private TableId getTableId(LCR lcr) in LcrEventHandler.java returns ORCLPDB1.LOCALDOMAIN
and constructed tableId becomes ORCLPDB1.LOCALDOMAIN.DEBEZIUM.products
which is different from the white listed table.
*To overcome this issue i made a below dirty solution:*
- added config.
"database.tablename.case.insensitive": true - private TableId getTableId(LCR lcr) }} in {{LcrEventHandler.java returns ORCLPDB1.LOCALDOMAIN
but the table name is {{ ORCLPDB1.DEBEZIUM.PRODUCTS}}
so for workaround i split the string and take only ORCLPDB1
like
String sourceDatabaseName = lcr.getSourceDatabaseName(); sourceDatabaseName = sourceDatabaseName.split("\\.")[0];
- Also In TableId.java
I changed the toLowecase method to-lowercase everything
public TableId toLowercase() { return new TableId(catalogName.toLowerCase(), schemaName.toLowerCase(), tableName.toLowerCase()); }
- relates to
-
DBZ-2679 ChangeRecord informations don't connect with the TableSchema
- Closed