Skip to content

[enhance](agg) Optimize AGG shuffle key selection#60572

Open
feiniaofeiafei wants to merge 8 commits intoapache:masterfrom
feiniaofeiafei:agg_shuffle_key_opt
Open

[enhance](agg) Optimize AGG shuffle key selection#60572
feiniaofeiafei wants to merge 8 commits intoapache:masterfrom
feiniaofeiafei:agg_shuffle_key_opt

Conversation

@feiniaofeiafei
Copy link
Contributor

@feiniaofeiafei feiniaofeiafei commented Feb 6, 2026

What problem does this PR solve?

In distributed AGG, shuffle keys are usually all Group By columns. In BE, hash computation grows linearly with the number of shuffle keys, which can add noticeable overhead when there are many Group By columns.
This PR selects a single high-NDV column from the Group By keys as the shuffle key, reducing the number of shuffle keys and lowering hash computation and shuffle cost while preserving correctness.
Goals
Reduce shuffle key count to lower hash computation and shuffle overhead
Keep data distribution even by choosing a single high-cardinality shuffle key
Prefer numeric types to reduce string hash cost
Issue Number: close #xxx

Related PR: #xxx

Problem Summary:
Implementation

  1. Shuffle Key Selection
    Candidates are scored using statistics; the highest-scoring column is chosen as the shuffle key:
score(key) = w1 * normalize_ndv(ndv, rows)
           + w2 * normalize_hot_value_skew(hotValue, nullcount, rows, instance_number)
           - w3 * normalize_data_type_cost(dataType)

Factors:
NDV: Higher cardinality → better distribution
Hot value skew: Avoid columns that cause data skew
Data type: Numeric types have lower hash cost

Trigger Conditions
Switch: choose_one_agg_shuffle_key (default: true)
Threshold: shuffle_key_prune_threshold (default: 5); optimization applies only when shuffle key count > 5
Exclusion: AGG with source repeat is not optimized (to avoid null skew)
Dependency: Requires statistics; falls back to original logic when statistics are missing

This pr also make memo print better.

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • Behavior changed:

    • No.
    • Yes.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@Thearas
Copy link
Contributor

Thearas commented Feb 6, 2026

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@feiniaofeiafei
Copy link
Contributor Author

run buildall

1 similar comment
@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 30094 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit eba55ba6f5553983b079e9446a152fac35a36931, data reload: false

------ Round 1 ----------------------------------
q1	17645	4480	4267	4267
q2	2105	340	239	239
q3	10127	1274	717	717
q4	10195	771	309	309
q5	7537	2140	1934	1934
q6	197	182	150	150
q7	890	719	616	616
q8	9275	1370	1078	1078
q9	4684	4657	4585	4585
q10	6753	1939	1563	1563
q11	506	305	298	298
q12	332	370	223	223
q13	17761	4046	3225	3225
q14	250	237	218	218
q15	904	806	805	805
q16	703	689	628	628
q17	685	820	529	529
q18	6513	5933	5642	5642
q19	1212	1005	623	623
q20	495	492	392	392
q21	2500	1827	1774	1774
q22	362	326	279	279
Total cold run time: 101631 ms
Total hot run time: 30094 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4330	4296	4342	4296
q2	265	350	248	248
q3	2065	2651	2213	2213
q4	1327	1715	1304	1304
q5	4227	4243	4239	4239
q6	216	179	135	135
q7	1862	1797	1683	1683
q8	2504	2744	2476	2476
q9	7815	7794	7592	7592
q10	2964	3061	2611	2611
q11	562	498	461	461
q12	666	735	611	611
q13	3807	4407	3553	3553
q14	301	302	293	293
q15	843	815	785	785
q16	670	721	662	662
q17	1138	1368	1344	1344
q18	8397	8221	7798	7798
q19	868	900	883	883
q20	2032	2140	2040	2040
q21	4735	4516	4383	4383
q22	559	554	501	501
Total cold run time: 52153 ms
Total hot run time: 50111 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 28.52 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit eba55ba6f5553983b079e9446a152fac35a36931, data reload: false

query1	0.05	0.05	0.05
query2	0.10	0.04	0.04
query3	0.27	0.09	0.08
query4	1.61	0.11	0.11
query5	0.26	0.26	0.25
query6	1.16	0.67	0.68
query7	0.04	0.03	0.02
query8	0.06	0.04	0.04
query9	0.57	0.50	0.50
query10	0.55	0.54	0.56
query11	0.14	0.10	0.09
query12	0.14	0.10	0.10
query13	0.64	0.61	0.62
query14	1.07	1.04	1.06
query15	0.88	0.88	0.86
query16	0.42	0.38	0.38
query17	1.10	1.18	1.13
query18	0.22	0.22	0.21
query19	2.13	2.00	1.96
query20	0.02	0.02	0.02
query21	15.42	0.26	0.14
query22	5.40	0.06	0.06
query23	16.13	0.29	0.11
query24	0.91	0.35	1.04
query25	0.09	0.15	0.14
query26	0.15	0.13	0.14
query27	0.08	0.07	0.06
query28	4.97	1.14	0.97
query29	12.62	3.89	3.12
query30	0.27	0.14	0.11
query31	2.82	0.65	0.40
query32	3.23	0.60	0.50
query33	3.22	3.26	3.28
query34	16.14	5.41	4.75
query35	4.89	4.88	4.84
query36	0.66	0.50	0.49
query37	0.11	0.07	0.07
query38	0.07	0.05	0.04
query39	0.05	0.03	0.03
query40	0.21	0.17	0.15
query41	0.09	0.03	0.03
query42	0.05	0.03	0.04
query43	0.04	0.04	0.04
Total cold run time: 99.05 s
Total hot run time: 28.52 s

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 40.19% (168/418) 🎉
Increment coverage report
Complete coverage report

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 79.67% (333/418) 🎉
Increment coverage report
Complete coverage report

@morrySnow morrySnow requested a review from Copilot February 9, 2026 09:58
@morrySnow
Copy link
Contributor

