Switch some system functions to use get_call_result_type()
authorMichael Paquier <michael@paquier.xyz>
Wed, 21 Dec 2022 01:11:22 +0000 (10:11 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 21 Dec 2022 01:11:22 +0000 (10:11 +0900)
commit22e3b558052aa209cba2a8fec192d76b5faef19e
treeb4626ba839fad837c50e039ce56e6819a5e0f9f6
parentf03bd5717eaf31569ca797a2f7d65608f88ac2a2
Switch some system functions to use get_call_result_type()

This shaves some code by replacing the combinations of
CreateTemplateTupleDesc()/TupleDescInitEntry() hardcoding a mapping of
the attributes listed in pg_proc.dat by get_call_result_type() to build
the TupleDesc needed for the rows generated.

get_call_result_type() is more expensive than the former style, but this
removes some duplication with the lists of OUT parameters (pg_proc.dat
and the attributes hardcoded in these code paths).  This is applied to
functions that are not considered as critical (aka that could be called
repeatedly for monitoring purposes).

Author: Bharath Rupireddy
Reviewed-by: Robert Haas, Álvaro Herrera, Tom Lane, Michael Paquier
Discussion: https://postgr.es/m/CALj2ACV23HW5HP5hFjd89FNS-z5X8r2jNXdMXcpN2BgTtKd87w@mail.gmail.com
12 files changed:
contrib/old_snapshot/time_mapping.c
contrib/pg_visibility/pg_visibility.c
src/backend/access/transam/commit_ts.c
src/backend/access/transam/multixact.c
src/backend/catalog/objectaddress.c
src/backend/commands/sequence.c
src/backend/tsearch/wparser.c
src/backend/utils/adt/datetime.c
src/backend/utils/adt/misc.c
src/backend/utils/adt/partitionfuncs.c
src/backend/utils/adt/tsvector_op.c
src/backend/utils/misc/pg_controldata.c