Re: BUG #17994: Invalidating relcache corrupts tupDesc inside ExecEvalFieldStoreDeForm()

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andres Freund <andres@anarazel.de>, exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2023-07-01T13:14:39Z
Lists: pgsql-bugs

Attachments

On 2023-06-30 Fr 15:08, Tom Lane wrote:
> Andrew Dunstan<andrew@dunslane.net>  writes:
>> Me either. I think this might call for too much invention so I'm going
>> to revert to plan A. The invalidation code won't be very much, and it
>> should be a fairly rare event, so it doesn't need to be very clever.
> The problem with rarely-executed code is that it's also hard to test.
>
> 			


Your Plan B in the end proved less difficult than I thought, and 
certainly seems more robust than having to tangle with invalidations. I 
didn't try to do anything to wrap the values in a bytea, it didn't seem 
necessary. Here's a patch - it's not terribly long or invasive. I 
haven't tried backpatching it yet.


cheers


andrew

--
Andrew Dunstan
EDB:https://www.enterprisedb.com

Commits

  1. Cache by-reference missing values in a long lived context

  2. Fix order of operations in ExecEvalFieldStoreDeForm().