wangyong9999 opened a new issue, #291:
URL: https://github.com/apache/paimon-cpp/issues/291

   ### Search before asking
   
   - [x] I searched in the issues and found nothing similar.
   
   ### Motivation
   
   #192 and #194 added the source-backed primary-key BTree read path. Paimon 
C++ writers still need the corresponding maintenance path: after compaction 
changes the active source files of a data level, a missing or stale payload 
leaves that level uncovered and queries fall back to normal file scans.
   
   Paimon C++ should maintain these payloads during fixed-bucket primary-key 
writes and compaction, using the existing Java-compatible source metadata, 
BTree payload format, and index manifests.
   
   ### Solution
   
   Add the source-backed primary-key BTree maintenance lifecycle for 
fixed-bucket primary-key tables:
   
   1. Validate the Java-equivalent table and index prerequisites.
   2. Restore committed source-backed payload metadata into bucket writers 
without mixing Data Evolution payloads.
   3. Build one payload per indexed field and positive data level from physical 
source rows, then commit matching index additions and deletions in the same 
snapshot as the data changes.
   4. Reconcile missing, stale, duplicate, replaced, removed-definition, and 
empty-level payloads during compaction.
   5. Isolate build failures to the affected field and level so reads safely 
fall back to normal scans and a later maintenance attempt can rebuild the 
payload.
   6. Retain live index files during snapshot expiration and orphan cleanup, 
including tag and branch safety and external-file deletion retries.
   
   Reuse the existing storage formats and internal reader, writer, sort-buffer, 
path, manifest, and commit abstractions. Do not introduce a new index family or 
storage protocol.
   
   The implementation is in #245. It keeps maintenance synchronous; Java 
asynchronous scheduling, manual rebuild actions, realtime writers, and 
postpone-bucket writers remain outside this scope.
   
   ### Anything else?
   
   This is a maintenance-path follow-up to the read-path work in #192 and #194. 
It ports an existing Java capability, so no separate PIP is proposed.
   
   ### 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