Re: BUG #17994: Invalidating relcache corrupts tupDesc inside ExecEvalFieldStoreDeForm()
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>, exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2023-08-21T12:33:37Z
Lists: pgsql-bugs
Hello,
On 2023-Jul-12, Andrew Dunstan wrote:
> + entry = hash_search(missing_cache, &key, HASH_ENTER, &found);
> +
> + if (!found)
> + {
> + /* cache miss, so we need a non-transient copy of the datum */
> + oldctx = MemoryContextSwitchTo(TopMemoryContext);
> + entry->value =
> + datumCopy(attrmiss->am_value, false, att->attlen);
> + MemoryContextSwitchTo(oldctx);
> + }
Hmm ... when exactly do these values get freed if no longer needed? Is
the theory that leaking them is not relevant?
--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/
"Oh, great altar of passive entertainment, bestow upon me thy discordant images
at such speed as to render linear thought impossible" (Calvin a la TV)
Commits
-
Cache by-reference missing values in a long lived context
- 2d13dab048a7 11.22 landed
- f938acd68b08 16.0 landed
- a68458108512 17.0 landed
- 75f323aa1c1e 15.5 landed
- 7f4515a58ebd 14.10 landed
- 1bb619d4d628 13.13 landed
- 01993ac748fd 12.17 landed
-
Fix order of operations in ExecEvalFieldStoreDeForm().
- d0ab203bc192 13.12 landed
- cc8cca3c2d60 15.4 landed
- 7f11b7a9cf18 11.21 landed
- 53b93e853ffe 12.16 landed
- 43af714defa0 16.0 landed
- 0789b82a9792 14.9 landed