Re: BUG #17994: Invalidating relcache corrupts tupDesc inside ExecEvalFieldStoreDeForm()
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>
Cc: exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2023-07-08T12:48:00Z
Lists: pgsql-bugs
On 2023-07-02 Su 22:15, Andrew Dunstan wrote: > > > On 2023-07-02 Su 18:13, Andres Freund wrote: >> Hi, >> >> On 2023-07-02 17:57:03 -0400, Tom Lane wrote: >>> Andres Freund<andres@anarazel.de> writes: >>>> Isn't that going to break the assumption that the key is unique within a >>>> transaction? >>> Huh? "abc" is "abc", no matter what. At least if Andrew did what >>> I suggested (I didn't look at the patch yet). >> Yea, I think that was a brainfart after too briefly skimming the code. >> >> >>>> Separately, will this work correctly with procedures keeping values alive >>>> across transactions? >>> That might be an issue. But couldn't we make this cache just live for >>> the life of the process? It's unlikely to get large. >> I don't have a good handle about how big it'd end up being in some of the less >> common workloads. I can imagine workloads with temp tables or such churning >> through a lot of default values - often the "keyed by value" approach will >> save the day, but I imagine not always. > > The maximum number of entries in the table is the number of > pg_attribute rows with atthasmissing = true and attbyval = false. In > practice I suspect that's mostly going to be fairly low. > > >> .oO(Perhaps we need to add a boehm style GC ... No.) >> >> Perhaps we could defer resetting the cache to when we're not inside a >> procedure? > > > I'm kinda leaning towards Tom's suggestion to just make it > session-persistent. > > > The thread seems to have died down a bit. Do we have a consensus on Tom's approach? cheers andrew -- Andrew Dunstan EDB:https://www.enterprisedb.com
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