dataroaring opened a new pull request, #60586: URL: https://github.com/apache/doris/pull/60586
## Summary - Add `SET read_uncommitted = true` session variable to enable READ UNCOMMITTED isolation level - Introduce `UncommittedRowsetRegistry` — a sharded concurrent registry that tracks uncommitted rowsets and computes cross-uncommitted delete bitmaps asynchronously for MoW (merge-on-write) UNIQUE_KEYS tables - Integrate with write path (RowsetBuilder/CloudRowsetBuilder), publish/rollback cleanup (TxnManager/CloudTxnDeleteBitmapCache), compaction (invalidate + recompute), schema change (clear on non-RUNNING state), and scan operator (inject dedup-ready uncommitted rowsets into read sources) - Supports both local and cloud modes; DUP_KEYS and UNIQUE_KEYS tables (AGG_KEYS excluded) ## Architecture Three-layer delete bitmap strategy for MoW correctness: 1. **Published**: rows deleted across published rowsets (in TabletMeta) 2. **Committed-vs-published**: rows in published rowsets superseded by uncommitted rowset (from commit phase) 3. **Cross-uncommitted**: rows in earlier uncommitted rowsets superseded by later ones (computed async, serial per tablet) ## Test plan - [ ] DUP table: uncommitted stream load → `SET read_uncommitted=true` → query sees data - [ ] MoW UNIQUE table: two uncommitted txns writing same key → only latest value visible - [ ] Compaction during uncommitted: verify data still visible after re-dedup - [ ] Schema change during uncommitted: verify no crash, uncommitted data cleaned up - [ ] AGG_KEYS table: verify uncommitted data is NOT visible (excluded by design) 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
