lszskye opened a new pull request, #74: URL: https://github.com/apache/paimon-cpp/pull/74
## feat: add BTree global index core components ### Changes #### `BtreeDefs` - Constants struct defining BTree index configuration keys and default values: compression algorithm, compression level, block size, cache size, high-priority pool ratio, and read buffer size. Also defines the `"btree"` identifier. #### `BTreeFileFooter` - Footer structure for BTree index files containing bloom filter handle, index block handle, and null bitmap handle. Supports versioned serialization/deserialization via `Read()`/`Write()` with a magic number (`0x50425449`) for validation. Fixed encoding length of 52 bytes. #### `BTreeFileMetaSelector` - Implements `FunctionVisitor<std::vector<GlobalIndexIOMeta>>` to select candidate BTree index files based on filter predicates. #### `BTreeIndexMeta` - Per-file metadata holding serialized first key, last key, and a `has_nulls` flag. Keys can be null when the entire file contains only null values (`OnlyNulls()`). Provides `Serialize()`/`Deserialize()` for binary persistence with a 9-byte fixed header (two 4-byte key lengths + 1-byte null flag). #### `KeySerializer` - Static utility for serializing `Literal` values to `Bytes` and deserializing `MemorySlice` back to `Literal`, supporting all Paimon data types. Provides `CreateComparator()` to build a `MemorySlice::SliceComparator` for binary key comparison based on Arrow data type. ### Tests - `BTreeFileFooterTest` - `BTreeFileMetaSelectorTest` - `BTreeIndexMetaTest` - `KeySerializerTest` -- 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]
