Uh oh!
There was an error while loading. Please reload this page.
branch-4.1: [feature](paimon) Support row-level UPDATE, DELETE, and MERGE - #66498
Conversation
hello-stephen
commented
Aug 5, 2026
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
suxiaogang223
commented
Aug 5, 2026
run buildall |
hello-stephen
commented
Aug 5, 2026
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Aug 5, 2026
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Aug 5, 2026
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Aug 5, 2026
FE Regression Coverage ReportIncrement line coverage |
Gabriel39
commented
Aug 6, 2026
Thanks for adding Paimon row-level DML support. I reviewed the current head Correctness issues[P1] DELETE can silently succeed without deleting rows when |
ac1681a to
d594db9Comparesuxiaogang223
commented
Aug 6, 2026
run buildall |
hello-stephen
commented
Aug 6, 2026
FE UT Coverage ReportIncrement line coverage |
suxiaogang223
commented
Aug 6, 2026
run buildall |
Gabriel39
left a comment
There was a problem hiding this comment.
I found two remaining row-level DML correctness gaps on the current head. Both can let a statement succeed while Paimon silently chooses or retains a different row version.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
f666857 to
ef5b271Comparesuxiaogang223
commented
Aug 7, 2026
run buildall |
Gabriel39
commented
Aug 7, 2026
I completed a follow-up review of the current head [P1] |
hello-stephen
commented
Aug 7, 2026
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Aug 7, 2026
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Aug 7, 2026
FE Regression Coverage ReportIncrement line coverage |
suxiaogang223
commented
Aug 8, 2026
run buildall |
Gabriel39
commented
Aug 9, 2026
/review |
Codex automated review failed and did not complete. Error: Review step was failure (possibly timeout or cancelled) Please inspect the workflow logs and rerun the review after the underlying issue is resolved. |
There was a problem hiding this comment.
Requesting changes for two silent row-level DML correctness failures.
Critical checkpoints:
- Policy and authorization: LOAD/SELECT checks and row-policy filtering remain in place, but data-mask projections are reused as physical UPDATE/DELETE/MERGE values and keys. This can persist masked values or mutate the masked key instead of the stored row.
- Paimon capability semantics:
partial-update.remove-record-on-sequence-groupis conditional, yet the gate treats option presence as an unconditional DELETE contract. An all-NULL designated group can leave the existing row while DELETE or MERGE DELETE reports success. - MERGE correctness: branch priority, PK proof, and matched/inserted cardinality checks are coherent for the admitted subset. Constant/source-free key mappings fail closed and are not a correctness defect.
- ABI, routing, and lifecycle: the operation column, Thrift/JNI/Arrow/Paimon RowKind contract, bucket routing, CTE/EXPLAIN/schema retry, and prepare/abort/commit paths were traced without another issue.
- Tests and documentation: add data-mask UPDATE/DELETE/MERGE regressions and an all-NULL sequence-group DELETE/MERGE regression. The PR description's partial-update UPDATE claim is stale because the implementation correctly rejects that engine.
- Existing review context: the current head addresses the prior global
sequence.fieldassignment and duplicate NOT MATCHED key threads; those were not duplicated here. - User focus and completion: no additional review focus was provided, so the full 35-file PR was reviewed. The maximum third round converged with no unresolved candidate at head
7256326d2dae2b1bf005ee7a4ea75f68470f53df.
No local builds or tests were run, as required by the review bundle.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
hello-stephen
commented
Aug 10, 2026
run buildall |
hello-stephen
commented
Aug 10, 2026
FE UT Coverage ReportIncrement line coverage |
hello-stephen
commented
Aug 10, 2026
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Aug 10, 2026
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
suxiaogang223
commented
Aug 16, 2026
run buildall |
hello-stephen
commented
Aug 16, 2026
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Aug 16, 2026
FE UT Coverage ReportIncrement line coverage |
hello-stephen
commented
Aug 16, 2026
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Aug 16, 2026
FE Regression Coverage ReportIncrement line coverage |
fbeee92 to
d3ed2fdComparesuxiaogang223
commented
Aug 17, 2026
run buildall |
d3ed2fd to
34a1807Comparesuxiaogang223
commented
Aug 17, 2026
run buildall |
hello-stephen
commented
Aug 17, 2026
FE Regression Coverage ReportIncrement line coverage |
Uh oh!
There was an error while loading. Please reload this page.
### What problem does this PR solve? Issue Number: closeapache#65086 Related PR: apache#65868, apache#66498, apache#66685 Problem Summary: Forward-port the connector transaction, commit-message bridge, connector-neutral write distribution contract, and Paimon write-plan selection needed to execute table writes on master. The plan preserves native Paimon fixed-bucket routing and exposes row-change capabilities for subsequent DML planning. ### Release note Support planning and committing Paimon table writes through the connector framework. ### Check List (For Author) - Test: Manual test - FE checkstyle passed; final compilation is deferred until all forward-port picks are complete. - Behavior changed: Yes, Paimon writes now use connector transactions and native write distribution planning. - Does this need documentation: No
What changed
This PR adds row-level DML support for Apache Paimon tables through the Doris Paimon catalog:
UPDATE ... SET ... WHERE ...deduplicateandpartial-updatemerge engines.DELETE FROM ... WHERE ...deduplicate.partial-updateandaggregatetables when their Paimon delete/removal options are enabled.MERGE INTO ... USING ... ON ...WHEN MATCHED THEN UPDATE.WHEN MATCHED THEN DELETE.WHEN NOT MATCHED THEN INSERT.Append-only tables are rejected for row-level DML. Unsupported merge engines and table options fail during analysis with explicit error messages.
Implementation
first-rowcases.User impact
Users can modify existing Paimon primary-key tables directly with standard Doris SQL instead of rewriting the table through INSERT or an external compute engine.
Validation
BUILD_TYPE=Debug DISABLE_BUILD_UI=ON ./build.sh --fe -j12test_paimon_write_row_level_dml: UPDATE, DELETE, MERGE, and negative cases all passedRelated to #65086