Move per-agg and per-trans duplicate finding to the planner.

Heikki Linnakangas <heikki.linnakangas@iki.fi>

Commit: 0a2bc5d61e713e3fe72438f020eea5fcc90b0f0b
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2020-11-24T08:45:00Z
Releases: 14.0
Move per-agg and per-trans duplicate finding to the planner.

This has the advantage that the cost estimates for aggregates can count
the number of calls to transition and final functions correctly.

Bump catalog version, because views can contain Aggrefs.

Reviewed-by: Andres Freund
Discussion: https://www.postgresql.org/message-id/b2e3536b-1dbc-8303-c97e-89cb0b4a9a48%40iki.fi

Files

PathChange+/−
contrib/postgres_fdw/postgres_fdw.c modified +2 −10
src/backend/executor/execExpr.c modified +3 −7
src/backend/executor/execExprInterp.c modified +3 −3
src/backend/executor/nodeAgg.c modified +77 −287
src/backend/jit/llvm/llvmjit_expr.c modified +1 −10
src/backend/nodes/copyfuncs.c modified +2 −0
src/backend/nodes/equalfuncs.c modified +2 −0
src/backend/nodes/outfuncs.c modified +2 −0
src/backend/nodes/readfuncs.c modified +2 −0
src/backend/optimizer/path/costsize.c modified +2 −1
src/backend/optimizer/plan/planagg.c modified +23 −46
src/backend/optimizer/plan/planner.c modified +25 −41
src/backend/optimizer/prep/Makefile modified +1 −0
src/backend/optimizer/prep/prepagg.c added +678 −0
src/backend/optimizer/util/clauses.c modified +0 −288
src/backend/parser/parse_func.c modified +2 −0
src/backend/utils/adt/selfuncs.c modified +7 −5
src/include/catalog/catversion.h modified +1 −1
src/include/executor/execExpr.h modified +1 −2
src/include/nodes/execnodes.h modified +0 −11
src/include/nodes/nodes.h modified +1 −2
src/include/nodes/pathnodes.h modified +76 −4
src/include/nodes/primnodes.h modified +8 −0
src/include/optimizer/clauses.h modified +0 −2
src/include/optimizer/prep.h modified +8 −0
src/include/utils/selfuncs.h modified +1 −1
src/test/regress/expected/partition_aggregate.out modified +21 −20
src/test/regress/sql/partition_aggregate.sql modified +5 −4
src/tools/pgindent/typedefs.list modified +0 −1

Discussion