[fix](iceberg) Execute empty static overwrite and stabilize info_schema timezone test#65105
[fix](iceberg) Execute empty static overwrite and stabilize info_schema timezone test#65105suxiaogang223 wants to merge 3 commits into
Conversation
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
|
run buildall |
TPC-H: Total hot run time: 29686 ms |
TPC-DS: Total hot run time: 174611 ms |
ClickBench: Total hot run time: 25.17 s |
FE Regression Coverage ReportIncrement line coverage |
|
/review |
There was a problem hiding this comment.
I found one correctness issue in the empty Iceberg overwrite execution gate.
Critical checkpoints: the PR goal is focused and the static-partition empty overwrite path is covered at the transaction-unit level, but the command-level empty-source gate still misses an existing parallel Iceberg overwrite semantic for unpartitioned tables. No new concurrency, locking, config, persistence format, FE-BE protocol, or rolling-upgrade compatibility concern was found. The changed regression test keeps the rowsets query deterministic enough for this timezone case. Tests were not run locally because this checkout is missing .worktree_initialized and thirdparty/installed, including thirdparty/installed/bin/protoc.
User focus: no additional user-provided focus points were supplied.
Subagent conclusions: optimizer-rewrite reported OPT-1, which was merged as a duplicate confirmation of MAIN-1 and became the inline comment. tests-session-config reported no candidate findings. Convergence round 1 ended with both optimizer-rewrite and tests-session-config replying NO_NEW_VALUABLE_FINDINGS for the same ledger/comment set.
|
|
||
| @Override | ||
| public boolean shouldExecuteEmptyInsert() { | ||
| return emptyInsert |
There was a problem hiding this comment.
This still leaves optimized-empty unpartitioned Iceberg overwrites as a no-op. runInternal() returns immediately for any PhysicalEmptyRelation source unless shouldExecuteEmptyInsert() is true, but this override only enables the static-partition case. The transaction layer already has explicit empty overwrite semantics for unpartitioned tables (commitReplaceTxn() deletes all files when pendingResults is empty and the spec is unpartitioned), and the unit test testUnpartitionedTableOverwriteWithoutData() verifies that lower-level behavior. With this gate, INSERT OVERWRITE iceberg_unpartitioned SELECT ... WHERE false still never reaches finishInsert(), so the target table is not cleared. Please also execute empty Iceberg overwrites when insertCtx.isOverwrite() targets an unpartitioned table, or otherwise route that existing unpartitioned overwrite path through executeEmptyInsert().
What problem does this PR solve?
Issue Number: None
Related PR: #62344
Problem Summary: Pick #62344 from branch-4.1 to master. The source PR fixes Iceberg static partition overwrite when the source query is optimized to an empty relation, and stabilizes the information_schema.rowsets timezone regression case.
git cherryshowed the three source commits were not present on origin/master, so this PR applies them to master. The only pick conflict was in test_information_schema_timezone.groovy; the resolution keeps the current master offset timezone coverage and applies the stable rowsets query helper from the source PR.Release note
Fix Iceberg static partition overwrite when the source query is empty.
Check List (For Author)