debezium / debezium/dbz

Align LogMiner LOB operation handling with XStream (LOB_WRITE / LOB_TRIM / LOB_ERASE)

Open
#1,900 0 comments 0 reactions 0 assignees View on GitHub
component/oracle-connector type/enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.