diff options
author | Tomas Vondra | 2017-07-30 18:41:44 +0000 |
---|---|---|
committer | Tomas Vondra | 2017-07-31 01:21:42 +0000 |
commit | fc3148e7e327b8c7c5da4c9a5816e8c61061e970 (patch) | |
tree | 7e4b914e598ab2cf0e3ea173e2b45fb2dc7e8382 /doc | |
parent | b0ef8d636450ec47a8a546126e6602e03c9bae3f (diff) |
Accept aggregation plan changes in xc_remote tests
The plans changed mainly due to abandoning the custom implementation
two-phase aggregation code, and using the upstream parallel aggregation.
That means we have stopped showing schema name in target lists, so
instead of
Output: pg_catalog.avg((avg(xcrem_employee.salary)))
the EXPLAIN now shows
Output: avg(xcrem_employee.salary)
and we also do projection at the scan nodes, so the target list only
shows the necessary subset of columns.
A somewhat surprising change is that the plans switch from distributed
aggregate plans like this one
-> Aggregate
-> Remote Subquery Scan
-> Aggregate
-> Seq Scan
to always performing simple (non-distributed) aggregate like this
-> Aggregate
-> Remote Subquery Scan
-> Seq Scan
This happens due to create_grouping_paths() relying on consider_parallel
flag when setting try_distributed_aggregate, disabling distributed
aggregation when consider_parallel=false. Both affected plans are however
for UPDATE queries, and PostgreSQL disables parallelism for queries that
do writes, so we end up with try_distributed_aggregate=false.
We should probably enable distributed aggregates in these cases, but we
can't ignore consider_parallel entirely, as we likely need some of the
checks. We will probably end up with consider_distributed flag, set in
a similar way to consider_parallel, but that's more an enhancement than
a bug fix.
Diffstat (limited to 'doc')
0 files changed, 0 insertions, 0 deletions