-
Bug
-
Resolution: Done
-
Major
-
2.0.0.Beta1
-
None
-
False
-
None
-
False
Bug report
The Table contains multiple LOB columns:
CREATE TABLE "LOB_TABLE" ( "A0" NUMBER, "A1" VARCHAR2(200), "A2" CLOB, "A3" NCLOB, "A4" BLOB, "A5" VARCHAR2(100), PRIMARY KEY ("A1") )
insert data (The length of A2 A3 needs to be more than 4000):
{ "payload": { "before": null, "after": { "A0": { "scale": 0, "value": "AQ==" }, "A1": "lwmzVQd6r7", "A2": "Navicat Data ...", "A3": "In the middle ...", "A4": "...", "A5": "cuTVQV0OpK" }, "op": "c", "ts_ms": 1662350118235, "transaction": null } }
update column “A2” only 。 “A3” “A4” returns null:
{ "payload": { "before": { "A0": { "scale": 0, "value": "AQ==" }, "A1": "lwmzVQd6r7", "A2": null, "A3": null, "A4": null, "A5": "cuTVQV0OpK" }, "after": { "A0": { "scale": 0, "value": "AQ==" }, "A1": "lwmzVQd6r7", "A2": "1Navicat Data... ", "A3": null, "A4": null, "A5": "cuTVQV0OpK" }, "op": "u", "ts_ms": 1662350118240, "transaction": null } }
Implementation ideas (optional)
I think the ${unavailable.value.placeholder} should be return.
The reason is that io.debezium.connector.oracle.logminer.parser#reset does not initialize the value :
private void reset(Table table) { columnName = null; schemaName = null; tableName = null; binary = false; columnValues = new Object[table.columns().size()]; // Maybe populate OracleValueConverters.UNAVAILABLE_VALUE here Arrays.fill(columnValues, OracleValueConverters.UNAVAILABLE_VALUE); }