Tags: orioledb/orioledb
Tags
Modify orioledb.undo_buffers descriptiom and add asserts for 2 * O_MAX_UNDO_RECORD_SIZE floor
Wrap wal_commit->current_oxid_commit code into CRIT_SECTION
Wrap wal_commit->current_oxid_commit code into CRIT_SECTION
Use VALGRIND_MAKE_MEM_DEFINED() instead of null_unused_bytes() Save on non-emptying undefined page bytes which and satisfy VALGRIND_CHECK_MEM_IS_DEFINED checks in btree_page_reorg() Drop null_unused_bytes() function at all
Advance bridge bitmap iterator on per-page seq scan exhaustion When dead bridge_ctids accumulate on a TIDBitmap page (left by earlier UPDATEs; GIN only sees them removed at VACUUM), the page's keybitmap resolves to fewer live PKs than page_ntuples. The per-page primary seq scan then exhausts before BRIDGE_NEXT_TUPLE marks the page exhausted, and the previous code treated the NULL as end-of-scan, silently dropping every later bitmap page. Fixes #930
test: full undo image for splits during an active seq scan (non-temp) Adds a shared-table regression test that an active sequential scan keeps seeing every pre-operation row when a split rewrites, underneath it, the on-disk extents it has already collected downlinks for. A seq scan collects its ON_DISK downlinks up front; a split then moves tuples to a new page that is not in that set, so the scan can only recover them from a full pre-split page-level undo image. That image is kept while a seq scan is active (meta_page_get_num_seq_scans() > 0) even when the page has no retained pre-op undo of its own (a freshly written leaf has an invalid undoLocation, which the retain-horizon test alone treats as "no reader needs the image"). This mirrors TempLocalPoolTest.test_evict_pages_with_concurrent_seq_scan on a regular table: with the numSeqScans guard the scan returns all 5000 ids; drop the guard and it loses the rows the splits moved off the collected pages. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
test: full undo image for splits during an active seq scan (non-temp) Adds a shared-table regression test that an active sequential scan keeps seeing every pre-operation row when a split rewrites, underneath it, the on-disk extents it has already collected downlinks for. A seq scan collects its ON_DISK downlinks up front; a split then moves tuples to a new page that is not in that set, so the scan can only recover them from a full pre-split page-level undo image. That image is kept while a seq scan is active (meta_page_get_num_seq_scans() > 0) even when the page has no retained pre-op undo of its own (a freshly written leaf has an invalid undoLocation, which the retain-horizon test alone treats as "no reader needs the image"). This mirrors TempLocalPoolTest.test_evict_pages_with_concurrent_seq_scan on a regular table: with the numSeqScans guard the scan returns all 5000 ids; drop the guard and it loses the rows the splits moved off the collected pages. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
test: full undo image for splits during an active seq scan (non-temp) Adds a shared-table regression test that an active sequential scan keeps seeing every pre-operation row when a split rewrites, underneath it, the on-disk extents it has already collected downlinks for. A seq scan collects its ON_DISK downlinks up front; a split then moves tuples to a new page that is not in that set, so the scan can only recover them from a full pre-split page-level undo image. That image is kept while a seq scan is active (meta_page_get_num_seq_scans() > 0) even when the page has no retained pre-op undo of its own (a freshly written leaf has an invalid undoLocation, which the retain-horizon test alone treats as "no reader needs the image"). This mirrors TempLocalPoolTest.test_evict_pages_with_concurrent_seq_scan on a regular table: with the numSeqScans guard the scan returns all 5000 ids; drop the guard and it loses the rows the splits moved off the collected pages. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
test: full undo image for splits during an active seq scan (non-temp) Adds a shared-table regression test that an active sequential scan keeps seeing every pre-operation row when a split rewrites, underneath it, the on-disk extents it has already collected downlinks for. A seq scan collects its ON_DISK downlinks up front; a split then moves tuples to a new page that is not in that set, so the scan can only recover them from a full pre-split page-level undo image. That image is kept while a seq scan is active (meta_page_get_num_seq_scans() > 0) even when the page has no retained pre-op undo of its own (a freshly written leaf has an invalid undoLocation, which the retain-horizon test alone treats as "no reader needs the image"). This mirrors TempLocalPoolTest.test_evict_pages_with_concurrent_seq_scan on a regular table: with the numSeqScans guard the scan returns all 5000 ids; drop the guard and it loses the rows the splits moved off the collected pages. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add test_checkpoint_snapshot_resurrects_aborted_oxid for checkpoint m… …id-abort tx bug deterministic repro
PreviousNext