Add SysCacheGetAttrNotNull for guaranteed not-null attrs

Daniel Gustafsson <dgustafsson@postgresql.org>

Commit: d435f15fff3cf3cf5d6cfcfd63e21acc0f737829
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Date: 2023-03-25T21:49:33Z
Releases: 16.0
Add SysCacheGetAttrNotNull for guaranteed not-null attrs

When extracting an attr from a cached tuple in the syscache with
SysCacheGetAttr the isnull parameter must be checked in case the
attr cannot be NULL.  For cases when this is known beforehand, a
wrapper is introduced which perform the errorhandling internally
on behalf of the caller, invoking an elog in case of a NULL attr.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Reviewed-by: David Rowley <dgrowleyml@gmail.com>
Discussion: https://postgr.es/m/AD76405E-DB45-46B6-941F-17B1EB3A9076@yesql.se

Files

PathChange+/−
src/backend/access/brin/brin_inclusion.c modified +3 −4
src/backend/access/brin/brin_minmax.c modified +3 −4
src/backend/access/brin/brin_minmax_multi.c modified +3 −4
src/backend/access/index/indexam.c modified +2 −4
src/backend/catalog/aclchk.c modified +13 −25
src/backend/catalog/index.c modified +8 −12
src/backend/catalog/objectaddress.c modified +7 −16
src/backend/catalog/pg_constraint.c modified +10 −23
src/backend/catalog/pg_proc.c modified +6 −19
src/backend/catalog/pg_subscription.c modified +12 −20
src/backend/commands/collationcmds.c modified +7 −16
src/backend/commands/dbcommands.c modified +3 −8
src/backend/commands/indexcmds.c modified +2 −5
src/backend/commands/matview.c modified +3 −6
src/backend/commands/subscriptioncmds.c modified +4 −6
src/backend/commands/tablecmds.c modified +8 −19
src/backend/commands/typecmds.c modified +1 −7
src/backend/executor/execReplication.c modified +2 −4
src/backend/executor/functions.c modified +1 −6
src/backend/optimizer/util/clauses.c modified +4 −19
src/backend/parser/parse_func.c modified +2 −5
src/backend/parser/parse_utilcmd.c modified +10 −20
src/backend/partitioning/partbounds.c modified +2 −7
src/backend/statistics/extended_stats.c modified +2 −3
src/backend/utils/adt/amutils.c modified +1 −4
src/backend/utils/adt/pg_locale.c modified +6 −13
src/backend/utils/adt/ruleutils.c modified +38 −83
src/backend/utils/cache/lsyscache.c modified +5 −16
src/backend/utils/cache/partcache.c modified +4 −6
src/backend/utils/cache/syscache.c modified +27 −0
src/backend/utils/fmgr/fmgr.c modified +12 −27
src/backend/utils/fmgr/funcapi.c modified +8 −17
src/backend/utils/init/postinit.c modified +3 −6
src/include/utils/syscache.h modified +3 −0
src/pl/plperl/plperl.c modified +2 −4
src/pl/plpgsql/src/pl_comp.c modified +1 −5
src/pl/plpython/plpy_procedure.c modified +2 −4
src/pl/tcl/pltcl.c modified +2 −5

Discussion