[fix](regression) stabilize DPHyp query85 shape check#65461
Conversation
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
|
run buildall |
|
/review |
|
PR approved by at least one committer and no changes requested. |
|
PR approved by anyone and no changes requested. |
There was a problem hiding this comment.
Automated review result: requesting changes for one regression-test failure.
Critical checkpoint conclusions:
- Goal/test proof: the PR tries to stabilize the DPHyp TPC-DS Q85 shape check by raising the join-order timeout, but the added SET uses an unregistered variable name, so the suite fails before the shape check proves anything.
- Scope: the change is small and focused, but the typo prevents the intended behavior.
- Concurrency, lifecycle, transactions, data writes, persistence, FE-BE protocol, observability, and compatibility: not involved beyond ordinary session-variable handling.
- Parallel paths: both DPHyp PlanReceiver implementations consume
SessionVariable.joinReorderTimeLimit; the issue is that the test does not set the registered variable name. - Tests/results: the expected output file is unchanged, and the regression cannot reach it until the SET line is corrected. I did not run the shape suite in this runner; validation was static against the PR patch,
SessionVariable, andVariableMgr.
User focus: no additional user-provided review focus was supplied.
Subagent conclusions: tests-session-config proposed TEST-1, accepted as MAIN-1 and submitted inline. optimizer-rewrite proposed OPT-1 as a duplicate of TEST-1, merged into MAIN-1. Convergence round 1 ended with both live subagents returning NO_NEW_VALUABLE_FINDINGS for the same ledger/comment set.
| sql "SET enable_dphyp_optimizer = true" | ||
| sql "set max_table_count_use_cascades_join_reorder = 1" | ||
| sql "set dphyper_limit=2600" | ||
| sql "set join_reorder_time_limit=10000" |
There was a problem hiding this comment.
This setting name does not exist in Doris. The registered session variable is join_order_time_limit (SessionVariable.JOIN_REORDER_TIME_LIMIT), and joinReorderTimeLimit is annotated with that name; for an unknown name, VariableMgr.setVar raises ERR_UNKNOWN_SYSTEM_VARIABLE. As written, this test fails on the SET before it reaches the qt_ds_shape_85 plan check, so it will not stabilize the DPHyp shape. Did you mean set join_order_time_limit=10000?
What problem does this PR solve?
Issue Number: None
Related PR: #64559
Problem Summary:
The TPC-DS SF1000 DPHyp query85 case checks an exact physical plan shape. It already pins the enumeration-count budget with
dphyper_limit=2600, but it leaves the independent wall-clockjoin_reorder_time_limitat its 1000 ms default.PlanReceiverstops full enumeration when either limit is exceeded. When that happens,JoinOrderJobinvokesGraphSimplifierand re-enumerates a reduced candidate space, which can select a different valid join order and fail the exact shape golden.The TeamCity timing split matches that boundary:
Execute tagto generated outputweb_pagejoincustomer_addressjoincd1joincustomer_addressjoindate_dimjoinThe four genuine join-order failures all crossed the approximately one-second boundary. The current failing PR #65434 changes only file-cache code, so the failure is not caused by its product diff. Separate qualifier-only failures from PRs #65346 and #65264 are not part of this diagnosis.
This PR pins
join_reorder_time_limit=10000for query85 only. It keepsdphyper_limit=2600, the SQL, and the expected golden unchanged, so the test continues to validate the intended DPHyp plan while avoiding load-dependent fallback.Validation:
git diff --checkrun buildalland the exact P0 case will provide CI validation on the patched head.Release note
None
Check List (For Author)
Test
Behavior changed:
Does this need documentation?
Check List (For Reviewer who merge this PR)