From bfab7a2537c2ace6ad21cf4c31694ae19c8a6a76 Mon Sep 17 00:00:00 2001 From: Kaijie Chen Date: Sat, 15 Jun 2024 23:06:00 +0800 Subject: [PATCH] [fix](shuffle) fix tablets num calculation in shuffle condition (#36050) (#36339) cherry-pick #36050 --- .../trees/plans/physical/PhysicalOlapTableSink.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapTableSink.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapTableSink.java index fee098ce16..dbe02884db 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapTableSink.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapTableSink.java @@ -202,9 +202,12 @@ public class PhysicalOlapTableSink extends PhysicalTabl DistributionInfo distributionInfo = targetTable.getDefaultDistributionInfo(); if (distributionInfo instanceof HashDistributionInfo) { // Do not enable shuffle for duplicate key tables when its tablet num is less than threshold. - if (targetTable.getKeysType() == KeysType.DUP_KEYS - && distributionInfo.getBucketNum() < Config.min_tablets_for_dup_table_shuffle) { - return PhysicalProperties.ANY; + if (targetTable.getKeysType() == KeysType.DUP_KEYS) { + final long partitionNums = targetTable.getPartitionInfo().getAllPartitions().size(); + final long tabletNums = partitionNums * distributionInfo.getBucketNum(); + if (tabletNums < Config.min_tablets_for_dup_table_shuffle) { + return PhysicalProperties.ANY; + } } return PhysicalProperties.TABLET_ID_SHUFFLE; } else if (distributionInfo instanceof RandomDistributionInfo) {