LuciferYang opened a new issue, #10281:
URL: https://github.com/apache/paimon/issues/10281

   ### Search before asking
   
   - [X] I searched in the [issues](https://github.com/apache/paimon/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?
   
   - [X] I'm willing to submit a PR!
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to