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

   ### Purpose
   
   Fixes #10460.
   
   The object RowKind support merged in #10451 and #10455 leaves a filtering 
gap in automatic postpone bucket planning. With `ignore-delete=true`, an 
ignored DELETE still reaches the partition/bucket planner before filtering; it 
can fail on routing values that should never be inspected. Filter object events 
before consulting the postpone bucket plan, matching the ordinary write path.
   
   Keep event columns in Arrow throughout the Python writer: reuse an existing 
`_VALUE_KIND` array instead of converting it to a Python list and back, use 
`pa.repeat` for constant events, and build batch filters with Arrow compute. 
Preserve configured `rowkind.field` precedence, default INSERT behavior, and 
invalid-event error ordering. Use `SpecialFields.VALUE_KIND` for the system 
column and add explicit types to `row_kinds`.
   
   Related work: #6735 and the closed, unmerged #6736 proposed earlier RowKind 
support. This PR builds on the object support now in master; native Blob 
handling, cross-partition events, and mixed-input normalization remain with the 
upstream implementation. The delete-count constant cleanup is a separate commit.
   
   ### Tests
   
   - Rebased onto master `ff2f1cec131542965c57e6808b8d5e8e95be8125`: 556 
regression tests passed, with 394 native plans exercised. The suite includes 
object/configured events, batch/stream and mixed Arrow/Row writes, postpone 
routing, native cross-partition migration, Blob writes, input changelogs, and 
failure cleanup.
   - Ran the 36 object-event cases against unmodified master: 35 passed; the 
automatic-postpone pre-routing filter case failed. All 36 pass with this change.
   - Batch-filter boundaries cover combined ignore options, sliced chunks, 
repeated keys, null business values, empty/all-filtered checkpoints, and 
invalid-event error ordering.
   - Ruff formatting and E4/E7/E9/F lint checks pass within the diff. Flake8 
passes for all 937 Python files. Pyright standard reports no new diagnostics 
against master; the same 79 existing diagnostics remain in the checked files. 
`git diff --check` passes.
   
   Validated with Python 3.10.16, PyArrow 19.0.1 and a source-built 
`pypaimon-rust` 0.5.0 wheel at `f99d526` on macOS arm64.
   


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