]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Cache by-reference missing values in a long lived context
authorAndrew Dunstan <andrew@dunslane.net>
Tue, 22 Aug 2023 15:57:08 +0000 (11:57 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Tue, 22 Aug 2023 19:15:31 +0000 (15:15 -0400)
commit1bb619d4d6285c23f16da61fb3a17ef59b14b0c7
tree1f3197362788c4b0ca917bb17940cbc9545f90ab
parent4caa9e33ecfe70359177b9689f33c6da55c3aa35
Cache by-reference missing values in a long lived context

Attribute missing values might be needed past the lifetime of the tuple
descriptors from which they are extracted. To avoid possibly using
pointers for by-reference values which might thus be left dangling, we
cache a datumCopy'd version of the datum in the TopMemoryContext. Since
we first search for the value this only needs to be done once per
session for any such value.

Original complaint from Tom Lane, idea for mitigation by Andrew Dunstan,
tweaked by Tom Lane.

Backpatch to version 11 where missing values were introduced.

Discussion: https://postgr.es/m/1306569.1687978174@sss.pgh.pa.us
src/backend/access/common/heaptuple.c
src/tools/pgindent/typedefs.list