What orioledb/orioledb shipped
Written by FoxPlug from the repository's own releases; not affiliated with Orioledb. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/orioledb/orioledb; Orioledb did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Released v1.10.2, which sets the correct ORIOLEDB_VERSION after v1.10.1 left it unchanged; the extension SQL version stays at 1.10 and there are no storage or WAL format changes. Release
- Changed row_lock_conflicts() to stop at the transaction's own version and to choose its final record more carefully instead of taking another transaction's in-progress version. Pull request #1500
- Fixed row_lock_conflicts() so a conflict walk that ends before passing any version no longer answers with a lock-only record. Pull request #1532
- Fixed UPDATE during a concurrent index build by capturing old-key deletes and new-key inserts in the CIC spool while a secondary index is BUILDING. Pull request #1487
- Fixed a memory leak in expression index builds on TOASTed rows by resetting the per-tuple memory context between tuples. Pull request #1515
- Fixed database tablespace moves on physical standbys by moving checkpoint metadata with the database files and invalidating evicted descriptors by physical relnode. Pull request #1517
- Fixed crashes on NULL arguments in
orioledb_tbl_structure,orioledb_idx_structureand two other structure and index functions by checking varchar and text arguments and returning NULL. Pull request #1466 - Added a plain-text ORIOLEDB_VERSION file written to the
orioledb_datadirectory at cluster creation and startup so external utilities can identify a cluster's version without connecting. Pull request #1459 - Fixed ORIOLEDB_VERSION extraction in Docker builds, where the grep pattern also matched ORIOLEDB_VERSION_FILENAME and broke the configure argument. Pull request #1527
- Dropped the single-column primary key assert from add_rbt_to_tbm(), which aborted cassert builds when a bitmap qual paired a native secondary index with a bridged one on a composite-key table. Pull request #1506
Why it matters
Users get a corrected 1.10.2 release and a set of stability fixes around row lock conflicts, concurrent index builds, expression index memory use and tablespace moves on standbys. NULL-argument crashes in the structure and index functions are fixed, and a version file now lets external tools identify a cluster's OrioleDB version without connecting.
Changelog entry
- Release v1.10.2: set the correct ORIOLEDB_VERSION; extension SQL version stays at 1.10. Release
- Row_lock_conflicts() stops at our own version and no longer takes another transaction's in-progress version as the final record. Pull request #1500
- Row_lock_conflicts() no longer answers a conflict walk that ends before passing any version with a lock-only record. Pull request #1532
- Row_lock_conflicts() skips lock-only records when choosing the row's final version. Pull request #1468
- Capture old-key deletes and new-key inserts in the CIC spool during a concurrent index build so UPDATE does not reach an unfinished tree. Pull request #1487
- Reset the per-tuple expression context between tuples when building expression indexes on TOASTed rows. Pull request #1515
- Fix database tablespace moves on physical standbys by moving checkpoint metadata with the database files. Pull request #1517
- Handle NULL varchar and text arguments in
orioledb_tbl_structure,orioledb_idx_structureand related functions. Pull request #1466 - Write an ORIOLEDB_VERSION file in
orioledb_dataat cluster creation and startup. Pull request #1459 - Fix ORIOLEDB_VERSION extraction in Docker builds so the grep matches only the intended define. Pull request #1527
- Drop the single-column primary key assert from add_rbt_to_tbm(). Pull request #1506
- Trim leading spaces before filtering transient Planning and Buffers EXPLAIN lines. Pull request #1482
OrioleDB v1.10.2 is out with the corrected version stamp. This week also fixed row lock conflict handling, UPDATE during concurrent index builds, expression index memory on TOASTed rows, tablespace moves on standbys and NULL-argument crashes. Nightly builds are available.
OrioleDB v1.10.2 is released; it corrects ORIOLEDB_VERSION after v1.10.1 left it unchanged, with no storage or WAL format changes. Work landed this week on row lock conflicts, including stopping the walk at the transaction's own version, and on UPDATE during concurrent index builds. Expression index builds on TOASTed rows no longer leak memory, tablespace moves on physical standbys are fixed, and four structure and index functions no longer crash on NULL arguments. A plain-text ORIOLEDB_VERSION file is now written to the orioledb_data directory so tools can identify a cluster's version without connecting.
Week of October 26, 2026
What shipped
- Fixed a background writer crash on range, multirange, array and composite index keys by setting syscache hooks around the type cache lookups in
walk_page. Pull request #1471 - Shipped a nightly release containing the background writer crash fix for range, array and composite index keys. Release
- Gave each CREATE INDEX CONCURRENTLY spool stream its own key and tuple buffers so a later peek cannot overwrite a chosen entry and leave a rolled-back row in the new index. Pull request #1438
- Fixed a logical decoder crash in TOASTed tables caused by small TOAST chunks with a 1-byte varlena header reaching
heap_form_tupleand the reorder buffer. Pull request #1449 - Fixed the OLD tuple for AFTER UPDATE triggers by honoring tuple version callbacks on the current-page fast path and continuing into undo when the previous row version is requested. Pull request #1453
- Fixed a failover slot sync race by taking the standby base backup before creating the failover logical slot, so the slot's catalog xmin cannot precede the standby image's catalog horizon. Pull request #1425
- Shipped the failover slot sync catalog xmin race fix as a nightly release, backpatched to stable. Release
- Changed autonomous transaction abort to take the transaction's changes back before marking it aborted, so a snapshot taken in between cannot read it as frozen. Pull request #1435
- Let the checkpointer wait when the transient page pool is exhausted instead of escalating the error to FATAL and killing the checkpointer. Pull request #1431
- Serialized recovery undo retain frontier updates to avoid a race between
read_xidslowering the retain locations andupdate_min_undo_locationsraising them. Pull request #1447
Why it matters
This week fixed several crashes and wrong-results bugs: background writer restarts on range, array and composite index keys, a decoder crash on smaller TOAST chunks, and an OLD tuple problem for AFTER UPDATE triggers. It also closed a failover slot sync race and a CREATE INDEX CONCURRENTLY path that could leave a rolled-back row in a new index. Several fixes were backpatched to stable.
Changelog entry
- Fix background writer crash on range, multirange, array and composite index keys. Pull request #1471
- Nightly release with the background writer crash fix. Release
- Give each CREATE INDEX CONCURRENTLY spool stream its own key and tuple buffers. Pull request #1438
- Fix decoder crash in TOASTed tables with 1-byte varlena chunk headers. Pull request #1449
- Fix OLD tuple for AFTER UPDATE triggers. Pull request #1453
- Fix failover slot sync catalog xmin race by taking the standby base backup first. Pull request #1425
- Nightly release with the failover slot sync fix, backpatched to stable. Release
- Take an autonomous transaction's changes back before marking it aborted. Pull request #1435
- Let the checkpointer wait on transient page pool exhaustion instead of failing. Pull request #1431
- Serialize recovery undo retain frontier updates. Pull request #1447
- Protect the parent transaction from ReorderBufferAbortOld during logical decoding. Pull request #1436
- Stabilize the bitmap plan test against leaf-page counts. Pull request #1458
This week: fixed a bgwriter crash on range, array and composite index keys, a decoder crash in TOASTed tables, and the OLD tuple for AFTER UPDATE triggers. Also fixed a failover slot sync race and a CREATE INDEX CONCURRENTLY spool buffer issue.
This week's changes: the background writer no longer crashes on range, multirange, array and composite index keys, and the logical decoder no longer crashes on TOASTed tables with short chunks. AFTER UPDATE triggers now get the correct OLD tuple, CREATE INDEX CONCURRENTLY gives each spool stream its own buffers, and failover slot sync takes the standby base backup before creating the slot. Autonomous transaction abort now takes changes back before marking the transaction aborted, and the checkpointer waits instead of dying on transient page pool exhaustion.
Week of October 19, 2026
What shipped
- Dropping a database no longer leaves an empty
orioledb_datadirectory behind. Pull request #950 - Parallel sequential scan leaders now release workerStart before creating the DSM segment, avoiding a stuck spinlock PANIC when creation fails. Pull request #1420
- Logical decoding now skips rewrite copies in table-rewriting ALTERs, so subscribers no longer stop with a duplicated key error. Pull request #1379
- Waiters in oxid waiting are now woken by granting their lock instead of being treated as deadlock victims. Pull request #1395
- Bitmap scan EXPLAIN counters now survive rescans when buffer instrumentation is on. Pull request #1398
- Removed a false assertion in
undo_it_next_pagethat nested SplitDiff records could legitimately trigger. Pull request #1385 - Backpatch detection now stops at the first matching declaration, so squash-merged pulls no longer abort the workflow with SIGPIPE. Pull request #1429
- Backpatched the empty
orioledb_datadirectory fix to v1.10. Pull request #1428 - Fixed a VALGRIND flake in
failover_slot_survives_promotionby waking the slotsync worker after WAL catchup. Pull request #1302 - Stabilized merge join EXPLAIN output in regression tests by ordering on both join keys. Pull request #1409
Why it matters
This week brought fixes for problems users can hit directly: dropping a database no longer leaves a directory behind, parallel scans no longer risk an instance restart when DSM creation fails, and logical replication of table-rewriting ALTERs no longer stops subscribers with a duplicated key error. The backpatch tooling and test fixes also reduce flaky workflows and regression runs.
Changelog entry
- Remove the empty
orioledb_datadirectory after DROP DATABASE. Pull request #950 - Backpatch the empty
orioledb_datadirectory fix to v1.10. Pull request #1428 - Release workerStart before parallel scan DSM creation to prevent a stuck spinlock PANIC. Pull request #1420
- Skip rewrite copies in logical decoding so subscribers no longer stop on a duplicated key. Pull request #1379
- Wake oxid waiters by granting their lock instead of as deadlock victims. Pull request #1395
- Keep bitmap scan EXPLAIN counters across rescans with buffer instrumentation on. Pull request #1398
- Remove a false assertion in
undo_it_next_page. Pull request #1385 - Stop squash backpatch detection at the first matching declaration to avoid SIGPIPE. Pull request #1429
- Stabilize merge join EXPLAIN regression output. Pull request #1409
- Wake the slotsync worker after WAL catchup in the slot promotion test. Pull request #1302
Dropping a database no longer leaves an empty orioledb_data directory. Parallel scans no longer hit a stuck spinlock PANIC when DSM creation fails. Rewrite copies from table-rewriting ALTERs are skipped in logical decoding, so subscribers no longer stop on a duplicated key.
This week's OrioleDB changes include removing the leftover empty orioledb_data directory after DROP DATABASE, releasing workerStart before parallel scan DSM creation so a failed creation no longer leaves workers spinning until a PANIC restarts the instance, and skipping rewrite copies in logical decoding so subscribers no longer stop with a duplicated key error. We also fixed waking oxid waiters by granting their lock, kept bitmap scan EXPLAIN counters across rescans, removed a false assertion in undo_it_next_page, and made backpatch detection stop at the first matching declaration to avoid SIGPIPE aborts.
Week of October 12, 2026
What shipped
- Stopped writing replident full WAL when
wal_levelis below logical, avoiding wasted WAL space. Pull request #1291 - Made
wal_rollbackrun in a critical section so an ERROR after the ROLLBACK record is buffered cannot buffer a second ROLLBACK in the same WAL container. Pull request #1372 - Limited page undo link checks to the places where those links are followed, avoiding a false PANIC after a restart. Pull request #1380
- Fixed orphaned relfilenode files left behind after a ROLLBACK. Pull request #1346
- Reduced the
isol_rrupdate_tableiteration count so the test no longer times out under Valgrind. Pull request #1371 - Prevented duplicate downlink insertion when multiple backends try to fix the same BROKEN_SPLIT page. Pull request #1311
- Handled a torn OTable/OIndex pair read by
recreate_table_descrwhen an ALTER TABLE commits between the separate fetches. Pull request #1368 - Released undo reservations on early exits in
btree_try_merge_and_unlockto stop leaking undo space. Pull request #1370 - Uploaded the isolation server log for failed CI runs so deadlock failures include the server log, not only the diff. Pull request #1392
- Fixed assertions that were always true because of assignment instead of comparison. Pull request #1388
Why it matters
This week fixes several correctness issues that users could hit: a false PANIC from page undo links after restart, orphaned relfilenode files after rollback, duplicate downlinks during split repair, and WAL wasted when logical replication is not used. CI changes also make failed isolation runs easier to diagnose and run full checks on stable branches.
Changelog entry
- Don't write replident full WAL when
wal_level<logical. Pull request #1291 - Run wal_rollback() in a critical section to prevent a second ROLLBACK in the same WAL container. Pull request #1372
- Check page undo links only where they are followed, avoiding a false PANIC after restart. Pull request #1380
- Fix orphaned relfilenodes after ROLLBACK. Pull request #1346
- Reduce
isol_rrupdate iteration count to avoid Valgrind timeout. Pull request #1371 - Prevent duplicate downlink insertion when multiple backends fix BROKEN_SPLIT. Pull request #1311
- Handle torn OTable/OIndex pair for oTableSourceTable callers. Pull request #1368
- Release undo reservation on early exits in
btree_try_merge_and_unlock. Pull request #1370 - Upload the isolation server log of failed CI runs. Pull request #1392
- Fix assignment-instead-of-comparisons in assertions. Pull request #1388
- Release sticky page after bad read. Pull request #1364
- Run full CI on pushes to stable branches. Pull request #1363
This week: stopped writing replident full WAL when wal_level<logical, ran wal_rollback in a critical section, limited undo link checks to where they are followed, fixed orphaned relfilenodes after ROLLBACK, reduced isol_rr iterations to avoid Valgrind timeouts, prevented duplicat
This week in OrioleDB: we stopped writing replident full WAL when wal_level is below logical, ran wal_rollback in a critical section to prevent a second ROLLBACK after an ERROR, limited page undo link checks to where links are followed to avoid a false PANIC after restart, fixed orphaned relfilenode files after ROLLBACK, reduced isol_rr iterations so the test no longer times out under Valgrind, prevented duplicate downlink insertion on BROKEN_SPLIT, handled torn OTable/OIndex reads during concurrent ALTER TABLE, released undo reservations on early exits in btree_try_merge_and_unlock, uploaded the isolation server log for failed CI runs, and fixed assertions that were always true due to assignment instead of comparison. Stable branches now also run full CI.
Week of October 5, 2026
What shipped
- Redesigned how logical replication transaction streaming is disabled, using a decoding startup hook so a mixed transaction that has only touched heap cannot leave a broken slot without a rebuild of the downstream. Pull request #1286
- Fixed a family of cache consistency bugs for enum and composite types, covering stale, inconsistent and lost cache entries after DDL. Pull request #1269
- Made enum cache inserts rollback-safe so a new key inserted by a DDL statement is not left behind when the statement is rolled back. Pull request #1276
- Rejected ALTER TABLE SET ACCESS METHOD orioledb on non-orioledb tables instead of crashing on NULL-pointer dereferences during the rewrite. Pull request #1281
- Changed
o_tbl_insert_with_arbiterto insert into bridged indexes only during ON CONFLICT insert, so bridged indexes are no longer written twice. Pull request #1285 - Made index and bitmap scans read the bridge with the query's snapshot so updates of bridged index columns no longer return data under the wrong ctid. Pull request #1268
- Stopped a rollback under row locks from rewriting the lock chain, which could let a reader return data of a rolled-back transaction. Pull request #1284
- Added the missing test for origin tracking, based on vanilla postgres. Pull request #1303
- Restricted dockerTEST and
pg_upgradeCI to main branch pushes so they stop running against unmerged code on feature branches and stop burning CI minutes, while still running on all pull requests. Pull request #1312 - Reduced a false ASAN report in
o_tbl_index_insertin mixed-ASAN builds by unpoisoningown_tup, following earlier fixes to the same class of reports. Pull request #1295
Why it matters
This week was mostly about correctness under conditions that are hard to reproduce by hand: logical replication streaming, enum and composite type caches, and index bridges read through the wrong snapshot or written twice. Several fixes target crashes and wrong results a user could hit in normal use, including ALTER TABLE on non-orioledb tables and reads that could return rolled-back data. On the maintenance side, CI work is now limited to main branch pushes and a missing schedule entry and test were added.
Changelog entry
- Redesign how logical replication transaction streaming is disabled to prevent a broken slot from a mixed transaction. Pull request #1286
- Fix enum and composite type cache consistency after DDL operations. Pull request #1269
- Make enum cache inserts rollback-safe. Pull request #1276
- Reject ALTER TABLE SET ACCESS METHOD orioledb on non-orioledb tables instead of crashing. Pull request #1281
- Insert into bridged indexes only during ON CONFLICT insert. Pull request #1285
- Read the bridge with the query's snapshot during index and bitmap scans. Pull request #1268
- Keep a rollback under row locks from rewriting the lock chain. Pull request #1284
- Add missing test for origin tracking. Pull request #1303
- Further stabilize index bridge test by disabling autovacuum globally before manual VACUUM. Pull request #1298
- Disable autovacuum on tables that rely on manual VACUUM in the index bridge test. Pull request #1290
- Fix ASAN false positive by unpoisoning
own_tupino_tbl_index_insert. Pull request #1295 - Restrict dockerTEST and
pg_upgradeCI workflows to main branch pushes. Pull request #1312
This week: logical replication streaming redesigned so a mixed transaction cannot leave a broken slot; enum and composite type cache consistency fixed; enum cache inserts made rollback-safe; ALTER TABLE SET ACCESS METHOD orioledb rejected on non-orioledb tables; index bridge no l
This week's changes to the project focus on correctness in places that are hard to test by hand. Logical replication transaction streaming was redesigned around a decoding startup hook, so a mixed transaction that has only touched heap cannot leave a broken slot without rebuilding the downstream. Enum and composite type cache consistency was fixed across a family of bugs, and enum cache inserts are now rollback-safe. ALTER TABLE SET ACCESS METHOD orioledb is now rejected on non-orioledb tables instead of crashing. Bridged indexes are no longer written twice during ON CONFLICT insert, and index and bitmap scans now read the bridge with the query's snapshot. A rollback under row locks no longer rewrites the lock chain. CI work for dockerTEST and pg_upgrade is now limited to main branch pushe
Week of September 28, 2026
What shipped
- Beta19 released with a fix for replicas that could lose rows before a restartpoint during crash recovery from table rewrites. Release
- Fixed permanent row loss on replicas after crash by covering the commit with minimum recovery point before dropping relnodes. Pull request #1265
- Fixed segmentation fault in CREATE DATABASE with TEMPLATE on tables that have enum-indexed columns. Pull request #1259
- Fixed DROP TYPE marking cache entries deleted in autonomous transactions, which could cause them to be removed during checkpoint cleanup while undo was still pending. Pull request #1260
- Fixed data loss when a tree's data file goes missing during recovery by loading such trees as empty. Pull request #1263
- Fixed use-after-free in system cache lookup by keeping tuples alive until snapshot checks complete and preventing dangling pointers in the fast cache. Pull request #1256
- Fixed TOAST permutation test flake by moving blocker annotation to the step that actually unblocks a waiting session. Release
- Fixed promotion xid horizon switchover test flake that incorrectly reported a replica as not catching up to the new primary. Pull request #1262
- Fixed slot sync test flake on loaded CI by adjusting exponential backoff timing in the slotsync background worker. Pull request #1243
- Fixed startup crash when a tablespace version directory is missing by skipping cleanup for absent directories. Pull request #1253
Why it matters
Beta19 brings critical fixes for data integrity on replicas, particularly around crash recovery and row loss scenarios. Several correctness issues in system cache handling and enum-indexed operations were addressed. This week also closed multiple flaky tests that were affecting CI reliability.
Changelog entry
- Release beta19 with recovery/replication correctness fixes Release
- Fix permanent row loss on replica after crash during table rewrite Pull request #1265
- Fix segmentation fault in CREATE DATABASE TEMPLATE with enum-indexed columns Pull request #1259
- Fix DROP TYPE marking sys cache entries deleted in autonomous transactions Pull request #1260
- Fix data loss when tree data file missing during recovery Pull request #1263
- Fix use-after-free in system cache lookup Pull request #1256
- Fix startup crash when tablespace version directory missing Pull request #1253
- Pin meta page during bridge ctid counter update in recovery Pull request #1230
- Fix logical decoding of subtransactions without heap xid Pull request #1252
- Fix segfault when scanning exclusion index with NULL exclusion function Pull request #1237
- Reset
statement_timeoutbefore second DROP INDEX CONCURRENTLY Pull request #1248 - Fix sys cache delete test flake by using lock instead of sleep Pull request #1264
Beta19 is out. Key fixes: replicas no longer lose rows during crash recovery from table rewrites, CREATE DATABASE with enum indexes no longer crashes, and DROP TYPE handles undo correctly during checkpoint cleanup.
OrioleDB beta19 released with critical data integrity fixes. Replicas can no longer lose rows before a restartpoint during crash recovery from table rewrites. System cache handling improved to prevent use-after-free and ensure DROP TYPE works correctly with checkpoint cleanup. CREATE DATABASE with enum-indexed columns now works without segmentation faults. Several test flakes on loaded CI also resolved.
Week of September 21, 2026
What shipped
- Beta18 released with DROP TABLESPACE replication, REPLICA IDENTITY FULL logical decoding with inline TOASTed attributes, and logical replication slot undo retention improvements. Release
- Fixed corruption in index-organized tables during repeated COPY operations where leaves held keys above their hikey and caused writers to spin in find_page(). Pull request #1226
- Fixed switchover divergence where promoting a standby as primary could leave the pair in an unrecoverable state when the primary had written unacknowledged WAL. Pull request #1216
- Fixed crash in evict_btree() and related assertions by keeping trees loaded while callers reach into shared state through cached descriptors. Pull request #1195
- Made orioledb.use_sparse_files a supported option to improve reusability of blocks freed by copy-on-write before checkpoint completion. Pull request #1205
- Added size validation for CIC undo stack items to prevent out-of-bounds reads that leaked backend memory into spool files. Pull request #1212
- Fixed recovery crashes by storing sys tree number instead of backend-local OSysCache pointers in undo records. Pull request #1213
- Enabled fastpath downlink search on 4-column keys and fixed compiler warnings at -O3 optimization level. Release
Why it matters
Beta18 brings replication and logical decoding improvements. Multiple fixes address data corruption during bulk operations, recovery divergence in replication scenarios, and memory safety issues in undo handling. These fixes increase stability for production use cases involving replication and checkpoint recovery.
Changelog entry
- Extension SQL version bumped to 1.10 with DROP TABLESPACE replication and REPLICA IDENTITY FULL logical decoding improvements Release
- Fixed B-tree corruption during repeated COPY into index-organized tables where leaves violated hikey invariants Pull request #1226
- Fixed switchover divergence when promoting standby and demoting primary with unacknowledged idle WAL Pull request #1216
- Fixed assertion failures by keeping trees loaded while shared state is accessed through cached descriptors Pull request #1195
- Made orioledb.use_sparse_files a supported configuration option Pull request #1205
- Added payload length validation to CIC undo stack items to prevent memory leaks Pull request #1212
- Fixed recovery crashes by storing stable
sys_tree_numinstead of backend-local pointers in syscache undo records Pull request #1213 - Enabled fastpath downlink search on 4-column keys and fixed -O3 compiler warnings Release
OrioleDB beta18 ships with DROP TABLESPACE replication and improved logical decoding. This week also fixed COPY corruption in index-organized tables, replication switchover divergence, and several recovery safety issues.
OrioleDB beta18 is out with DROP TABLESPACE replication support and enhanced logical decoding that carries TOASTed attributes inline. This week the team fixed critical issues: COPY corruption in index-organized tables that could leave B-trees inconsistent, replication switchover divergence that blocked recovery, memory safety problems in undo chain handling, and descriptor lifecycle issues causing crash assertions. These fixes target production reliability for replication and bulk load workloads.
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_conflictsPull request #1182 - Reject foreign metadata on relnode collision in O_TABLES fetch Pull request #1183
- Raised
cpu_tuple_costin 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.