Restructure representation of aggregate functions so that they have pg_proc

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 902a6a0a4bc62d619a5ccd1ef0ff7fb3a5d897f1
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2002-04-11T20:00:18Z
Releases: 7.3.1
Restructure representation of aggregate functions so that they have pg_proc
entries, per pghackers discussion.  This fixes aggregates to live in
namespaces, and also simplifies/speeds up lookup in parse_func.c.
Also, add a 'proimplicit' flag to pg_proc that controls whether a type
coercion function may be invoked implicitly, or only explicitly.  The
current settings of these flags are more permissive than I would like,
but we will need to debate and refine the behavior; for now, I avoided
breaking regression tests as much as I could.

Files

PathChange+/−
doc/src/sgml/catalogs.sgml modified +35 −42
doc/src/sgml/ref/create_aggregate.sgml modified +4 −3
doc/src/sgml/ref/create_function.sgml modified +63 −3
src/backend/catalog/aclchk.c modified +2 −28
src/backend/catalog/heap.c modified +2 −2
src/backend/catalog/indexing.c modified +2 −2
src/backend/catalog/pg_aggregate.c modified +41 −85
src/backend/catalog/pg_proc.c modified +26 −43
src/backend/commands/comment.c modified +5 −20
src/backend/commands/define.c modified +78 −13
src/backend/commands/indexcmds.c modified +4 −2
src/backend/commands/remove.c modified +40 −14
src/backend/executor/nodeAgg.c modified +77 −20
src/backend/nodes/copyfuncs.c modified +2 −6
src/backend/nodes/equalfuncs.c modified +2 −4
src/backend/nodes/outfuncs.c modified +3 −5
src/backend/nodes/readfuncs.c modified +4 −8
src/backend/optimizer/util/var.c modified +3 −3
src/backend/parser/parse_agg.c modified +3 −77
src/backend/parser/parse_coerce.c modified +45 −29
src/backend/parser/parse_expr.c modified +3 −2
src/backend/parser/parse_func.c modified +117 −240
src/backend/parser/parse_node.c modified +6 −5
src/backend/parser/parse_oper.c modified +3 −2
src/backend/parser/parse_target.c modified +11 −7
src/backend/rewrite/rewriteHandler.c modified +2 −2
src/backend/utils/adt/ruleutils.c modified +42 −13
src/backend/utils/adt/sets.c modified +7 −4
src/backend/utils/adt/varchar.c modified +1 −14
src/backend/utils/cache/syscache.c modified +4 −14
src/backend/utils/Gen_fmgrtab.sh modified +11 −2
src/bin/pg_dump/pg_dump.c modified +34 −6
src/bin/pg_dump/pg_dump.h modified +2 −1
src/bin/psql/describe.c modified +16 −14
src/bin/psql/tab-complete.c modified +2 −2
src/include/catalog/catversion.h modified +2 −2
src/include/catalog/indexing.h modified +4 −6
src/include/catalog/pg_aggregate.h modified +81 −87
src/include/catalog/pg_attribute.h modified +31 −29
src/include/catalog/pg_class.h modified +2 −2
src/include/catalog/pg_operator.h modified +5 −5
src/include/catalog/pg_proc.h modified +1342 −1297
src/include/executor/nodeAgg.h modified +4 −1
src/include/nodes/primnodes.h modified +4 −8
src/include/parser/parse_agg.h modified +1 −5
src/include/parser/parse_coerce.h modified +4 −3
src/include/parser/parse_func.h modified +6 −2
src/include/parser/parse_target.h modified +3 −2
src/include/utils/acl.h modified +1 −2
src/include/utils/builtins.h modified +1 −2
src/include/utils/syscache.h modified +31 −32
src/interfaces/python/tutorial/syscat.py modified +5 −4
src/test/regress/expected/alter_table.out modified +10 −10
src/test/regress/expected/foreign_key.out modified +37 −37
src/test/regress/expected/oidjoins.out modified +8 −16
src/test/regress/expected/opr_sanity.out modified +111 −58
src/test/regress/expected/rules.out modified +4 −4
src/test/regress/sql/alter_table.sql modified +4 −4
src/test/regress/sql/foreign_key.sql modified +22 −22
src/test/regress/sql/oidjoins.sql modified +4 −8
src/test/regress/sql/opr_sanity.sql modified +92 −47
src/test/regress/sql/rules.sql modified +1 −1
src/tutorial/syscat.source modified +6 −5