This is an automated email from the ASF dual-hosted git repository.
cambyzju pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new e2350403a60 [fix](plan) fix wrong result for random distributed agg
table with all keys not null (#36271)
e2350403a60 is described below
commit e2350403a60beff25db059a73bd857b757d985a5
Author: camby <[email protected]>
AuthorDate: Tue Jun 18 11:25:31 2024 +0800
[fix](plan) fix wrong result for random distributed agg table with all keys
not null (#36271)
---
.../java/org/apache/doris/catalog/OlapTable.java | 4 +++
.../plans/logical/LogicalCatalogRelation.java | 23 +++++++++--------
.../aggregate/select_random_distributed_tbl.out | 12 +++++++++
.../aggregate/select_random_distributed_tbl.groovy | 29 +++++++++++++++++++++-
4 files changed, 57 insertions(+), 11 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
index d901d2340fb..fa6425c72af 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -868,6 +868,10 @@ public class OlapTable extends Table implements
MTMVRelatedTableIf {
return distributionColumnNames;
}
+ public boolean isRandomDistribution() {
+ return defaultDistributionInfo instanceof RandomDistributionInfo;
+ }
+
public void renamePartition(String partitionName, String newPartitionName)
{
if (partitionInfo.getType() == PartitionType.UNPARTITIONED) {
// bug fix
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCatalogRelation.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCatalogRelation.java
index 277695be079..4d8fba447b3 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCatalogRelation.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCatalogRelation.java
@@ -137,18 +137,21 @@ public abstract class LogicalCatalogRelation extends
LogicalRelation implements
@Override
public void computeUnique(FunctionalDependencies.Builder fdBuilder) {
Set<Slot> outputSet = Utils.fastToImmutableSet(getOutputSet());
- if (table instanceof OlapTable && ((OlapTable)
table).getKeysType().isAggregationFamily()) {
- ImmutableSet.Builder<Slot> uniqSlots =
ImmutableSet.builderWithExpectedSize(outputSet.size());
- for (Slot slot : outputSet) {
- if (!(slot instanceof SlotReference)) {
- continue;
- }
- SlotReference slotRef = (SlotReference) slot;
- if (slotRef.getColumn().isPresent() &&
slotRef.getColumn().get().isKey()) {
- uniqSlots.add(slot);
+ if (table instanceof OlapTable) {
+ OlapTable olapTable = (OlapTable) table;
+ if (olapTable.getKeysType().isAggregationFamily() &&
!olapTable.isRandomDistribution()) {
+ ImmutableSet.Builder<Slot> uniqSlots =
ImmutableSet.builderWithExpectedSize(outputSet.size());
+ for (Slot slot : outputSet) {
+ if (!(slot instanceof SlotReference)) {
+ continue;
+ }
+ SlotReference slotRef = (SlotReference) slot;
+ if (slotRef.getColumn().isPresent() &&
slotRef.getColumn().get().isKey()) {
+ uniqSlots.add(slot);
+ }
}
+ fdBuilder.addUniqueSlot(uniqSlots.build());
}
- fdBuilder.addUniqueSlot(uniqSlots.build());
}
for (PrimaryKeyConstraint c : table.getPrimaryKeyConstraints()) {
diff --git
a/regression-test/data/query_p0/aggregate/select_random_distributed_tbl.out
b/regression-test/data/query_p0/aggregate/select_random_distributed_tbl.out
index 1afb2a06762..c03e72c8f9e 100644
--- a/regression-test/data/query_p0/aggregate/select_random_distributed_tbl.out
+++ b/regression-test/data/query_p0/aggregate/select_random_distributed_tbl.out
@@ -215,3 +215,15 @@
-- !sql_16 --
2
+-- !sql_17 --
+1
+
+-- !sql_18 --
+1
+
+-- !sql_19 --
+1
+
+-- !sql_20 --
+1
+
diff --git
a/regression-test/suites/query_p0/aggregate/select_random_distributed_tbl.groovy
b/regression-test/suites/query_p0/aggregate/select_random_distributed_tbl.groovy
index ff0df74589a..439559aa5e0 100644
---
a/regression-test/suites/query_p0/aggregate/select_random_distributed_tbl.groovy
+++
b/regression-test/suites/query_p0/aggregate/select_random_distributed_tbl.groovy
@@ -131,4 +131,31 @@ suite("select_random_distributed_tbl") {
}
sql "drop table ${tableName};"
-}
\ No newline at end of file
+
+ // test all keys are NOT NULL for AGG table
+ sql "drop table if exists random_distributed_tbl_test_2;"
+ sql """ CREATE TABLE random_distributed_tbl_test_2 (
+ `k1` LARGEINT NOT NULL
+ ) ENGINE=OLAP
+ AGGREGATE KEY(`k1`)
+ COMMENT 'OLAP'
+ DISTRIBUTED BY RANDOM BUCKETS 10
+ PROPERTIES (
+ "replication_num" = "1"
+ );
+ """
+
+ sql """ insert into random_distributed_tbl_test_2 values(1); """
+ sql """ insert into random_distributed_tbl_test_2 values(1); """
+ sql """ insert into random_distributed_tbl_test_2 values(1); """
+
+ sql "set enable_nereids_planner = false;"
+ qt_sql_17 "select k1 from random_distributed_tbl_test_2;"
+ qt_sql_18 "select distinct k1 from random_distributed_tbl_test_2;"
+
+ sql "set enable_nereids_planner = true;"
+ qt_sql_19 "select k1 from random_distributed_tbl_test_2;"
+ qt_sql_20 "select distinct k1 from random_distributed_tbl_test_2;"
+
+ sql "drop table random_distributed_tbl_test_2;"
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]