Skip to content

fix(table): align bitmap index ordering with Java#601

Merged
JingsongLi merged 1 commit into
apache:mainfrom
QuakeWang:bitmap-key-order
Jul 23, 2026
Merged

fix(table): align bitmap index ordering with Java#601
JingsongLi merged 1 commit into
apache:mainfrom
QuakeWang:bitmap-key-order

Conversation

@QuakeWang

Copy link
Copy Markdown
Member

Purpose

Bitmap lookup mixed serialized byte ordering with logical key ordering. This could select the wrong dictionary block for little-endian numeric keys. Floating-point handling also did not follow Java's canonical NaN contract, making Eq/In candidates and metadata pruning unnecessarily conservative.

Brief change log

  • Use Java-compatible logical ordering and canonical NaN serialization for Bitmap indexes.
  • Keep Float/Double Eq/In as direct lookups while failing open for residual-sensitive predicates.
  • Restore safe Bitmap metadata pruning without changing existing BTree behavior.
  • Add Java logical-order fixtures and floating-point regression coverage.

Tests

  • cargo test -p paimon --lib
  • cargo clippy -p paimon --lib --tests -- -D warnings
  • cargo fmt --all -- --check
  • git diff --check

API and Format

Documentation

Bitmap lookup mixed serialized and logical key order, while floating-point keys did not follow Java's canonical NaN contract. This could select the wrong dictionary block and made equality pruning unnecessarily conservative.

Use a Bitmap-specific Java key codec and logical ordering, keep residual-sensitive floating predicates fail-open, and cover the behavior with Java and current-format fixtures.

Signed-off-by: QuakeWang <wangfuzheng0814@foxmail.com>

@JingsongLi JingsongLi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

@JingsongLi
JingsongLi merged commit 17a993e into apache:main Jul 23, 2026
13 checks passed
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.

2 participants