Skip to content

Merging deletion vectors across a deletion-vectors.bitmap64 flip crashes with a class-type error #10281

Description

@LuciferYang

Search before asking

  • I searched in the issues and found no similar issues.

Paimon version

master (1.5-SNAPSHOT)

Compute Engine

Any engine writing an append or bucketed-append table with deletion vectors.

Minimal reproduce step

  1. Create an append table with deletion vectors and write some deletes, stored as bitmap32 (the default).
  2. ALTER TABLE t SET ('deletion-vectors.bitmap64' = 'true').
  3. Delete more rows on a data file that already has a stored bitmap32 deletion vector.

What doesn't meet your expectations?

The delete crashes with RuntimeException: Only instance with the same class type can be merged.. deletion-vectors.bitmap64 is not an immutable option, so it can be flipped on a table that already has deletion vectors. After the flip, a freshly created deletion vector (bitmap64) has to merge with the stored one (bitmap32), and Bitmap64DeletionVector.merge / BitmapDeletionVector.merge reject a different class. The reverse flip (bitmap64 back to false, stored bitmap64 + fresh bitmap32) crashes the same way. Both the unaware-append and bucketed-append maintainers are affected.

Anything else?

Deletion vectors are deserialized by magic number, so bitmap32 and bitmap64 vectors already coexist in one index file; merging across the two formats just needs to promote the narrower one first.

Are you willing to submit a PR?

  • I'm willing to submit a PR!

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions