This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 669244773d2 [fix](agg) wrong result of two or more map_agg functions
in query (#31928)
669244773d2 is described below
commit 669244773d2234b7db58ce930ff1957f75631e25
Author: Jerry Hu <[email protected]>
AuthorDate: Thu Mar 7 23:58:40 2024 +0800
[fix](agg) wrong result of two or more map_agg functions in query (#31928)
---
.../aggregate_functions/aggregate_function_map.h | 4 +-
.../data/query_p0/aggregate/map_agg.out | 3 ++
.../suites/query_p0/aggregate/map_agg.groovy | 45 +++++++++++++++++++++-
3 files changed, 49 insertions(+), 3 deletions(-)
diff --git a/be/src/vec/aggregate_functions/aggregate_function_map.h
b/be/src/vec/aggregate_functions/aggregate_function_map.h
index e0a19a34207..c76f3ee7f7e 100644
--- a/be/src/vec/aggregate_functions/aggregate_function_map.h
+++ b/be/src/vec/aggregate_functions/aggregate_function_map.h
@@ -278,7 +278,7 @@ public:
auto& col = assert_cast<const ColumnMap&>(*assert_cast<const
IColumn*>(column));
for (size_t i = 0; i != num_rows; ++i) {
auto map = doris::vectorized::get<Map>(col[i]);
- this->data(places[i]).add(map[0], map[1]);
+ this->data(places[i] + offset).add(map[0], map[1]);
}
}
@@ -289,7 +289,7 @@ public:
for (size_t i = 0; i != num_rows; ++i) {
if (places[i]) {
auto map = doris::vectorized::get<Map>(col[i]);
- this->data(places[i]).add(map[0], map[1]);
+ this->data(places[i] + offset).add(map[0], map[1]);
}
}
}
diff --git a/regression-test/data/query_p0/aggregate/map_agg.out
b/regression-test/data/query_p0/aggregate/map_agg.out
index 1b349f50a8e..c7db1dcaeae 100644
--- a/regression-test/data/query_p0/aggregate/map_agg.out
+++ b/regression-test/data/query_p0/aggregate/map_agg.out
@@ -40,3 +40,6 @@ V5_3
002 88.0 90.0 75.5 \N
003 70.0 85.0 90.0 82.0
+-- !multi --
+1 2
+
diff --git a/regression-test/suites/query_p0/aggregate/map_agg.groovy
b/regression-test/suites/query_p0/aggregate/map_agg.groovy
index 7ca0c543345..351c077df10 100644
--- a/regression-test/suites/query_p0/aggregate/map_agg.groovy
+++ b/regression-test/suites/query_p0/aggregate/map_agg.groovy
@@ -63,7 +63,7 @@ suite("map_agg") {
) ENGINE=OLAP
DUPLICATE KEY(`id`)
COMMENT 'OLAP'
- DISTRIBUTED BY HASH(`id`) BUCKETS 2
+ DISTRIBUTED BY HASH(`id`) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"storage_format" = "V2",
@@ -279,4 +279,47 @@ suite("map_agg") {
select userid, map_agg(subject,score) as map from
test_map_agg_score group by userid
) a order by userid;
"""
+
+ sql "DROP TABLE IF EXISTS test_map_agg_multi;"
+ sql """
+ create table test_map_agg_multi (
+ data_time bigint,
+ mil int,
+ vin string,
+ car_type string,
+ month string,
+ day string
+ ) engine=olap
+ distributed by hash(data_time) buckets 10
+ properties("replication_num" = "1");
+ """
+ sql """
+ insert into test_map_agg_multi values (1, 1, 'abc', 'bc', '01', '01'),
(2, 2, 'abc', 'bc', '01', '01');
+ """
+
+ qt_multi """
+ select
+ m1['1']
+ , m2['2']
+ from (
+ select
+ vin
+ , car_type
+ , map_agg(ts, mile) m1
+ , map_agg(mile, ts) m2
+ from (
+ select
+ vin
+ , car_type
+ , data_time as ts
+ , mil as mile, month
+ , day from test_map_agg_multi
+ )a
+ group by
+ car_type
+ , vin
+ , month
+ , day
+ ) t order by 1, 2;
+ """
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]