JingsongLi opened a new pull request, #10349: URL: https://github.com/apache/paimon/pull/10349
### Purpose Compare composite BTree keys directly from their serialized slices during block-index and data-block binary searches. The current reader copies both encoded keys and materializes complete rows for each comparison. Expose a serialized-key comparator through `KeySerializer`, delegate composite key comparison to `RowCompactedSerializer.createSliceComparator()`, and use it in `BTreeIndexReader`. Scalar serializers retain their existing typed comparison through the default implementation. The persisted key and posting formats remain unchanged. ### Tests - Cover scalar and composite key ordering across 17 supported type cases, including NULLs, signed zero, NaN, UTF-8 strings, compact/noncompact decimals, timestamp precisions and slices with different nonzero offsets. - Extend shared-comparator concurrency coverage. - Exercise real multi-block BTree point lookups with Bloom enabled and both posting versions; verify that lookups add no full-row deserialization after metadata is read. This regression failed with the previous comparison path (20 deserializations instead of the 2 needed at open). - Run focused JDK 8 tests for `CompositeKeySerializerTest`, `CompositeBTreeIndexTest`, `CompositeBTreeRangeTest` and `BTreeIndexReaderTest`, including Checkstyle, Spotless and Enforcer. JDK 8: `mvn -pl paimon-common -am -DfailIfNoTests=false -DwildcardSuites=none -Dtest=CompositeKeySerializerTest,CompositeBTreeIndexTest,CompositeBTreeRangeTest,BTreeIndexReaderTest test` — 170 tests pass. Rerun the concurrency test after simplifying its assertion. Root Apache RAT check passes with zero unknown or unapproved licenses. -- 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]
