blob: 8a0379bd8ed1dca997cee30658247dddbce5eb59 [file] [log] [blame]
# description: Tests for printout of various aggregation operators.
# Plan around these operators may change in whatever way,
# the only thing that must be held is an invariant described
# in comments to every test case.
# group: [explain]
# simple group colocated hash aggregate
explain plan
SELECT sum(c2)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY c1;
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=20)
ColocatedHashAggregate
fieldNames: [C1, EXPR$0]
group: [C1]
aggregation: [SUM(C2)]
est: (rows=20)
Project
fieldNames: [C1, C2]
projection: [X, X]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)
# simple group colocated sort aggregate
explain plan
SELECT /*+ DISABLE_RULE('ColocatedHashAggregateConverterRule',
'MapReduceHashAggregateConverterRule') */ sum(c2)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY c1;
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=20)
ColocatedSortAggregate
fieldNames: [C1, EXPR$0]
collation: [C1 ASC]
group: [C1]
aggregation: [SUM(C2)]
est: (rows=20)
Project
fieldNames: [C1, C2]
projection: [X, X]
est: (rows=100)
Sort
collation: [X ASC]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)
# simple group map-reduce hash aggregate
explain plan
SELECT /*+ DISABLE_RULE('ColocatedHashAggregateConverterRule') */ sum(c2)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY c1;
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=20)
ReduceHashAggregate
fieldNames: [C1, EXPR$0]
group: [C1]
aggregation: [SUM(_ACC0)]
est: (rows=20)
MapHashAggregate
fieldNames: [C1, _ACC0, _GROUP_ID]
group: [C1]
aggregation: [SUM(C2)]
est: (rows=20)
Project
fieldNames: [C1, C2]
projection: [X, X]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)
# simple group map-reduce sort aggregate
explain plan
SELECT /*+ DISABLE_RULE('ColocatedHashAggregateConverterRule',
'ColocatedHashAggregateConverterRule',
'ColocatedSortAggregateConverterRule',
'MapReduceHashAggregateConverterRule') */ sum(c2)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY c1;
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=20)
ReduceSortAggregate
fieldNames: [C1, EXPR$0]
collation: [C1 ASC]
group: [C1]
aggregation: [SUM(_ACC0)]
est: (rows=20)
MapSortAggregate
fieldNames: [C1, _ACC0]
collation: [C1 ASC]
group: [C1]
aggregation: [SUM(C2)]
est: (rows=20)
Project
fieldNames: [C1, C2]
projection: [X, X]
est: (rows=100)
Sort
collation: [X ASC]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)
# aggregation by group set colocated hash aggregate
explain plan
SELECT sum(c2)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY ROLLUP (c1, c3);
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=36)
ColocatedHashAggregate
fieldNames: [C1, C3, EXPR$0]
group: [C1, C3]
groupSets: [[C1, C3], [C1], []]
aggregation: [SUM(C2)]
est: (rows=36)
Project
fieldNames: [C1, C3, C2]
projection: [X, X, X]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)
# aggregation by group set map-reduce hash aggregate
explain plan
SELECT /*+ DISABLE_RULE('ColocatedHashAggregateConverterRule') */ sum(c2)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY ROLLUP (c1, c3);
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=36)
ReduceHashAggregate
fieldNames: [C1, C3, EXPR$0]
group: [C1, C3]
groupSets: [[C1, C3], [C1], []]
aggregation: [SUM(_ACC0)]
est: (rows=36)
MapHashAggregate
fieldNames: [C1, C3, _ACC0, _GROUP_ID]
group: [C1, C3]
groupSets: [[C1, C3], [C1], []]
aggregation: [SUM(C2)]
est: (rows=36)
Project
fieldNames: [C1, C3, C2]
projection: [X, X, X]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)
# distinct aggregate
explain plan
SELECT sum(DISTINCT c2)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY c1;
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=20)
ColocatedHashAggregate
fieldNames: [C1, EXPR$0]
group: [C1]
aggregation: [SUM(DISTINCT C2)]
est: (rows=20)
Project
fieldNames: [C1, C2]
projection: [X, X]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)
# aggregate within distinct
explain plan
SELECT sum(c2) WITHIN DISTINCT (c2 / 2)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY c1;
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=20)
ColocatedHashAggregate
fieldNames: [C1, EXPR$0]
group: [C1]
aggregation: [SUM(C2) WITHIN DISTINCT ($f2)]
est: (rows=20)
Project
fieldNames: [C1, C2, $f2]
projection: [X, X, /(X, 2)]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)
# aggregate with additional filtration
explain plan
SELECT sum(c2) FILTER (WHERE c2 % 2 = 1)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY c1;
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=20)
ColocatedHashAggregate
fieldNames: [C1, EXPR$0]
group: [C1]
aggregation: [SUM(C2) FILTER $f2]
est: (rows=20)
Project
fieldNames: [C1, C2, $f2]
projection: [X, X, =(MOD(X, 2), 1)]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)
# aggregate with all modification
explain plan
SELECT count(DISTINCT c2) WITHIN DISTINCT (c2 / 2) FILTER (WHERE c2 % 2 = 1)
FROM (SELECT x AS c1, x AS c2, x AS c3 FROM system_range(1, 10))
GROUP BY c1;
----
Project
fieldNames: [EXPR$0]
projection: [EXPR$0]
est: (rows=20)
ColocatedHashAggregate
fieldNames: [C1, EXPR$0]
group: [C1]
aggregation: [COUNT(DISTINCT C2) WITHIN DISTINCT ($f3) FILTER $f2]
est: (rows=20)
Project
fieldNames: [C1, C2, $f2, $f3]
projection: [X, X, =(MOD(X, 2), 1), /(X, 2)]
est: (rows=100)
TableFunctionScan
fieldNames: [X]
invocation: SYSTEM_RANGE(1, 10)
est: (rows=100)