What orioledb/orioledb shipped
Generated by FoxPlug from public activity — not affiliated with Orioledb.
Week of September 14, 2026
What shipped
- Fixed a bug where multi-insert batches would lose undo locations for all but the last row when a checkpoint landed between primary and secondary index writes. Pull request #1194
- Fixed tree enumeration wrapping around at the largest relnode value, which could cause the system to skip or mishandle trees at the boundary. Pull request #1192
- Stopped page writes from using meta pages that the tree no longer owns, which was causing spinlock panics in the background writer. Pull request #1172
- Fixed recovery crashes when the first WAL record for a table with a collated key was a DELETE or UPDATE by resolving collations before page access. Pull request #1181
- Made parallel sequential scans interruptible when page-slot waits occur, preventing queries from hanging and making the cluster unresponsive to shutdown. Pull request #1165
- Added a check to refuse transaction IDs during recovery that cannot be extended in the transaction ID map, preventing denial-of-service from wrapped OXids. Pull request #1166
- Added the postUndoRecorded hook to ON CONFLICT inserts to record pending secondary-index fix-ups, preventing checkpoint inconsistencies. Pull request #1158
- Fixed logical decoding of REPLICA IDENTITY FULL tables by logging the old tuple flattened instead of reporting unchanged-toast-datum for every TOASTed attribute. Pull request #1162
- Added validation for seven decoded quantities from disk, shared memory, and WAL records before use as sizes, indices, or loop bounds. Pull request #1173
- Added a Jepsen anomaly triage script for the Antithesis append workload to validate consistency of concurrent upsert and read transactions. Pull request #1116
Why it matters
This week addressed critical bugs in crash recovery, concurrent operations, and WAL replay that could cause data loss or cluster unavailability. Multiple fixes validate data from disk and WAL before use, improving robustness of recovery paths and multi-insert operations under checkpoint races.
Changelog entry
- Fixed multi-insert batches losing undo locations for all but the last row when checkpoints land between primary and secondary index writes Pull request #1194
- Fixed tree enumeration wrapping at largest relnode boundary Pull request #1192
- Fixed page writes using meta pages the tree no longer owns, preventing spinlock panics Pull request #1172
- Fixed recovery crashes when first WAL record for collated-key tables is DELETE or UPDATE Pull request #1181
- Made parallel sequential scans interruptible during page-slot waits Pull request #1165
- Added check to refuse transaction IDs recovery cannot extend in the map Pull request #1166
- Added postUndoRecorded hook to ON CONFLICT inserts for secondary-index fix-ups Pull request #1158
- Fixed logical decoding of REPLICA IDENTITY FULL tables to log old tuple flattened Pull request #1162
- Added validation for seven decoded quantities before use as sizes, indices, or loop bounds Pull request #1173
- Kept vacated counter balanced when bridge ctid is reused Pull request #1178
- Hash conflicting tuple before releasing its page in modify_handle_conflicts Pull request #1182
- Reject foreign metadata on relnode collision in O_TABLES fetch Pull request #1183
- Park only the process merge_test is waiting for in concurrent merge Pull request #1163
- Raised cpu_tuple_cost in bitmap plan test to stabilize Valgrind CI flakes Pull request #1191
This week: fixed multi-insert undo tracking, parallel scan interruption, recovery collation handling, and seven validation gaps in WAL replay. Several addressed crash scenarios and data loss risks.
OrioleDB shipped fixes this week for critical issues in crash recovery and concurrent operations. Highlights include restoring undo tracking accuracy in multi-insert batches during checkpoints, making parallel scans properly interruptible, fixing recovery crashes with collated keys, and adding validation for seven quantities decoded from WAL before they're trusted as sizes or indices. Together these improve the robustness of recovery paths and prevent data loss scenarios.