Align LogMiner LOB operation handling with XStream (LOB_WRITE / LOB_TRIM / LOB_ERASE)
- Dominant language
- HTML
- Stars
- 6
- Forks
- 8
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 1
Description
### Background
debezium/debezium#7374 changed the XStream adapter so that standalone `DBMS_LOB.WRITE` / `DBMS_LOB.TRIM` / `DBMS_LOB.ERASE` operations are emitted as `op=u` with the full reselected post-op LOB value, plus selective reselect (only LOB-mutating LCRs trigger reselection).
The LogMiner adapter does not currently produce the same observable wire output for the same Oracle operations — the existing IT `shouldNotStreamAnyChangesWhenLobEraseIsDetected` is now LogMiner-only because XStream emits a record for `LOB_ERASE` post-PR-7374, while LogMiner does not.
### Acceptance criteria
Both `LOGMINER_BUFFERED` and `LOGMINER_UNBUFFERED` paths should:
- [ ] Emit `op=u` (UPDATE) for standalone `DBMS_LOB.WRITE` / `DBMS_LOB.TRIM` / `DBMS_LOB.ERASE`
- [ ] Carry the full reselected post-op LOB value in `after.`, not chunk-level fragments
- [ ] Selective reselect: reselection fires only on LOB-mutating ops, not every DML
- [ ] IT coverage via the LogMiner variants of `OracleClobDataTypeIT.shouldStreamUpdateWithReselectedValueForLogMinerLob*` and `OracleBlobDataTypeIT.shouldStreamUpdateWithReselectedValueForLogMinerLob*` (mirroring the XStream variants added in #7374)
### Out of scope
- Same-transaction `INSERT + LOB_WRITE` merging (XStream emits two records since #7374 — this is documented behavior on both adapters via `ReselectColumnsPostProcessor`)
### Tracking
Follow-up to debezium/debezium#7374. Will be picked up after that PR merges and after the dbz#1867 PR (null-guard on `XStreamChangeRecordEmitter` column iteration) since #1867 shares the same code area as #7374.
Contributor guide
Assessment
This issue has not been assessed yet.