Skip to content

Commit

Permalink
Merge pull request #57795 from CurtizJ/fix-totals-maxMap
Browse files Browse the repository at this point in the history
Fix merge in aggregation functions with `*Map` combinator
  • Loading branch information
robot-ch-test-poll1 committed Dec 13, 2023
2 parents 6abe4b1 + e4e9747 commit c2f32f5
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 82 deletions.
11 changes: 10 additions & 1 deletion src/AggregateFunctions/AggregateFunctionSumMap.cpp
Expand Up @@ -254,11 +254,20 @@ class AggregateFunctionMapBase : public IAggregateFunctionDataHelper<
if (it != merged_maps.end())
{
for (size_t col = 0; col < values_types.size(); ++col)
{
if (!elem.second[col].isNull())
applyVisitor(Visitor(elem.second[col]), it->second[col]);
{
if (it->second[col].isNull())
it->second[col] = elem.second[col];
else
applyVisitor(Visitor(elem.second[col]), it->second[col]);
}
}
}
else
{
merged_maps[elem.first] = elem.second;
}
}
}

Expand Down
108 changes: 54 additions & 54 deletions tests/queries/0_stateless/02480_max_map_null_totals.reference
@@ -1,119 +1,119 @@
([-1,0],[0,0])
([1,2],[0,2])
([0,1],[0,1])
([1,2],[0,2])

([-1,0,1,2],[0,0,0,2])
([-1,0,1,2],[0,0,1,2])
([-1,0],[0,0])
([1,2],[0,2])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([-1,0],[0,0])
([1,2],[0,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([-1,0],[0,0])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([1,2],[0,2])
([-1,0],[0,0])
([0,1],[0,1])
([1,2],[0,2])

([-1,0,1,2],[0,0,0,2])
([-1,0,1,2],[0,0,1,2])
([-1,0],[0,0])
([1,2],[0,2])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([-1,0],[0,0])
([1,2],[0,2])
([-1,0],[0,0])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([1,2],[0,2])
([0],[0])
([2],[2])
([1],[1])
([2],[2])

([0,2],[0,2])
([0,1,2],[0,1,2])
([0],[0])
([2],[2])
([0,1,2],[0,1,2])
([1],[1])
([0,2],[0,2])
([0],[0])
([2],[2])
([0],[0])
([0,1,2],[0,1,2])
([1],[1])
([0,2],[0,2])
([2],[2])
-
([-1,0],[0,0])
([1,2],[0,2])
([0,1],[0,1])
([1,2],[0,2])

([-1,0,1,2],[0,0,0,2])
([-1,0,1,2],[0,0,1,2])
([-1,0],[0,0])
([1,2],[0,2])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([-1,0],[0,0])
([1,2],[0,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([-1,0],[0,0])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([1,2],[0,2])
([-1,0],[0,0])
([0,1],[0,1])
([1,2],[0,2])

([-1,0,1,2],[0,0,0,2])
([-1,0,1,2],[0,0,1,2])
([-1,0],[0,0])
([1,2],[0,2])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([-1,0],[0,0])
([1,2],[0,2])
([-1,0],[0,0])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([1,2],[0,2])
([0],[0])
([2],[2])
([1],[1])
([2],[2])

([0,2],[0,2])
([0,1,2],[0,1,2])
([0],[0])
([2],[2])
([0,1,2],[0,1,2])
([1],[1])
([0,2],[0,2])
([0],[0])
([2],[2])
([0],[0])
([0,1,2],[0,1,2])
([1],[1])
([0,2],[0,2])
([2],[2])
-
([-1,0],[0,0])
([1,2],[0,2])
([0,1],[0,1])
([1,2],[0,2])

([-1,0,1,2],[0,0,0,2])
([-1,0,1,2],[0,0,1,2])
([-1,0],[0,0])
([1,2],[0,2])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([-1,0],[0,0])
([1,2],[0,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([-1,0],[0,0])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([1,2],[0,2])
([-1,0],[0,0])
([0,1],[0,1])
([1,2],[0,2])

([-1,0,1,2],[0,0,0,2])
([-1,0,1,2],[0,0,1,2])
([-1,0],[0,0])
([1,2],[0,2])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([-1,0],[0,0])
([1,2],[0,2])
([-1,0],[0,0])
([-1,0,1,2],[0,0,1,2])
([0,1],[0,1])
([-1,0,1,2],[0,0,0,2])
([1,2],[0,2])
([0],[0])
([2],[2])
([1],[1])
([2],[2])

([0,2],[0,2])
([0,1,2],[0,1,2])
([0],[0])
([2],[2])
([0,1,2],[0,1,2])
([1],[1])
([0,2],[0,2])
([0],[0])
([2],[2])
([0],[0])
([0,1,2],[0,1,2])
([1],[1])
([0,2],[0,2])
([2],[2])
54 changes: 27 additions & 27 deletions tests/queries/0_stateless/02480_max_map_null_totals.sql
@@ -1,39 +1,39 @@
SELECT maxMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS;
SELECT maxMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP;
SELECT maxMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH CUBE;
SELECT maxMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS ORDER BY number;
SELECT maxMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP ORDER BY number;
SELECT maxMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH CUBE ORDER BY number;

SELECT minMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS;
SELECT minMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP;
SELECT minMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH CUBE;
SELECT minMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS ORDER BY number;
SELECT minMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP ORDER BY number;
SELECT minMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH CUBE ORDER BY number;

SELECT sumMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS;
SELECT sumMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP;
SELECT sumMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH CUBE;
SELECT sumMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS ORDER BY number;
SELECT sumMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP ORDER BY number;
SELECT sumMap([number % 3, number % 4 - 1], [number, NULL]) FROM numbers(3) GROUP BY number WITH CUBE ORDER BY number;

SELECT '-';

SELECT maxMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS;
SELECT maxMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP;
SELECT maxMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH CUBE;
SELECT maxMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS ORDER BY number;
SELECT maxMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP ORDER BY number;
SELECT maxMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH CUBE ORDER BY number;

SELECT minMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS;
SELECT minMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP;
SELECT minMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH CUBE;
SELECT minMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS ORDER BY number;
SELECT minMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP ORDER BY number;
SELECT minMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH CUBE ORDER BY number;

SELECT sumMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS;
SELECT sumMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP;
SELECT sumMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH CUBE;
SELECT sumMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS ORDER BY number;
SELECT sumMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP ORDER BY number;
SELECT sumMap([number % 3, number % 4 - 1], [number :: Float64, NULL]) FROM numbers(3) GROUP BY number WITH CUBE ORDER BY number;

SELECT '-';

SELECT maxMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS;
SELECT maxMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP;
SELECT maxMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH CUBE;
SELECT maxMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS ORDER BY number;
SELECT maxMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP ORDER BY number;
SELECT maxMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH CUBE ORDER BY number;

SELECT minMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS;
SELECT minMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP;
SELECT minMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH CUBE;
SELECT minMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS ORDER BY number;
SELECT minMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP ORDER BY number;
SELECT minMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH CUBE ORDER BY number;

SELECT sumMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS;
SELECT sumMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP;
SELECT sumMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH CUBE;
SELECT sumMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH TOTALS ORDER BY number;
SELECT sumMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH ROLLUP ORDER BY number;
SELECT sumMap([number % 3, number % 4 - 1], [number :: UInt256, NULL]) FROM numbers(3) GROUP BY number WITH CUBE ORDER BY number;

0 comments on commit c2f32f5

Please sign in to comment.