Skip to content

Pax: fix delete bloom crash#1755

Open
yjhjstz wants to merge 2 commits into
apache:mainfrom
yjhjstz:pax/fix-delete-bloom-crash-1749
Open

Pax: fix delete bloom crash#1755
yjhjstz wants to merge 2 commits into
apache:mainfrom
yjhjstz:pax/fix-delete-bloom-crash-1749

Conversation

@yjhjstz
Copy link
Copy Markdown
Member

@yjhjstz yjhjstz commented May 18, 2026

DeleteWithVisibilityMap projected only minmax_columns into the reader, then asked UpdateStatsInAuxTable to refresh bloomfilter stats too. When a bloomfilter column was not also a minmax column, the reader did not materialize it, and MicroPartitionStats::AddRow dereferenced an uninitialized slot value, crashing the segment with SIGSEGV.

Project the union of minmax and bloomfilter column indexes, while keeping the original lists passed to UpdateStatsInAuxTable so per-stat semantics are unchanged. Hoist the GetBloomFilterColumnIndexes() call out of the per-block loop.

Fixes #1749

What does this PR do?

Type of Change

  • Bug fix (non-breaking change)
  • New feature (non-breaking change)
  • Breaking change (fix or feature with breaking changes)
  • Documentation update

Breaking Changes

Test Plan

  • Unit tests added/updated
  • Integration tests added/updated
  • Passed make installcheck
  • Passed make -C src/test installcheck-cbdb-parallel

Impact

Performance:

User-facing changes:

Dependencies:

Checklist

Additional Context

CI Skip Instructions


yjhjstz added 2 commits May 19, 2026 04:17
DeleteWithVisibilityMap projected only minmax_columns into the reader,
then asked UpdateStatsInAuxTable to refresh bloomfilter stats too. When
a bloomfilter column was not also a minmax column, the reader did not
materialize it, and MicroPartitionStats::AddRow dereferenced an
uninitialized slot value, crashing the segment with SIGSEGV.

Project the union of minmax and bloomfilter column indexes, while
keeping the original lists passed to UpdateStatsInAuxTable so per-stat
semantics are unchanged. Hoist the GetBloomFilterColumnIndexes() call
out of the per-block loop.

Fixes apache#1749
Covers three layouts that previously crashed the segment when
bloomfilter columns were not projected by DeleteWithVisibilityMap:
  - bloomfilter column outside minmax_columns
  - bloomfilter only, no minmax
  - overlapping minmax and bloomfilter sets

Refs apache#1749
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] PAX DELETE can crash with SIGSEGV when bloomfilter_columns are not included in minmax_columns

1 participant