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

   ### Purpose
   
   Row-ID filters can retain manifests whose coarse min/max overlaps the query 
even when only a few Avro blocks contain relevant entries. Add optional row-id 
sidecars that select complete blocks before the existing manifest entry 
filtering and ADD/DELETE merge.
   
   - Store block byte ranges, entry ordinals, and bounded row-id interval 
unions, covering ADD/DELETE entries and all column groups. Use block min/max 
before exact interval matching.
   - Record a nullable `indexFileName` in Java and PyPaimon manifest metadata. 
Old metadata reads as null without probing for an index; legacy manifest-list 
readers can ignore the added field.
   - Validate the sidecar version, completeness, manifest identity, lengths and 
checksum. Missing, invalid or over-budget indexes fall back to the original 
read path. Partial reads bypass the full-manifest cache.
   - Publish the reference after the sidecar closes, and follow explicit 
references through rolling/rewrite, failed-commit cleanup, 
snapshot/tag/changelog retention and orphan cleanup.
   
   Both `manifest.row-id-index.write` and `manifest.row-id-index.read` default 
to false. Java builds each index by projecting the final manifest after it 
closes; existing immutable manifests are not backfilled.
   
   ### Tests
   
   Java 8, with normal Maven checks enabled: 139 tests passed.
   
   ```sh
   mvn -pl paimon-core -am -DwildcardSuites=none -DfailIfNoTests=false \
     
'-Dtest=CoreOptionsTest,ManifestFileMetaSerializerTest,ManifestListTest,ManifestFileTest,ManifestRowIdIndexTest,ManifestFileMergerTest,ManifestRewriteCleanupTest,ExpireSnapshotsTest#testSidecarsFollowSnapshotAndTagRetention,LocalOrphanFilesCleanTest#testOrphanCleanupProtectsReferencedSidecars'
 test
   ```
   
   Python: 44 tests passed.
   
   ```sh
   PYTHONPATH=paimon-python python3 -m pytest \
     paimon-python/pypaimon/tests/manifest/row_id_index_test.py \
     paimon-python/pypaimon/tests/file_store_commit_test.py -q
   ```
   
   Coverage includes shared Java/Python format fixtures, 64-bit interval 
boundaries, block offsets and ordinals, selective body reads, ADD/DELETE 
correctness, legacy metadata compatibility, explicit index names, 
no-index/no-query behavior, conservative fallback, rolling/rewrite failures, 
commit cleanup, snapshot/tag protection and orphan collection. The manifest 
tests also retain the upstream cache-size and bucket-filter regression coverage.
   


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