add desc

}
if (!chosenEnforcerIdList.isEmpty()) {
str.append(" chosen enforcer(id, requiredProperties):\n");
str.append(" ⭐ Chosen Enforcer(ID, RequiredProperties):\n");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do not add emoji in toString

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR enhances Nereids aggregation/join planning by introducing shuffle-key pruning logic (optionally choosing a single “best” shuffle key based on statistics) and adds regression coverage and debugging/shape-plan improvements to validate and inspect the chosen hash columns.

Changes:

  • Add shuffle-key selection/pruning utilities and wire them into hash-join and global-agg request property derivation.
  • Introduce new session variables to control the optimization behavior and thresholds.
  • Add regression tests + expected plan-shape outputs, and update existing unit tests for the new aggregate plan attribute.

Reviewed changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
regression-test/suites/nereids_p0/hash_shuffle_key_prune/hash_shuffle_key_prune.groovy New regression suite validating shape-plan hash columns for agg/join shuffle-key pruning.
regression-test/data/nereids_p0/hash_shuffle_key_prune/hash_shuffle_key_prune.out Golden output for the new regression suite.
fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanEqualsTest.java Updates PhysicalHashAggregate construction to match new signature.
fe/fe-core/src/test/java/org/apache/doris/nereids/properties/RequestPropertyDeriverTest.java Updates tests for new PhysicalHashAggregate parameter.
fe/fe-core/src/test/java/org/apache/doris/nereids/properties/ChildOutputPropertyDeriverTest.java Updates tests for new PhysicalHashAggregate parameter.
fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java Adds skew/balance scoring helpers for shuffle-key selection.
fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java Adds choose_one_agg_shuffle_key and shuffle_key_prune_threshold session variables.
fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java Adds helpers to compute total parallel instance count (alive BEs × parallelism).
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashAggregate.java Adds hasSourceRepeat flag and propagates it through copy/with* methods.
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java Enhances shape-plan output to include resolved “Hash Columns:[…]” when enabled.
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SaltJoin.java Refactors salt factor computation to use new ConnectContext instance helpers.
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PullUpJoinFromUnionAll.java Fixes/updates the rewrite diagram comment.
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/SplitAggWithoutDistinct.java Propagates hasSourceRepeat into generated PhysicalHashAggregate plans.
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/SplitAggMultiPhaseWithoutGbyKey.java Passes cascades context into rewrite path and propagates hasSourceRepeat.
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/SplitAggMultiPhase.java Adjusts partition expression construction for multi-phase distinct and propagates hasSourceRepeat.
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/SplitAggBaseRule.java Updates helper constructors/calls for new PhysicalHashAggregate signature.
fe/fe-core/src/main/java/org/apache/doris/nereids/properties/ShuffleKeyPruneUtils.java New utility implementing shuffle-key scoring/selection for agg and join scenarios.
fe/fe-core/src/main/java/org/apache/doris/nereids/properties/RequestPropertyDeriver.java Integrates shuffle-key pruning into agg/join request property derivation.
fe/fe-core/src/main/java/org/apache/doris/nereids/properties/ChildrenPropertiesRegulator.java Removes a prior ban-check related to aggregate child distribution.
fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java Improves memo dump formatting in toString().
fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java Refines GroupExpression toString() formatting and simplifies plan text.
fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Group.java Enhances Group toString() formatting, including lowest-plan details.
fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModel.java Uses ConnectContext helpers for BE/parallel instance calculations.
fe/fe-core/src/main/java/org/apache/doris/nereids/PlanContext.java Exposes getGroupExpression() for callers (used by shuffle-key pruning logic).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 523 to 533
if (!chosenEnforcerIdList.isEmpty()) {
str.append(" chosen enforcer(id, requiredProperties):\n");
str.append(" ⭐ Chosen Enforcer(ID, RequiredProperties):\n");
for (int i = 0; i < chosenEnforcerIdList.size(); i++) {
str.append(" (").append(i).append(")").append(chosenEnforcerIdList.get(i)).append(", ")
.append(chosenEnforcerPropertiesList.get(i)).append("\n");
.append(formatProperty(chosenEnforcerPropertiesList.get(i))).append("\n");
}
}
if (chosenGroupExpressionId != -1) {
str.append(" chosen expression id: ").append(chosenGroupExpressionId).append("\n");
str.append(" chosen properties: ").append(chosenProperties).append("\n");
str.append(" ⭐ Chosen Expression ID: ").append(chosenGroupExpressionId).append("\n");
str.append(" ⭐ Chosen Properties: ").append(formatProperty(chosenProperties)).append("\n");
}
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This toString() output introduces emoji/Unicode symbols (e.g., "⭐") in diagnostic text. Similar to Memo.toString(), this can lead to encoding/log-parsing issues in some environments. Prefer plain ASCII markers or gate the decorated output behind a debug option.

Copilot uses AI. Check for mistakes.
Comment on lines +64 to +69
def checkShuffleKey = { String sqlString, String... expectedHashCols ->
def result = sql """ explain shape plan ${sqlString}"""
for (def expected : expectedHashCols) {
assertTrue(result.toString().contains("Hash Columns:[${expected}]"), "\n${result.collect { it[0] }.join('\n')} not contains expected hash cols: ${expected}")
}
}
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

checkShuffleKey is defined but never used in this suite. Keeping unused helpers makes the regression test harder to maintain; either remove it or convert some of the qt_... checks to use it so the intent (verifying chosen hash columns) is explicit.

Suggested change
def checkShuffleKey = { String sqlString, String... expectedHashCols ->
def result = sql """ explain shape plan ${sqlString}"""
for (def expected : expectedHashCols) {
assertTrue(result.toString().contains("Hash Columns:[${expected}]"), "\n${result.collect { it[0] }.join('\n')} not contains expected hash cols: ${expected}")
}
}

Copilot uses AI. Check for mistakes.
Comment on lines +73 to +74
private final boolean hasSourceRepeat;

Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hasSourceRepeat is a new stateful attribute but it is not included in equals()/hashCode(). Since GroupExpression.equals() depends on plan.equals(), aggregates that differ only by hasSourceRepeat can be treated as identical, which can incorrectly deduplicate memo expressions and affect optimization/correctness. Include hasSourceRepeat in both equals() and hashCode() (and consider exposing it in toString() for debugging).

Copilot uses AI. Check for mistakes.
Comment on lines +95 to +100
public static List<ExprId> selectOptimalShuffleKeyForAggWithParentHashRequest(
PhysicalHashAggregate<? extends Plan> agg, Set<ExprId> intersectIdSet, PlanContext context) {
List<ExprId> orderedIds = Utils.fastToImmutableList(intersectIdSet);
if (!context.getConnectContext().getSessionVariable().chooseOneAggShuffleKey
|| intersectIdSet.size() <= context.getConnectContext().getSessionVariable().shuffleKeyPruneThreshold) {
return orderedIds;
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

orderedIds is built from intersectIdSet (a Set), so the resulting shuffle key list order is non-deterministic. This can lead to unstable plan shapes and potentially different distribution specs across runs. Preserve a deterministic order (e.g., iterate parentHashExprIds and keep those present in the intersection, or preserve group-by order) instead of materializing directly from a Set.

Copilot uses AI. Check for mistakes.
Comment on lines +1328 to +1338
* When hotValues not exist or empty, treat nulls as the only hot value.
* Otherwise use the max of (top hot value count, null count).
*/
public static double getMaxHotValueCntIncludeNull(ColumnStatistic columnStatistic, double rowCount) {
Map<Literal, Float> hotValues = columnStatistic.getHotValues();
if (columnStatistic.getHotValues() == null || hotValues.isEmpty()) {
return columnStatistic.numNulls;
}
double maxRate = hotValues.values().stream().mapToDouble(Float::doubleValue).max().orElse(0);
double maxHotRows = maxRate * rowCount;
return maxHotRows > columnStatistic.numNulls ? maxHotRows : columnStatistic.numNulls;
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

getHotValues() returns percentages (see getHotValues Javadoc: "row count percentage"), but getMaxHotValueCntIncludeNull treats the max value as a ratio and multiplies by rowCount directly. This will massively overestimate hot-row counts (e.g., 30% becomes 30×rowCount) and break isBalanced / skew scoring. Convert percentage to a fraction (e.g., divide by ColumnStatistic.ONE_HUNDRED) before multiplying, and reconsider treating hotValues.isEmpty() as "no hot values" (in ColumnStatistic an empty map means hot values exist but are unknown).

Suggested change
* When hotValues not exist or empty, treat nulls as the only hot value.
* Otherwise use the max of (top hot value count, null count).
*/
public static double getMaxHotValueCntIncludeNull(ColumnStatistic columnStatistic, double rowCount) {
Map<Literal, Float> hotValues = columnStatistic.getHotValues();
if (columnStatistic.getHotValues() == null || hotValues.isEmpty()) {
return columnStatistic.numNulls;
}
double maxRate = hotValues.values().stream().mapToDouble(Float::doubleValue).max().orElse(0);
double maxHotRows = maxRate * rowCount;
return maxHotRows > columnStatistic.numNulls ? maxHotRows : columnStatistic.numNulls;
* When hotValues do not exist (null), treat nulls as the only hot value.
* Otherwise use the max of (top hot value count, null count).
*/
public static double getMaxHotValueCntIncludeNull(ColumnStatistic columnStatistic, double rowCount) {
Map<Literal, Float> hotValues = columnStatistic.getHotValues();
if (hotValues == null) {
return columnStatistic.numNulls;
}
// getHotValues() returns percentages (0-100). Convert to fraction before applying to rowCount.
double maxRatePercent = hotValues.values().stream()
.mapToDouble(Float::doubleValue)
.max()
.orElse(0);
double maxHotRows = (maxRatePercent / ColumnStatistic.ONE_HUNDRED) * rowCount;
return Math.max(maxHotRows, columnStatistic.numNulls);

Copilot uses AI. Check for mistakes.
}, needForward = false)
public boolean aggShuffleUseParentKey = true;

@VariableMgr.VarAttr(name = CHOOSE_ONE_AGG_SHUFFLE_KEY, needForward = false)
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new session variable choose_one_agg_shuffle_key is missing the required bilingual description in @VarAttr. Without it, SHOW VARIABLES/docs will expose the default placeholder ("待补充"/"TODO"). Please add a clear CN/EN description of what enabling this does and any caveats.

Suggested change
@VariableMgr.VarAttr(name = CHOOSE_ONE_AGG_SHUFFLE_KEY, needForward = false)
@VariableMgr.VarAttr(
name = CHOOSE_ONE_AGG_SHUFFLE_KEY,
needForward = false,
description = {
"在聚合算子存在多个可选分组键时,只选择一个键作为 shuffle 键,以减少 shuffle 数据量;"
+ "可能增加数据倾斜风险,当前为实验特性,建议在确认无明显倾斜时开启。",
"When aggregation operators have multiple candidate grouping keys, choose only one key as "
+ "the shuffle key to reduce the amount of shuffled data. This may increase the risk "
+ "of data skew; it is an experimental feature and should be enabled only after "
+ "verifying that skew is acceptable."
})

Copilot uses AI. Check for mistakes.
Comment on lines +3371 to +3373
description = {"控制在聚合或连接操作中进行 shuffle key 裁剪的阈值。"
+ "当 shuffle key 的基数小于该阈值时,启用裁剪以哈希分发的开销。",
"Controls the threshold for performing shuffle key pruning in aggregation or join operations. "})
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The shuffle_key_prune_threshold session variable description is currently unclear/grammatically incorrect (CN ends with a comma and reads like it's missing a verb such as “减少/降低”). Please refine the CN/EN descriptions to precisely state when pruning is applied (e.g., group-by/join key count > threshold) and what is being optimized.

Suggested change
description = {"控制在聚合或连接操作中进行 shuffle key 裁剪的阈值。"
+ "当 shuffle key 的基数小于该阈值时,启用裁剪以哈希分发的开销。",
"Controls the threshold for performing shuffle key pruning in aggregation or join operations. "})
description = {"控制在聚合或连接算子中进行 shuffle key 裁剪的阈值。"
+ "当 group by 或 join 的键数量大于该阈值时,规划器会尝试裁剪部分 shuffle key,"
+ "以减少哈希分发的数据量和计算开销。",
"Controls the threshold for pruning shuffle keys in aggregation or join operators. "
+ "When the number of group-by or join keys is greater than this threshold, "
+ "the planner will try to prune some shuffle keys to reduce hash-distribution "
+ "data volume and computation overhead."})

Copilot uses AI. Check for mistakes.
Comment on lines 840 to +852
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("root:").append(getRoot()).append("\n");
boolean first = true;
Group rootGroup = getRoot();
for (Group group : groups.values()) {
builder.append("\n\n").append(group).append("\n");
if (!first) {
builder.append("\n").append("═══════════════════════════════════════════════════════════").append("\n");
}
if (group.equals(rootGroup)) {
builder.append("\n").append("🌲 ROOT ").append(group);
} else {
builder.append("\n").append(group);
}
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

toString() output now contains emoji/Unicode decorations (e.g., "🌲 ROOT") and heavy box-drawing separators. These strings often end up in logs or diagnostic dumps, and non-ASCII output can cause encoding issues or break log parsing tools. Consider using plain ASCII markers (e.g., "ROOT" / "*" and "-----") or gating the fancy formatting behind a debug flag.

Copilot uses AI. Check for mistakes.
@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 30346 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 235bcfb889fa6e04d3ffff0565f68eb421028eac, data reload: false

------ Round 1 ----------------------------------
q1	17633	4580	4299	4299
q2	2013	339	232	232
q3	10193	1327	772	772
q4	10195	782	317	317
q5	7544	2178	1929	1929
q6	193	182	154	154
q7	889	733	613	613
q8	9285	1487	1282	1282
q9	4820	4629	4665	4629
q10	6843	1941	1564	1564
q11	450	255	226	226
q12	355	379	230	230
q13	17771	4066	3228	3228
q14	230	249	218	218
q15	905	815	800	800
q16	682	685	631	631
q17	691	816	554	554
q18	6469	5722	5616	5616
q19	1752	968	603	603
q20	507	492	386	386
q21	2593	1888	1815	1815
q22	331	280	248	248
Total cold run time: 102344 ms
Total hot run time: 30346 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4345	4332	4362	4332
q2	258	347	249	249
q3	2099	2693	2229	2229
q4	1353	1741	1291	1291
q5	4288	4185	4360	4185
q6	211	171	139	139
q7	1861	1769	1691	1691
q8	2444	2785	2395	2395
q9	7659	7551	7525	7525
q10	2906	3082	2602	2602
q11	522	455	428	428
q12	682	757	650	650
q13	3906	4450	3555	3555
q14	373	336	283	283
q15	850	789	790	789
q16	674	716	674	674
q17	1155	1358	1333	1333
q18	8540	7856	8049	7856
q19	995	949	963	949
q20	2078	2122	2018	2018
q21	4819	4136	4121	4121
q22	500	447	431	431
Total cold run time: 52518 ms
Total hot run time: 49725 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 190048 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 235bcfb889fa6e04d3ffff0565f68eb421028eac, data reload: false

query5	4313	615	484	484
query6	334	225	207	207
query7	4210	463	272	272
query8	343	268	251	251
query9	8710	2766	2757	2757
query10	538	382	340	340
query11	16397	16329	16014	16014
query12	181	123	121	121
query13	1283	452	356	356
query14	5699	3214	2948	2948
query14_1	2826	2781	2788	2781
query15	204	189	175	175
query16	981	460	443	443
query17	1110	713	591	591
query18	2457	424	345	345
query19	202	201	179	179
query20	129	120	118	118
query21	216	141	124	124
query22	4996	5170	4855	4855
query23	19028	18576	18386	18386
query23_1	18421	18444	18366	18366
query24	7201	1592	1223	1223
query24_1	1195	1192	1213	1192
query25	513	433	376	376
query26	1244	264	153	153
query27	2772	444	299	299
query28	4543	1857	1857	1857
query29	750	537	432	432
query30	311	247	216	216
query31	814	750	665	665
query32	91	79	73	73
query33	523	336	279	279
query34	936	906	591	591
query35	634	681	608	608
query36	1109	1105	937	937
query37	137	101	90	90
query38	2903	2893	2921	2893
query39	936	905	909	905
query39_1	875	872	875	872
query40	215	132	119	119
query41	71	64	62	62
query42	99	101	100	100
query43	449	467	430	430
query44	1300	717	724	717
query45	200	190	180	180
query46	878	980	599	599
query47	2149	2237	2051	2051
query48	302	325	229	229
query49	606	439	336	336
query50	665	264	208	208
query51	4135	4111	4039	4039
query52	99	104	93	93
query53	291	330	271	271
query54	276	282	251	251
query55	87	84	78	78
query56	301	320	305	305
query57	1385	1327	1288	1288
query58	270	261	249	249
query59	2066	2081	2115	2081
query60	331	339	309	309
query61	142	138	147	138
query62	582	569	520	520
query63	300	264	268	264
query64	4870	1211	919	919
query65	4535	4428	4425	4425
query66	1435	453	354	354
query67	16473	16342	16095	16095
query68	2469	1069	725	725
query69	412	308	292	292
query70	1020	944	945	944
query71	335	313	307	307
query72	2974	2772	2507	2507
query73	522	549	323	323
query74	9727	9667	9534	9534
query75	2798	2754	2418	2418
query76	2278	1058	653	653
query77	355	379	304	304
query78	11286	11376	11011	11011
query79	1042	838	588	588
query80	644	580	486	486
query81	480	286	256	256
query82	1370	154	120	120
query83	364	250	233	233
query84	258	122	97	97
query85	847	468	440	440
query86	341	307	295	295
query87	3112	3123	3020	3020
query88	3560	2692	2632	2632
query89	379	339	319	319
query90	1892	180	179	179
query91	166	160	130	130
query92	76	76	74	74
query93	903	854	487	487
query94	465	317	296	296
query95	598	401	324	324
query96	642	515	230	230
query97	2495	2485	2425	2425
query98	219	208	206	206
query99	949	938	861	861
Total cold run time: 260479 ms
Total hot run time: 190048 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 28.18 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 235bcfb889fa6e04d3ffff0565f68eb421028eac, data reload: false

query1	0.06	0.04	0.04
query2	0.09	0.05	0.04
query3	0.25	0.08	0.08
query4	1.60	0.11	0.11
query5	0.27	0.26	0.25
query6	1.16	0.68	0.68
query7	0.03	0.02	0.03
query8	0.05	0.04	0.04
query9	0.57	0.50	0.49
query10	0.55	0.56	0.55
query11	0.15	0.09	0.09
query12	0.14	0.11	0.10
query13	0.63	0.62	0.62
query14	1.06	1.07	1.07
query15	0.87	0.88	0.88
query16	0.39	0.39	0.40
query17	1.15	1.11	1.15
query18	0.23	0.21	0.20
query19	2.06	1.98	2.01
query20	0.01	0.02	0.01
query21	15.39	0.23	0.14
query22	5.14	0.05	0.06
query23	15.82	0.29	0.11
query24	1.83	0.29	0.21
query25	0.08	0.07	0.05
query26	0.14	0.13	0.13
query27	0.08	0.06	0.08
query28	3.86	1.13	0.96
query29	12.59	3.93	3.17
query30	0.28	0.13	0.11
query31	2.82	0.62	0.40
query32	3.24	0.58	0.49
query33	3.25	3.25	3.20
query34	16.44	5.40	4.72
query35	4.73	4.79	4.78
query36	0.64	0.50	0.49
query37	0.11	0.07	0.06
query38	0.07	0.04	0.04
query39	0.04	0.03	0.03
query40	0.20	0.17	0.15
query41	0.09	0.04	0.03
query42	0.05	0.03	0.02
query43	0.05	0.03	0.03
Total cold run time: 98.26 s
Total hot run time: 28.18 s

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 54.63% (224/410) 🎉
Increment coverage report
Complete coverage report

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 68.78% (282/410) 🎉
Increment coverage report
Complete coverage report

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 30194 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 28d7a0e00620f2b27c90893f22b9865b358c782a, data reload: false

------ Round 1 ----------------------------------
q1	17597	4477	4315	4315
q2	2049	377	235	235
q3	10101	1270	724	724
q4	10202	773	310	310
q5	7583	2194	1928	1928
q6	189	174	147	147
q7	894	716	600	600
q8	9266	1370	1195	1195
q9	4742	4616	4632	4616
q10	6773	1915	1541	1541
q11	454	266	233	233
q12	338	387	232	232
q13	17765	4058	3244	3244
q14	244	239	217	217
q15	890	805	802	802
q16	685	679	638	638
q17	693	855	478	478
q18	6527	5905	5756	5756
q19	1110	974	602	602
q20	497	502	383	383
q21	2488	1776	1761	1761
q22	332	285	237	237
Total cold run time: 101419 ms
Total hot run time: 30194 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4381	4370	4381	4370
q2	263	344	264	264
q3	2102	2660	2246	2246
q4	1366	1736	1259	1259
q5	4357	4179	4184	4179
q6	219	178	136	136
q7	1863	1812	1669	1669
q8	2468	2701	2496	2496
q9	7600	7495	7459	7459
q10	2883	3148	2642	2642
q11	523	446	420	420
q12	685	774	714	714
q13	3932	4273	3497	3497
q14	309	319	309	309
q15	938	854	840	840
q16	688	718	686	686
q17	1153	1304	1365	1304
q18	8174	8140	8093	8093
q19	924	859	820	820
q20	2050	2126	1991	1991
q21	4972	4546	4496	4496
q22	552	493	444	444
Total cold run time: 52402 ms
Total hot run time: 50334 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 190242 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 28d7a0e00620f2b27c90893f22b9865b358c782a, data reload: false

query5	4304	602	460	460
query6	329	215	204	204
query7	4236	463	262	262
query8	346	246	223	223
query9	8693	2741	2659	2659
query10	520	359	332	332
query11	16381	16236	16040	16040
query12	171	118	119	118
query13	1247	457	333	333
query14	5972	3244	2921	2921
query14_1	2768	2771	2771	2771
query15	197	190	167	167
query16	976	448	450	448
query17	1064	663	576	576
query18	2451	425	331	331
query19	205	206	178	178
query20	128	122	124	122
query21	220	142	125	125
query22	4814	5219	4783	4783
query23	19278	18776	18371	18371
query23_1	18557	18555	18594	18555
query24	7152	1582	1204	1204
query24_1	1219	1221	1218	1218
query25	531	430	389	389
query26	1237	272	151	151
query27	2779	455	283	283
query28	4565	1868	1895	1868
query29	762	528	438	438
query30	308	260	218	218
query31	887	752	693	693
query32	89	77	77	77
query33	520	347	276	276
query34	949	911	564	564
query35	647	676	593	593
query36	1094	1120	923	923
query37	137	97	89	89
query38	2970	2914	2888	2888
query39	957	903	916	903
query39_1	885	906	866	866
query40	227	133	116	116
query41	67	63	62	62
query42	103	98	100	98
query43	426	443	445	443
query44	1349	721	715	715
query45	200	195	186	186
query46	882	980	607	607
query47	2128	2195	2078	2078
query48	301	315	227	227
query49	610	431	352	352
query50	712	279	209	209
query51	4118	4101	4085	4085
query52	102	105	93	93
query53	287	328	280	280
query54	300	262	258	258
query55	86	81	81	81
query56	303	317	322	317
query57	1381	1382	1299	1299
query58	274	267	264	264
query59	2068	2224	1989	1989
query60	354	349	339	339
query61	174	166	163	163
query62	612	581	521	521
query63	312	269	266	266
query64	4998	1321	1031	1031
query65	4580	4428	4455	4428
query66	1474	461	360	360
query67	16272	16149	16146	16146
query68	2385	1065	734	734
query69	411	323	308	308
query70	1099	993	968	968
query71	332	320	299	299
query72	3063	2966	2573	2573
query73	528	547	316	316
query74	9665	9641	9544	9544
query75	2804	2782	2432	2432
query76	2274	1075	660	660
query77	369	370	293	293
query78	11511	11459	10909	10909
query79	1105	928	591	591
query80	1295	563	477	477
query81	566	290	256	256
query82	1013	148	114	114
query83	364	258	230	230
query84	251	123	109	109
query85	890	484	417	417
query86	418	307	324	307
query87	3141	3155	3007	3007
query88	3569	2667	2637	2637
query89	398	340	325	325
query90	1869	174	168	168
query91	167	150	132	132
query92	78	82	68	68
query93	935	848	480	480
query94	670	322	274	274
query95	580	408	315	315
query96	655	516	226	226
query97	2506	2523	2462	2462
query98	221	216	212	212
query99	964	861	883	861
Total cold run time: 262444 ms
Total hot run time: 190242 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 28.39 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 28d7a0e00620f2b27c90893f22b9865b358c782a, data reload: false

query1	0.06	0.05	0.05
query2	0.10	0.05	0.05
query3	0.26	0.08	0.09
query4	1.60	0.11	0.11
query5	0.27	0.25	0.26
query6	1.17	0.67	0.66
query7	0.03	0.02	0.03
query8	0.04	0.04	0.04
query9	0.57	0.50	0.49
query10	0.56	0.55	0.56
query11	0.14	0.09	0.10
query12	0.14	0.10	0.10
query13	0.63	0.62	0.63
query14	1.08	1.04	1.07
query15	0.90	0.86	0.88
query16	0.39	0.40	0.40
query17	1.09	1.17	1.16
query18	0.23	0.21	0.21
query19	2.01	2.07	2.02
query20	0.02	0.02	0.01
query21	15.40	0.26	0.14
query22	5.20	0.05	0.05
query23	15.97	0.29	0.10
query24	1.30	0.24	0.32
query25	0.12	0.06	0.07
query26	0.16	0.13	0.14
query27	0.07	0.06	0.06
query28	3.81	1.14	0.97
query29	12.56	3.87	3.17
query30	0.28	0.13	0.11
query31	2.83	0.64	0.40
query32	3.24	0.59	0.50
query33	3.21	3.31	3.29
query34	16.14	5.47	4.74
query35	4.79	4.75	4.84
query36	0.67	0.50	0.50
query37	0.10	0.06	0.06
query38	0.07	0.04	0.04
query39	0.05	0.03	0.03
query40	0.20	0.16	0.16
query41	0.09	0.04	0.03
query42	0.04	0.03	0.02
query43	0.05	0.04	0.03
Total cold run time: 97.64 s
Total hot run time: 28.39 s

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 83.90% (344/410) 🎉
Increment coverage report
Complete coverage report

@feiniaofeiafei
Copy link
Contributor Author

run buildall

1 similar comment
@feiniaofeiafei
Copy link
Contributor Author

run buildall

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 83.57% (346/414) 🎉
Increment coverage report
Complete coverage report

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 28618 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 3591feeecc7b0e947f3d3bad4721194e90859b16, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17661	4534	4315	4315
q2	q3	10656	760	513	513
q4	4678	351	249	249
q5	7555	1188	1010	1010
q6	180	184	147	147
q7	772	899	659	659
q8	9283	1460	1304	1304
q9	4833	4729	4651	4651
q10	6833	1897	1653	1653
q11	472	245	237	237
q12	727	573	471	471
q13	17772	4195	3424	3424
q14	233	231	209	209
q15	954	808	786	786
q16	749	721	677	677
q17	694	847	424	424
q18	5976	5254	5264	5254
q19	1200	989	620	620
q20	508	494	394	394
q21	4462	1857	1371	1371
q22	340	288	250	250
Total cold run time: 96538 ms
Total hot run time: 28618 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4391	4349	4351	4349
q2	q3	1754	2180	1731	1731
q4	851	1148	752	752
q5	4013	4319	4318	4318
q6	174	176	142	142
q7	1713	1594	1472	1472
q8	2421	2657	2579	2579
q9	7435	7568	7469	7469
q10	2639	2857	2418	2418
q11	529	429	418	418
q12	503	595	436	436
q13	4009	4485	3670	3670
q14	281	300	284	284
q15	849	791	801	791
q16	711	772	717	717
q17	1182	1550	1298	1298
q18	7212	6799	6500	6500
q19	849	890	881	881
q20	2053	2174	1979	1979
q21	3955	3655	3357	3357
q22	498	491	404	404
Total cold run time: 48022 ms
Total hot run time: 45965 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 183604 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 3591feeecc7b0e947f3d3bad4721194e90859b16, data reload: false

query5	5091	629	527	527
query6	320	219	199	199
query7	4219	462	268	268
query8	342	236	225	225
query9	8738	2796	2757	2757
query10	539	387	355	355
query11	16929	17253	17175	17175
query12	199	129	128	128
query13	1293	554	376	376
query14	7978	3442	3075	3075
query14_1	3010	2969	2921	2921
query15	207	222	193	193
query16	1010	493	488	488
query17	1150	759	639	639
query18	2858	483	372	372
query19	232	244	187	187
query20	159	155	145	145
query21	223	168	142	142
query22	5242	5065	4915	4915
query23	17197	16770	16419	16419
query23_1	16594	16601	16651	16601
query24	7055	1635	1256	1256
query24_1	1255	1249	1259	1249
query25	565	492	425	425
query26	954	264	155	155
query27	2741	470	300	300
query28	4452	1889	1875	1875
query29	802	557	474	474
query30	314	246	207	207
query31	877	722	662	662
query32	83	69	66	66
query33	509	327	295	295
query34	917	927	566	566
query35	631	671	599	599
query36	1084	1151	984	984
query37	146	94	87	87
query38	2950	2920	2839	2839
query39	890	862	852	852
query39_1	851	827	827	827
query40	228	153	148	148
query41	61	58	58	58
query42	105	104	103	103
query43	372	390	359	359
query44	
query45	197	195	182	182
query46	887	999	609	609
query47	2109	2096	2031	2031
query48	312	324	239	239
query49	625	470	394	394
query50	677	279	210	210
query51	4041	4115	4060	4060
query52	107	105	94	94
query53	292	333	278	278
query54	289	303	260	260
query55	92	86	81	81
query56	331	317	319	317
query57	1372	1370	1287	1287
query58	285	282	277	277
query59	2531	2636	2575	2575
query60	325	331	324	324
query61	147	144	139	139
query62	629	578	542	542
query63	317	272	283	272
query64	4509	1243	983	983
query65	
query66	1334	459	361	361
query67	16345	16270	16252	16252
query68	
query69	393	311	285	285
query70	1022	976	975	975
query71	347	308	298	298
query72	2767	2623	2395	2395
query73	553	550	324	324
query74	9996	9848	9716	9716
query75	2878	2726	2444	2444
query76	2311	1061	701	701
query77	372	388	317	317
query78	11187	11407	10742	10742
query79	2502	803	640	640
query80	1750	636	530	530
query81	556	274	254	254
query82	1020	146	110	110
query83	345	259	245	245
query84	247	124	99	99
query85	928	476	422	422
query86	425	299	312	299
query87	3169	3163	2991	2991
query88	3608	2682	2668	2668
query89	429	372	348	348
query90	1926	180	170	170
query91	161	158	129	129
query92	79	76	71	71
query93	1033	847	509	509
query94	655	314	297	297
query95	571	328	366	328
query96	638	528	230	230
query97	2445	2448	2421	2421
query98	221	217	209	209
query99	932	982	909	909
Total cold run time: 256098 ms
Total hot run time: 183604 ms

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 28794 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit a755d021b0db2635967e46b60d59bf210f891755, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17647	4537	4308	4308
q2	q3	10647	781	521	521
q4	4689	375	253	253
q5	7548	1204	1011	1011
q6	170	173	147	147
q7	775	860	673	673
q8	9296	1466	1291	1291
q9	4798	4774	4701	4701
q10	6815	1872	1650	1650
q11	476	259	228	228
q12	714	575	474	474
q13	17782	4290	3425	3425
q14	222	224	210	210
q15	941	792	792	792
q16	746	722	667	667
q17	705	853	418	418
q18	6021	5431	5222	5222
q19	1124	981	610	610
q20	533	488	388	388
q21	4758	1982	1540	1540
q22	388	317	265	265
Total cold run time: 96795 ms
Total hot run time: 28794 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4817	4584	4616	4584
q2	q3	1800	2295	1760	1760
q4	856	1219	800	800
q5	4022	4372	4337	4337
q6	187	172	143	143
q7	1777	1621	1504	1504
q8	2483	2678	2579	2579
q9	7494	7383	7450	7383
q10	2771	2854	2385	2385
q11	510	437	411	411
q12	515	589	450	450
q13	4092	4465	3577	3577
q14	278	307	262	262
q15	871	827	843	827
q16	692	774	742	742
q17	1154	1498	1362	1362
q18	7154	6889	6596	6596
q19	887	923	863	863
q20	2071	2181	1983	1983
q21	4010	3611	3420	3420
q22	496	437	477	437
Total cold run time: 48937 ms
Total hot run time: 46405 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 183545 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit a755d021b0db2635967e46b60d59bf210f891755, data reload: false

query5	5018	639	530	530
query6	320	226	199	199
query7	4207	469	265	265
query8	345	238	229	229
query9	8722	2787	2795	2787
query10	524	391	329	329
query11	17033	17465	17478	17465
query12	258	132	131	131
query13	1487	482	370	370
query14	7735	3308	3150	3150
query14_1	2893	2917	2865	2865
query15	214	196	183	183
query16	1015	467	469	467
query17	1536	751	610	610
query18	3273	453	369	369
query19	240	225	191	191
query20	148	134	136	134
query21	218	136	114	114
query22	5327	4772	4706	4706
query23	17199	16695	16526	16526
query23_1	16664	16736	16725	16725
query24	7258	1620	1230	1230
query24_1	1237	1236	1215	1215
query25	536	470	397	397
query26	1242	263	149	149
query27	2762	458	284	284
query28	4508	1869	1883	1869
query29	794	558	464	464
query30	313	246	207	207
query31	866	735	651	651
query32	84	70	74	70
query33	523	336	282	282
query34	914	933	561	561
query35	631	669	595	595
query36	1061	1169	970	970
query37	139	92	85	85
query38	2980	2949	2819	2819
query39	892	880	865	865
query39_1	844	831	816	816
query40	227	152	135	135
query41	63	59	58	58
query42	108	106	105	105
query43	377	378	353	353
query44	
query45	203	197	184	184
query46	869	1003	596	596
query47	2110	2129	2021	2021
query48	322	313	237	237
query49	666	468	384	384
query50	670	279	212	212
query51	4094	4110	4119	4110
query52	106	110	98	98
query53	291	339	293	293
query54	322	266	260	260
query55	92	83	91	83
query56	315	320	319	319
query57	1342	1307	1307	1307
query58	287	272	274	272
query59	2618	2782	2497	2497
query60	322	334	321	321
query61	147	148	147	147
query62	629	589	530	530
query63	314	276	283	276
query64	4819	1251	968	968
query65	
query66	1377	452	350	350
query67	16424	16472	16303	16303
query68	
query69	413	313	292	292
query70	942	985	950	950
query71	343	313	304	304
query72	3091	2824	2407	2407
query73	548	541	316	316
query74	10030	9922	9786	9786
query75	2853	2752	2452	2452
query76	2290	1032	672	672
query77	360	415	319	319
query78	11185	11354	10703	10703
query79	1207	821	614	614
query80	1392	624	534	534
query81	556	280	246	246
query82	1011	151	116	116
query83	332	253	249	249
query84	252	111	106	106
query85	885	471	419	419
query86	413	325	267	267
query87	3119	3089	2962	2962
query88	3527	2677	2665	2665
query89	434	376	346	346
query90	1976	177	171	171
query91	160	155	132	132
query92	79	75	71	71
query93	1002	836	504	504
query94	642	337	286	286
query95	589	343	385	343
query96	633	517	229	229
query97	2470	2474	2394	2394
query98	229	224	221	221
query99	1021	992	903	903
Total cold run time: 257133 ms
Total hot run time: 183545 ms

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 72.37% (275/380) 🎉
Increment coverage report
Complete coverage report

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 28789 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 2a70af8ce0674cf582a54cc449bb6dba704e8e01, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17615	4485	4313	4313
q2	q3	10650	778	514	514
q4	4678	363	252	252
q5	7562	1192	1014	1014
q6	170	174	147	147
q7	780	856	684	684
q8	9460	1446	1285	1285
q9	4912	4681	4654	4654
q10	6828	1869	1663	1663
q11	465	251	231	231
q12	714	581	469	469
q13	17795	4215	3393	3393
q14	227	224	202	202
q15	933	789	782	782
q16	760	715	672	672
q17	701	878	420	420
q18	6003	5395	5328	5328
q19	1367	969	600	600
q20	508	486	389	389
q21	4745	1922	1522	1522
q22	402	327	255	255
Total cold run time: 97275 ms
Total hot run time: 28789 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4598	4506	4635	4506
q2	q3	1927	2250	1777	1777
q4	882	1223	800	800
q5	4061	4428	4323	4323
q6	188	179	142	142
q7	1790	1676	1569	1569
q8	2499	2829	2577	2577
q9	7597	7317	7394	7317
q10	2645	2821	2408	2408
q11	509	457	425	425
q12	524	581	461	461
q13	4125	4393	3592	3592
q14	277	293	283	283
q15	848	834	800	800
q16	716	803	738	738
q17	1185	1536	1282	1282
q18	7165	6731	6874	6731
q19	894	854	859	854
q20	2062	2182	2087	2087
q21	3992	3558	3454	3454
q22	476	460	399	399
Total cold run time: 48960 ms
Total hot run time: 46525 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 182816 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 2a70af8ce0674cf582a54cc449bb6dba704e8e01, data reload: false

query5	4772	628	511	511
query6	329	219	231	219
query7	4222	459	269	269
query8	360	260	228	228
query9	8739	2653	2711	2653
query10	511	379	326	326
query11	16966	17315	17165	17165
query12	208	142	134	134
query13	2534	479	346	346
query14	6460	3506	3141	3141
query14_1	2916	2893	2826	2826
query15	221	203	178	178
query16	1011	481	450	450
query17	1442	764	616	616
query18	2877	437	341	341
query19	201	215	173	173
query20	144	129	124	124
query21	225	137	112	112
query22	5819	4877	4772	4772
query23	17183	16742	16546	16546
query23_1	16657	16627	16611	16611
query24	7139	1596	1212	1212
query24_1	1233	1231	1210	1210
query25	530	447	393	393
query26	1225	269	154	154
query27	2770	459	286	286
query28	4515	1873	1826	1826
query29	795	551	465	465
query30	317	238	215	215
query31	890	730	642	642
query32	78	71	69	69
query33	504	352	268	268
query34	921	922	543	543
query35	629	666	594	594
query36	1032	1170	1008	1008
query37	142	96	83	83
query38	2970	2889	2872	2872
query39	1021	858	839	839
query39_1	814	840	832	832
query40	228	151	138	138
query41	61	60	59	59
query42	107	103	100	100
query43	361	372	342	342
query44	
query45	196	191	192	191
query46	870	975	606	606
query47	2153	2134	2042	2042
query48	316	315	238	238
query49	617	457	377	377
query50	680	274	210	210
query51	4070	4127	4075	4075
query52	109	105	94	94
query53	287	329	285	285
query54	293	263	260	260
query55	88	82	80	80
query56	317	311	319	311
query57	1363	1317	1283	1283
query58	287	274	276	274
query59	2567	2618	2550	2550
query60	329	337	307	307
query61	149	147	146	146
query62	626	585	560	560
query63	308	279	276	276
query64	4830	1239	966	966
query65	
query66	1434	473	363	363
query67	16471	16415	16193	16193
query68	
query69	402	309	299	299
query70	959	911	910	910
query71	351	305	304	304
query72	3007	2783	2526	2526
query73	543	543	329	329
query74	10015	9923	9712	9712
query75	2848	2727	2450	2450
query76	2292	1031	673	673
query77	395	403	309	309
query78	11143	11406	10734	10734
query79	3456	766	585	585
query80	1763	619	546	546
query81	587	272	247	247
query82	920	147	117	117
query83	337	271	263	263
query84	251	114	105	105
query85	890	483	433	433
query86	500	336	287	287
query87	3148	3062	2985	2985
query88	4750	2629	2623	2623
query89	433	364	332	332
query90	2067	172	167	167
query91	160	151	130	130
query92	89	72	69	69
query93	2751	846	486	486
query94	644	302	243	243
query95	598	345	315	315
query96	622	518	235	235
query97	2477	2478	2426	2426
query98	243	221	212	212
query99	935	965	919	919
Total cold run time: 261336 ms
Total hot run time: 182816 ms

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 27674 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 54c164723fc6649e576eecb88e00f4f0c120ae8f, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17634	4525	4278	4278
q2	q3	10653	797	507	507
q4	4682	364	256	256
q5	7553	1201	1033	1033
q6	177	175	146	146
q7	768	844	676	676
q8	9300	1463	1359	1359
q9	4917	4741	4677	4677
q10	6291	1903	1705	1705
q11	449	262	235	235
q12	750	597	459	459
q13	18039	2923	2167	2167
q14	227	230	215	215
q15	939	809	799	799
q16	741	719	679	679
q17	702	852	414	414
q18	5920	5400	5278	5278
q19	1129	992	621	621
q20	520	496	389	389
q21	4496	2077	1509	1509
q22	385	320	272	272
Total cold run time: 96272 ms
Total hot run time: 27674 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4630	4694	4516	4516
q2	q3	4050	4432	3836	3836
q4	869	1199	777	777
q5	4068	4475	4404	4404
q6	184	181	147	147
q7	1796	1619	1554	1554
q8	2463	2689	2581	2581
q9	7514	7305	7415	7305
q10	3742	4002	3664	3664
q11	509	446	493	446
q12	500	614	453	453
q13	2924	3161	2321	2321
q14	280	291	278	278
q15	887	831	785	785
q16	714	756	715	715
q17	1195	1622	1349	1349
q18	7276	6792	6537	6537
q19	911	868	874	868
q20	2109	2167	2021	2021
q21	3989	3385	3397	3385
q22	466	449	412	412
Total cold run time: 51076 ms
Total hot run time: 48354 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 151878 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 54c164723fc6649e576eecb88e00f4f0c120ae8f, data reload: false

query5	4318	633	514	514
query6	317	228	208	208
query7	4201	454	283	283
query8	336	248	236	236
query9	8676	2759	2765	2759
query10	528	373	342	342
query11	7305	5808	5596	5596
query12	188	131	124	124
query13	1278	450	371	371
query14	5762	3830	3596	3596
query14_1	2814	2881	2841	2841
query15	204	197	174	174
query16	973	479	462	462
query17	1028	724	635	635
query18	2456	449	362	362
query19	216	216	188	188
query20	136	132	152	132
query21	225	145	125	125
query22	4685	5230	4717	4717
query23	16015	15439	14895	14895
query23_1	15249	15043	15149	15043
query24	7460	1672	1395	1395
query24_1	1293	1264	1280	1264
query25	595	492	449	449
query26	1253	259	147	147
query27	2779	485	288	288
query28	4525	1863	1877	1863
query29	863	552	480	480
query30	303	237	205	205
query31	1357	1300	1210	1210
query32	77	75	75	75
query33	527	324	311	311
query34	939	914	554	554
query35	636	670	623	623
query36	1047	1127	1024	1024
query37	128	90	79	79
query38	2970	2891	2840	2840
query39	865	852	817	817
query39_1	814	811	826	811
query40	224	150	133	133
query41	64	58	58	58
query42	317	309	298	298
query43	242	248	216	216
query44	
query45	197	189	186	186
query46	868	986	599	599
query47	2110	2151	2062	2062
query48	312	313	239	239
query49	617	458	385	385
query50	670	297	218	218
query51	4062	4095	4077	4077
query52	290	302	281	281
query53	288	336	287	287
query54	294	266	264	264
query55	100	89	86	86
query56	308	315	316	315
query57	1380	1356	1324	1324
query58	288	277	281	277
query59	1346	1454	1294	1294
query60	340	337	322	322
query61	147	140	161	140
query62	615	595	541	541
query63	318	277	277	277
query64	5113	1302	988	988
query65	
query66	1479	482	367	367
query67	16583	16394	16159	16159
query68	
query69	393	307	289	289
query70	988	898	959	898
query71	331	312	299	299
query72	2781	2760	2468	2468
query73	539	554	325	325
query74	9907	9814	9732	9732
query75	2910	2786	2493	2493
query76	2291	1040	688	688
query77	366	387	318	318
query78	11356	11560	10843	10843
query79	1120	803	609	609
query80	837	646	572	572
query81	519	283	242	242
query82	1354	150	123	123
query83	345	280	256	256
query84	284	127	104	104
query85	966	578	544	544
query86	393	357	324	324
query87	3118	3111	2995	2995
query88	3529	2672	2627	2627
query89	426	373	354	354
query90	1883	171	170	170
query91	165	160	137	137
query92	88	78	71	71
query93	907	832	522	522
query94	507	305	299	299
query95	595	397	314	314
query96	626	516	233	233
query97	2458	2483	2413	2413
query98	230	218	216	216
query99	1005	1001	932	932
Total cold run time: 231518 ms
Total hot run time: 151878 ms

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 85.01% (346/407) 🎉
Increment coverage report
Complete coverage report

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 27964 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 815e7f63c43ab140512d7107ec30294948aed3a1, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17611	4556	4336	4336
q2	q3	10645	781	526	526
q4	4681	364	256	256
q5	7581	1215	1030	1030
q6	186	180	153	153
q7	802	857	675	675
q8	9294	1506	1323	1323
q9	4922	4791	4757	4757
q10	6247	1896	1676	1676
q11	477	290	242	242
q12	715	581	478	478
q13	18034	2904	2183	2183
q14	232	236	233	233
q15	896	795	806	795
q16	728	727	675	675
q17	714	867	406	406
q18	5917	5467	5335	5335
q19	1258	990	610	610
q20	528	496	395	395
q21	4730	2213	1600	1600
q22	381	334	280	280
Total cold run time: 96579 ms
Total hot run time: 27964 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4812	4581	4584	4581
q2	q3	3858	4312	3865	3865
q4	888	1222	776	776
q5	4101	4354	4324	4324
q6	194	192	142	142
q7	1776	1691	1576	1576
q8	2509	2734	2626	2626
q9	7479	7446	7470	7446
q10	3705	3948	3574	3574
q11	551	444	424	424
q12	494	602	445	445
q13	2803	3313	2303	2303
q14	295	310	274	274
q15	863	822	814	814
q16	703	751	717	717
q17	1226	1389	1291	1291
q18	7148	6878	6555	6555
q19	878	962	964	962
q20	2108	2201	2135	2135
q21	3928	3463	3354	3354
q22	453	432	382	382
Total cold run time: 50772 ms
Total hot run time: 48566 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 151477 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 815e7f63c43ab140512d7107ec30294948aed3a1, data reload: false

query5	4327	644	521	521
query6	343	260	209	209
query7	4212	458	283	283
query8	347	254	242	242
query9	8669	2756	2768	2756
query10	545	392	357	357
query11	7346	5780	5480	5480
query12	179	136	129	129
query13	1273	453	352	352
query14	6367	3858	3616	3616
query14_1	2873	2822	2843	2822
query15	208	190	179	179
query16	1005	513	464	464
query17	1149	743	642	642
query18	2724	460	367	367
query19	223	215	187	187
query20	133	129	126	126
query21	230	149	127	127
query22	4788	4854	4621	4621
query23	15332	14631	14498	14498
query23_1	14607	15421	15281	15281
query24	7801	1697	1303	1303
query24_1	1311	1304	1306	1304
query25	651	548	544	544
query26	1569	291	169	169
query27	2778	504	333	333
query28	4739	1902	1897	1897
query29	877	625	562	562
query30	317	243	202	202
query31	1362	1286	1226	1226
query32	87	70	76	70
query33	510	318	282	282
query34	936	922	568	568
query35	638	691	601	601
query36	1059	1104	930	930
query37	134	95	77	77
query38	2947	2955	2884	2884
query39	995	868	834	834
query39_1	822	819	801	801
query40	233	156	135	135
query41	62	60	57	57
query42	307	308	309	308
query43	246	247	231	231
query44	
query45	204	186	187	186
query46	887	994	624	624
query47	2082	2111	2040	2040
query48	309	312	235	235
query49	633	468	390	390
query50	678	301	208	208
query51	4056	4104	4066	4066
query52	285	289	284	284
query53	299	352	284	284
query54	298	274	293	274
query55	94	87	80	80
query56	321	322	313	313
query57	1348	1317	1289	1289
query58	294	289	279	279
query59	1339	1458	1289	1289
query60	356	348	320	320
query61	158	148	151	148
query62	633	597	521	521
query63	311	275	280	275
query64	4995	1312	1015	1015
query65	
query66	1382	458	375	375
query67	16409	16409	16311	16311
query68	
query69	390	318	297	297
query70	1024	994	989	989
query71	341	307	293	293
query72	2958	2749	2512	2512
query73	539	545	327	327
query74	9986	9837	9633	9633
query75	2858	2765	2496	2496
query76	2297	1062	685	685
query77	369	369	300	300
query78	11099	11334	10624	10624
query79	1860	790	615	615
query80	1424	646	558	558
query81	568	280	237	237
query82	999	156	120	120
query83	333	278	244	244
query84	258	126	104	104
query85	922	519	474	474
query86	438	312	299	299
query87	3213	3104	3000	3000
query88	3622	2694	2675	2675
query89	432	374	347	347
query90	2038	186	191	186
query91	181	162	145	145
query92	80	74	70	70
query93	1066	843	509	509
query94	649	334	315	315
query95	588	413	333	333
query96	638	510	231	231
query97	2451	2450	2398	2398
query98	234	214	213	213
query99	1004	987	876	876
Total cold run time: 234086 ms
Total hot run time: 151477 ms

This pr add variable choose_one_agg_shuffle_key, default value if false,
"set choose_one_agg_shuffle_key=true;" can make agg choose 1 key with
highest ndv to shuffle.

add

change visitPhysicalHashJoin in RequestPropertyDeriver

add in requestPropertyDeriver

add choose one partition key when specify partitionExpressions

unify choosing

support when parent request hash

add

fix

fix

remove 2+2 special logic

fix order of partitionExprs that lead to physicalProperties(GATHER) doesn't exist in root group

add test

[enhance](memo)improve memo print

add test

add test

add join agg test

fix style

fix ut

remove emoji

turn on CHOOSE_ONE_AGG_SHUFFLE_KEY default

repeat is allowed

fix test

fix

make ut work

fix

add ut

add result test

add ut

add ut

make memo print work better

fix

make 512 multiplier

fix

fix

fix

use new strategy
@feiniaofeiafei
Copy link
Contributor Author

run buildall

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 27716 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit aa6a62f8b55e324fa19f87a3a21a3b67b2e6bb8c, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17629	4488	4306	4306
q2	q3	10652	792	518	518
q4	4682	366	266	266
q5	7564	1231	1018	1018
q6	173	176	145	145
q7	796	860	651	651
q8	9297	1472	1347	1347
q9	4777	4749	4608	4608
q10	6247	1888	1681	1681
q11	455	268	238	238
q12	690	563	471	471
q13	18029	2908	2210	2210
q14	235	237	213	213
q15	932	790	797	790
q16	748	710	654	654
q17	708	851	416	416
q18	5986	5366	5329	5329
q19	1253	1036	663	663
q20	503	507	397	397
q21	4726	2169	1514	1514
q22	442	339	281	281
Total cold run time: 96524 ms
Total hot run time: 27716 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4665	4476	4507	4476
q2	q3	3882	4362	3838	3838
q4	910	1219	755	755
q5	4076	4417	4368	4368
q6	180	176	142	142
q7	1805	1633	1570	1570
q8	2494	2791	2621	2621
q9	7454	7660	7333	7333
q10	3769	3971	3563	3563
q11	515	423	448	423
q12	526	647	451	451
q13	2671	3161	2342	2342
q14	288	309	297	297
q15	869	829	787	787
q16	750	756	731	731
q17	1125	1390	1291	1291
q18	7202	6886	6663	6663
q19	912	909	968	909
q20	2168	2137	2037	2037
q21	4080	3475	3251	3251
q22	451	423	397	397
Total cold run time: 50792 ms
Total hot run time: 48245 ms

@doris-robot
Copy link

TPC-H: Total hot run time: 27696 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit c45ad78a9e0317495c02e0eb27cfbe495176da6d, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17619	4545	4315	4315
q2	q3	10636	781	515	515
q4	4683	372	258	258
q5	7556	1217	1033	1033
q6	174	174	153	153
q7	810	847	683	683
q8	9302	1506	1318	1318
q9	4816	4761	4720	4720
q10	6250	1874	1685	1685
q11	469	255	245	245
q12	693	563	467	467
q13	18020	2898	2154	2154
q14	240	242	226	226
q15	915	806	805	805
q16	718	736	674	674
q17	707	835	412	412
q18	5873	5352	5251	5251
q19	1229	976	598	598
q20	505	486	386	386
q21	4633	2109	1523	1523
q22	404	331	275	275
Total cold run time: 96252 ms
Total hot run time: 27696 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4715	4464	4489	4464
q2	q3	3870	4373	3848	3848
q4	880	1196	774	774
q5	4068	4411	4367	4367
q6	183	190	143	143
q7	1791	1666	1512	1512
q8	2443	2874	2559	2559
q9	7591	7200	7481	7200
q10	3745	3990	3597	3597
q11	487	454	417	417
q12	467	587	442	442
q13	2678	3213	2335	2335
q14	282	338	277	277
q15	843	797	797	797
q16	723	813	712	712
q17	1128	1377	1329	1329
q18	7059	6730	6772	6730
q19	857	868	888	868
q20	2049	2176	2022	2022
q21	3961	3445	3277	3277
q22	473	428	370	370
Total cold run time: 50293 ms
Total hot run time: 48040 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 151213 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit c45ad78a9e0317495c02e0eb27cfbe495176da6d, data reload: false

query5	4330	626	515	515
query6	334	267	244	244
query7	4230	487	278	278
query8	339	250	245	245
query9	8716	2733	2720	2720
query10	523	379	353	353
query11	7268	5747	5544	5544
query12	180	143	130	130
query13	1264	464	366	366
query14	5780	3824	3595	3595
query14_1	2818	2825	2767	2767
query15	206	194	182	182
query16	1025	486	470	470
query17	1142	753	645	645
query18	2463	457	359	359
query19	218	220	186	186
query20	130	125	127	125
query21	226	147	126	126
query22	5078	4955	4921	4921
query23	15173	14707	14466	14466
query23_1	14485	15662	15177	15177
query24	7754	1755	1366	1366
query24_1	1331	1279	1302	1279
query25	649	558	513	513
query26	1282	299	179	179
query27	2978	501	299	299
query28	4895	1928	1842	1842
query29	873	595	489	489
query30	297	232	203	203
query31	1391	1283	1225	1225
query32	81	73	70	70
query33	506	346	285	285
query34	929	935	563	563
query35	636	679	591	591
query36	1101	1150	955	955
query37	129	96	85	85
query38	2973	2930	2829	2829
query39	865	850	874	850
query39_1	821	815	798	798
query40	232	149	135	135
query41	63	58	57	57
query42	307	301	300	300
query43	252	257	228	228
query44	
query45	202	187	184	184
query46	883	1000	606	606
query47	2129	2126	2040	2040
query48	325	319	222	222
query49	617	464	377	377
query50	688	286	214	214
query51	4096	4101	4037	4037
query52	293	286	278	278
query53	292	327	278	278
query54	286	266	258	258
query55	90	84	80	80
query56	306	307	308	307
query57	1364	1341	1283	1283
query58	294	279	272	272
query59	1310	1403	1299	1299
query60	347	328	342	328
query61	153	159	151	151
query62	625	587	518	518
query63	311	274	275	274
query64	5167	1334	1015	1015
query65	
query66	1453	468	344	344
query67	16473	16341	16204	16204
query68	
query69	383	302	287	287
query70	991	969	921	921
query71	340	312	292	292
query72	2922	2773	2527	2527
query73	534	552	320	320
query74	9862	9827	9656	9656
query75	2827	2750	2453	2453
query76	2285	1027	692	692
query77	363	398	311	311
query78	11165	11331	10588	10588
query79	2425	804	609	609
query80	1783	630	567	567
query81	565	265	237	237
query82	996	152	119	119
query83	372	269	246	246
query84	256	115	107	107
query85	1017	533	476	476
query86	434	315	298	298
query87	3186	3085	2989	2989
query88	3561	2739	2730	2730
query89	439	383	350	350
query90	2878	180	176	176
query91	187	167	139	139
query92	74	74	69	69
query93	1278	916	532	532
query94	663	340	301	301
query95	594	403	337	337
query96	674	535	238	238
query97	2547	2506	2450	2450
query98	231	218	209	209
query99	1061	1010	935	935
Total cold run time: 235752 ms
Total hot run time: 151213 ms

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 69.14% (336/486) 🎉
Increment coverage report
Complete coverage report

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants