LuciferYang opened a new pull request, #9777:
URL: https://github.com/apache/paimon/pull/9777

   ### Purpose
   
   close #9776
   
   `HilbertIndexer.hilbertCurvePosBytes` padded the N-dimensional 63-bit 
hilbert index to a fixed 63 bytes — only enough for 8 dimensions. With 9+ order 
columns the padding dropped low-order bytes of the big-endian index and 
distinct points collapsed into the same sort key (a 16-dimensional index lost 
nearly a byte per point).
   
   Keep the legacy 63-byte width for up to 8 dimensions so existing keys are 
byte-stable, and use the exact full width (`63*N/8 + 1`, covering BigInteger's 
sign byte) beyond that. Hilbert keys are transient sort keys in all current 
consumers (Flink/core/Spark), so nothing persists the legacy shape.
   
   ### Tests
   
   `HilbertIndexerTest#testHighDimensionIndexKeepsAllBits`: 9-dim points → 71 
bytes and points differing only in low-order bits stay distinct; 16-dim (top 
bit set, sign byte present) → 127 bytes and distinct; 2-dim/8-dim stay 63 
bytes. RED verified on master (63 bytes, points collapsed).
   
   ### API and Format
   
   No persisted format uses hilbert bytes; widths for ≤8 dimensions are 
byte-identical to before.
   
   ### Documentation
   
   None.


-- 
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