-
Bug
-
Resolution: Done
-
Major
-
2.0.0.Beta1
-
None
-
False
-
-
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);
}