Use palloc_object() and palloc_array() in backend code

Michael Paquier <michael@paquier.xyz>

Commit: 1b105f9472bdb9a68f709778afafb494997267bd
Author: Michael Paquier <michael@paquier.xyz>
Date: 2025-12-09T22:36:46Z
Use palloc_object() and palloc_array() in backend code

The idea is to encourage more the use of these new routines across the
tree, as these offer stronger type safety guarantees than palloc().
This batch of changes includes most of the trivial changes suggested by
the author for src/backend/.

A total of 334 files are updated here.  Among these files, 48 of them
have their build change slightly; these are caused by line number
changes as the new allocation formulas are simpler, shaving around 100
lines of code in total.

Similar work has been done in 0c3c5c3b06a3 and 31d3847a37be.

Author: David Geier <geidav.pg@gmail.com>
Discussion: https://postgr.es/m/ad0748d4-3080-436e-b0bc-ac8f86a3466a@gmail.com

Files

PathChange+/−
src/backend/access/brin/brin.c modified +4 −4
src/backend/access/brin/brin_minmax_multi.c modified +2 −2
src/backend/access/brin/brin_revmap.c modified +1 −1
src/backend/access/brin/brin_tuple.c modified +7 −8
src/backend/access/common/attmap.c modified +2 −2
src/backend/access/common/heaptuple.c modified +4 −4
src/backend/access/common/printtup.c modified +1 −1
src/backend/access/common/reloptions.c modified +3 −3
src/backend/access/common/tidstore.c modified +4 −4
src/backend/access/common/toast_internals.c modified +1 −1
src/backend/access/common/tupconvert.c modified +10 −10
src/backend/access/common/tupdesc.c modified +1 −1
src/backend/access/gin/ginbtree.c modified +3 −3
src/backend/access/gin/ginbulk.c modified +2 −3
src/backend/access/gin/gindatapage.c modified +7 −7
src/backend/access/gin/ginentrypage.c modified +2 −2
src/backend/access/gin/ginget.c modified +2 −2
src/backend/access/gin/gininsert.c modified +8 −8
src/backend/access/gin/ginscan.c modified +5 −8
src/backend/access/gin/ginutil.c modified +5 −5
src/backend/access/gin/ginvacuum.c modified +4 −4
src/backend/access/gist/gistbuildbuffers.c modified +5 −9
src/backend/access/gist/gistbuild.c modified +5 −5
src/backend/access/gist/gist.c modified +11 −11
src/backend/access/gist/gistproc.c modified +13 −13
src/backend/access/gist/gistscan.c modified +3 −3
src/backend/access/gist/gistsplit.c modified +4 −4
src/backend/access/gist/gistutil.c modified +2 −2
src/backend/access/gist/gistvacuum.c modified +2 −2
src/backend/access/hash/hash.c modified +4 −5
src/backend/access/hash/hashsort.c modified +1 −1
src/backend/access/heap/heapam.c modified +7 −7
src/backend/access/heap/heapam_handler.c modified +3 −3
src/backend/access/heap/rewriteheap.c modified +1 −1
src/backend/access/heap/vacuumlazy.c modified +3 −3
src/backend/access/index/amvalidate.c modified +1 −1
src/backend/access/index/genam.c modified +7 −7
src/backend/access/nbtree/nbtdedup.c modified +4 −4
src/backend/access/nbtree/nbtinsert.c modified +1 −1
src/backend/access/nbtree/nbtpage.c modified +1 −1
src/backend/access/nbtree/nbtree.c modified +4 −5
src/backend/access/nbtree/nbtsearch.c modified +1 −1
src/backend/access/nbtree/nbtsort.c modified +16 −16
src/backend/access/nbtree/nbtsplitloc.c modified +1 −1
src/backend/access/nbtree/nbtxlog.c modified +1 −1
src/backend/access/spgist/spgdoinsert.c modified +16 −17
src/backend/access/spgist/spginsert.c modified +1 −1
src/backend/access/spgist/spgkdtreeproc.c modified +7 −7
src/backend/access/spgist/spgproc.c modified +2 −2
src/backend/access/spgist/spgquadtreeproc.c modified +11 −11
src/backend/access/spgist/spgscan.c modified +12 −18
src/backend/access/spgist/spgtextproc.c modified +9 −10
src/backend/access/spgist/spgutils.c modified +1 −1
src/backend/access/spgist/spgvacuum.c modified +3 −3
src/backend/access/spgist/spgxlog.c modified +1 −1
src/backend/access/tablesample/system.c modified +1 −1
src/backend/access/transam/multixact.c modified +1 −2
src/backend/access/transam/parallel.c modified +3 −4
src/backend/access/transam/timeline.c modified +4 −4
src/backend/access/transam/twophase.c modified +5 −5
src/backend/access/transam/xact.c modified +1 −1
src/backend/access/transam/xlog.c modified +2 −2
src/backend/access/transam/xlogfuncs.c modified +1 −1
src/backend/access/transam/xlogprefetcher.c modified +1 −1
src/backend/access/transam/xlogrecovery.c modified +3 −3
src/backend/access/transam/xlogutils.c modified +1 −1
src/backend/backup/basebackup.c modified +3 −3
src/backend/backup/basebackup_copy.c modified +1 −1
src/backend/backup/basebackup_gzip.c modified +1 −1
src/backend/backup/basebackup_incremental.c modified +3 −3
src/backend/backup/basebackup_lz4.c modified +1 −1
src/backend/backup/basebackup_progress.c modified +1 −1
src/backend/backup/basebackup_server.c modified +1 −1
src/backend/backup/basebackup_target.c modified +2 −2
src/backend/backup/basebackup_throttle.c modified +1 −1
src/backend/backup/basebackup_zstd.c modified +1 −1
src/backend/backup/walsummary.c modified +1 −1
src/backend/bootstrap/bootstrap.c modified +3 −3
src/backend/catalog/dependency.c modified +3 −5
src/backend/catalog/heap.c modified +4 −4
src/backend/catalog/index.c modified +4 −4
src/backend/catalog/namespace.c modified +2 −2
src/backend/catalog/objectaddress.c modified +2 −2
src/backend/catalog/pg_constraint.c modified +1 −1
src/backend/catalog/pg_depend.c modified +1 −1
src/backend/catalog/pg_enum.c modified +3 −3
src/backend/catalog/pg_publication.c modified +3 −3
src/backend/catalog/pg_shdepend.c modified +2 −2
src/backend/catalog/pg_subscription.c modified +2 −2
src/backend/catalog/storage.c modified +5 −5
src/backend/commands/analyze.c modified +3 −3
src/backend/commands/cluster.c modified +2 −2
src/backend/commands/copy.c modified +1 −1
src/backend/commands/copyfrom.c modified +2 −2
src/backend/commands/copyto.c modified +2 −2
src/backend/commands/createas.c modified +1 −1
src/backend/commands/dbcommands.c modified +1 −1
src/backend/commands/event_trigger.c modified +12 −12
src/backend/commands/explain.c modified +1 −1
src/backend/commands/explain_dr.c modified +1 −1
src/backend/commands/explain_state.c modified +2 −5
src/backend/commands/extension.c modified +2 −2
src/backend/commands/functioncmds.c modified +1 −1
src/backend/commands/matview.c modified +2 −2
src/backend/commands/opclasscmds.c modified +6 −6
src/backend/commands/policy.c modified +3 −3
src/backend/commands/publicationcmds.c modified +3 −3
src/backend/commands/seclabel.c modified +1 −1
src/backend/commands/subscriptioncmds.c modified +2 −2
src/backend/commands/tablecmds.c modified +18 −18
src/backend/commands/trigger.c modified +4 −4
src/backend/commands/tsearchcmds.c modified +4 −4
src/backend/commands/typecmds.c modified +2 −2
src/backend/commands/user.c modified +2 −2
src/backend/commands/vacuumparallel.c modified +3 −3
src/backend/executor/execExpr.c modified +43 −51
src/backend/executor/execGrouping.c modified +1 −1
src/backend/executor/execIndexing.c modified +2 −2
src/backend/executor/execMain.c modified +9 −12
src/backend/executor/execParallel.c modified +1 −1
src/backend/executor/execReplication.c modified +4 −4
src/backend/executor/execTuples.c modified +2 −2
src/backend/executor/functions.c modified +2 −2
src/backend/executor/nodeAgg.c modified +18 −24
src/backend/executor/nodeAppend.c modified +1 −1
src/backend/executor/nodeFunctionscan.c modified +1 −1
src/backend/executor/nodeGatherMerge.c modified +2 −4
src/backend/executor/nodeHashjoin.c modified +2 −3
src/backend/executor/nodeIndexonlyscan.c modified +1 −2
src/backend/executor/nodeIndexscan.c modified +3 −5
src/backend/executor/nodeMemoize.c modified +2 −2
src/backend/executor/nodeMergeAppend.c modified +3 −3
src/backend/executor/nodeModifyTable.c modified +5 −8
src/backend/executor/nodeProjectSet.c modified +2 −4
src/backend/executor/nodeSamplescan.c modified +1 −1
src/backend/executor/nodeTableFuncscan.c modified +2 −2
src/backend/executor/nodeTidrangescan.c modified +1 −1
src/backend/executor/nodeTidscan.c modified +1 −1
src/backend/executor/nodeWindowAgg.c modified +6 −6
src/backend/executor/spi.c modified +10 −11
src/backend/executor/tqueue.c modified +2 −2
src/backend/executor/tstoreReceiver.c modified +1 −1
src/backend/foreign/foreign.c modified +5 −5
src/backend/jit/llvm/llvmjit.c modified +3 −3
src/backend/jit/llvm/llvmjit_deform.c modified +6 −6
src/backend/jit/llvm/llvmjit_expr.c modified +4 −4
src/backend/lib/bipartite_match.c modified +1 −1
src/backend/lib/dshash.c modified +2 −2
src/backend/lib/integerset.c modified +1 −1
src/backend/lib/pairingheap.c modified +1 −1
src/backend/libpq/auth-oauth.c modified +4 −4
src/backend/libpq/auth-scram.c modified +1 −1
src/backend/libpq/hba.c modified +5 −5
src/backend/libpq/pqcomm.c modified +1 −1
src/backend/lib/rbtree.c modified +1 −1
src/backend/nodes/nodeFuncs.c modified +1 −1
src/backend/nodes/queryjumblefuncs.c modified +1 −1
src/backend/nodes/tidbitmap.c modified +2 −2
src/backend/optimizer/geqo/geqo_erx.c modified +1 −1
src/backend/optimizer/geqo/geqo_eval.c modified +1 −1
src/backend/optimizer/geqo/geqo_pmx.c modified +4 −4
src/backend/optimizer/geqo/geqo_pool.c modified +5 −5
src/backend/optimizer/geqo/geqo_recombination.c modified +1 −1
src/backend/optimizer/path/clausesel.c modified +1 −1
src/backend/optimizer/path/costsize.c modified +2 −2
src/backend/optimizer/path/indxpath.c modified +3 −4
src/backend/optimizer/path/joinrels.c modified +1 −2
src/backend/optimizer/plan/analyzejoins.c modified +1 −2
src/backend/optimizer/plan/createplan.c modified +17 −17
src/backend/optimizer/plan/initsplan.c modified +2 −4
src/backend/optimizer/plan/planagg.c modified +1 −1
src/backend/optimizer/plan/planner.c modified +3 −3
src/backend/optimizer/plan/setrefs.c modified +3 −3
src/backend/optimizer/prep/prepjointree.c modified +3 −4
src/backend/optimizer/prep/prepunion.c modified +1 −1
src/backend/optimizer/util/appendinfo.c modified +1 −2
src/backend/optimizer/util/clauses.c modified +3 −3
src/backend/optimizer/util/extendplan.c modified +6 −12
src/backend/optimizer/util/plancat.c modified +19 −20
src/backend/optimizer/util/predtest.c modified +2 −2
src/backend/optimizer/util/relnode.c modified +7 −8
src/backend/optimizer/util/tlist.c modified +6 −6
src/backend/parser/analyze.c modified +2 −3
src/backend/parser/gram.y modified +46 −46
src/backend/parser/parse_clause.c modified +2 −2
src/backend/parser/parse_expr.c modified +2 −2
src/backend/parser/parse_node.c modified +1 −1
src/backend/parser/parse_param.c modified +2 −2
src/backend/parser/parse_relation.c modified +5 −5
src/backend/parser/parse_type.c modified +1 −1
src/backend/partitioning/partbounds.c modified +28 −38
src/backend/partitioning/partdesc.c modified +1 −1
src/backend/postmaster/autovacuum.c modified +3 −3
src/backend/postmaster/bgworker.c modified +1 −1
src/backend/postmaster/checkpointer.c modified +1 −1
src/backend/postmaster/launch_backend.c modified +1 −1
src/backend/postmaster/pgarch.c modified +2 −2
src/backend/postmaster/postmaster.c modified +1 −1
src/backend/postmaster/syslogger.c modified +1 −1
src/backend/postmaster/walsummarizer.c modified +1 −2
src/backend/replication/libpqwalreceiver/libpqwalreceiver.c modified +2 −2
src/backend/replication/logical/applyparallelworker.c modified +1 −1
src/backend/replication/logical/launcher.c modified +1 −1
src/backend/replication/logical/logical.c modified +1 −1
src/backend/replication/logical/logicalfuncs.c modified +1 −1
src/backend/replication/logical/proto.c modified +4 −4
src/backend/replication/logical/relation.c modified +4 −4
src/backend/replication/logical/reorderbuffer.c modified +7 −10
src/backend/replication/logical/slotsync.c modified +1 −1
src/backend/replication/logical/snapbuild.c modified +2 −3
src/backend/replication/logical/syncutils.c modified +1 −1
src/backend/replication/logical/worker.c modified +3 −3
src/backend/replication/pgoutput/pgoutput.c modified +2 −2
src/backend/replication/syncrep.c modified +4 −5
src/backend/replication/walreceiver.c modified +2 −2
src/backend/replication/walsender.c modified +1 −1
src/backend/rewrite/rewriteHandler.c modified +1 −1
src/backend/rewrite/rewriteManip.c modified +3 −3
src/backend/snowball/dict_snowball.c modified +2 −2
src/backend/statistics/dependencies.c modified +11 −15
src/backend/statistics/extended_stats.c modified +7 −8
src/backend/statistics/mcv.c modified +12 −12
src/backend/storage/file/buffile.c modified +5 −5
src/backend/storage/ipc/procarray.c modified +3 −5
src/backend/storage/ipc/shmem.c modified +3 −3
src/backend/storage/ipc/shm_mq.c modified +1 −1
src/backend/storage/lmgr/lock.c modified +7 −9
src/backend/storage/lmgr/predicate.c modified +3 −5
src/backend/storage/smgr/bulk_write.c modified +1 −1
src/backend/storage/smgr/md.c modified +1 −1
src/backend/storage/smgr/smgr.c modified +1 −1
src/backend/storage/sync/sync.c modified +1 −1
src/backend/tcop/pquery.c modified +1 −1
src/backend/tsearch/dict.c modified +1 −1
src/backend/tsearch/dict_ispell.c modified +1 −1
src/backend/tsearch/dict_simple.c modified +3 −3
src/backend/tsearch/dict_synonym.c modified +4 −4
src/backend/tsearch/dict_thesaurus.c modified +13 −13
src/backend/tsearch/spell.c modified +11 −11
src/backend/tsearch/to_tsany.c modified +7 −7
src/backend/tsearch/ts_parse.c modified +1 −1
src/backend/tsearch/ts_selfuncs.c modified +1 −1
src/backend/tsearch/ts_typanalyze.c modified +3 −3
src/backend/tsearch/ts_utils.c modified +2 −2
src/backend/tsearch/wparser.c modified +8 −8
src/backend/tsearch/wparser_def.c modified +6 −6
src/backend/utils/activity/pgstat_relation.c modified +1 −1
src/backend/utils/activity/wait_event.c modified +1 −1
src/backend/utils/adt/acl.c modified +3 −3
src/backend/utils/adt/arrayfuncs.c modified +7 −7
src/backend/utils/adt/array_selfuncs.c modified +4 −4
src/backend/utils/adt/arraysubs.c modified +1 −1
src/backend/utils/adt/array_typanalyze.c modified +3 −4
src/backend/utils/adt/array_userfuncs.c modified +6 −6
src/backend/utils/adt/date.c modified +12 −12
src/backend/utils/adt/datetime.c modified +5 −5
src/backend/utils/adt/formatting.c modified +1 −1
src/backend/utils/adt/geo_ops.c modified +47 −47
src/backend/utils/adt/geo_spgist.c modified +20 −20
src/backend/utils/adt/int8.c modified +1 −1
src/backend/utils/adt/int.c modified +1 −1
src/backend/utils/adt/jsonb_gin.c modified +10 −9
src/backend/utils/adt/jsonb_util.c modified +5 −5
src/backend/utils/adt/json.c modified +3 −3
src/backend/utils/adt/jsonfuncs.c modified +32 −32
src/backend/utils/adt/jsonpath_exec.c modified +13 −14
src/backend/utils/adt/jsonpath_gram.y modified +2 −2
src/backend/utils/adt/lockfuncs.c modified +1 −1
src/backend/utils/adt/mac8.c modified +9 −9
src/backend/utils/adt/mac.c modified +7 −7
src/backend/utils/adt/mcxtfuncs.c modified +1 −1
src/backend/utils/adt/misc.c modified +1 −1
src/backend/utils/adt/multirangetypes.c modified +4 −4
src/backend/utils/adt/multirangetypes_selfuncs.c modified +2 −2
src/backend/utils/adt/multixactfuncs.c modified +1 −1
src/backend/utils/adt/network.c modified +12 −12
src/backend/utils/adt/network_gist.c modified +5 −5
src/backend/utils/adt/network_spgist.c modified +3 −3
src/backend/utils/adt/numeric.c modified +6 −7
src/backend/utils/adt/orderedsetaggs.c modified +2 −2
src/backend/utils/adt/pg_locale_libc.c modified +3 −3
src/backend/utils/adt/pg_ndistinct.c modified +1 −1
src/backend/utils/adt/rangetypes.c modified +1 −1
src/backend/utils/adt/rangetypes_gist.c modified +7 −8
src/backend/utils/adt/rangetypes_selfuncs.c modified +2 −2
src/backend/utils/adt/rangetypes_spgist.c modified +9 −9
src/backend/utils/adt/rangetypes_typanalyze.c modified +4 −4
src/backend/utils/adt/regexp.c modified +10 −10
src/backend/utils/adt/rowtypes.c modified +12 −12
src/backend/utils/adt/ruleutils.c modified +2 −2
src/backend/utils/adt/selfuncs.c modified +2 −2
src/backend/utils/adt/skipsupport.c modified +1 −1
src/backend/utils/adt/tid.c modified +3 −3
src/backend/utils/adt/timestamp.c modified +22 −24
src/backend/utils/adt/tsginidx.c modified +5 −5
src/backend/utils/adt/tsgistidx.c modified +5 −5
src/backend/utils/adt/tsquery.c modified +6 −6
src/backend/utils/adt/tsquery_cleanup.c modified +1 −1
src/backend/utils/adt/tsquery_gist.c modified +2 −2
src/backend/utils/adt/tsquery_op.c modified +7 −7
src/backend/utils/adt/tsquery_util.c modified +9 −9
src/backend/utils/adt/tsrank.c modified +6 −7
src/backend/utils/adt/tsvector.c modified +2 −2
src/backend/utils/adt/tsvector_op.c modified +5 −5
src/backend/utils/adt/tsvector_parser.c modified +3 −3
src/backend/utils/adt/uuid.c modified +2 −2
src/backend/utils/adt/varlena.c modified +1 −1
src/backend/utils/adt/xml.c modified +3 −3
src/backend/utils/cache/catcache.c modified +2 −2
src/backend/utils/cache/evtcache.c modified +1 −1
src/backend/utils/cache/inval.c modified +1 −1
src/backend/utils/cache/lsyscache.c modified +2 −4
src/backend/utils/cache/partcache.c modified +12 −12
src/backend/utils/cache/plancache.c modified +7 −8
src/backend/utils/cache/relcache.c modified +15 −15
src/backend/utils/cache/typcache.c modified +1 −1
src/backend/utils/error/elog.c modified +1 −1
src/backend/utils/fmgr/funcapi.c modified +1 −1
src/backend/utils/init/postinit.c modified +1 −1
src/backend/utils/mb/mbutils.c modified +2 −2
src/backend/utils/misc/conffiles.c modified +1 −1
src/backend/utils/misc/guc.c modified +2 −2
src/backend/utils/misc/guc-file.l modified +2 −2
src/backend/utils/misc/injection_point.c modified +1 −1
src/backend/utils/misc/queryenvironment.c modified +1 −1
src/backend/utils/misc/tzparser.c modified +1 −1
src/backend/utils/mmgr/dsa.c modified +2 −2
src/backend/utils/sort/logtape.c modified +3 −3
src/backend/utils/sort/sharedtuplestore.c modified +2 −2
src/backend/utils/sort/tuplesort.c modified +1 −1
src/backend/utils/sort/tuplesortvariants.c modified +6 −6
src/backend/utils/sort/tuplestore.c modified +1 −1
src/backend/utils/time/snapmgr.c modified +1 −1

Discussion