Re: Pinning a buffer in TupleTableSlot is unnecessary
От | Andres Freund |
---|---|
Тема | Re: Pinning a buffer in TupleTableSlot is unnecessary |
Дата | |
Msg-id | 20161112152838.tcd3rdctirfzjbge@alap3.anarazel.de обсуждение исходный текст |
Ответ на | Re: Pinning a buffer in TupleTableSlot is unnecessary (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Pinning a buffer in TupleTableSlot is unnecessary
|
Список | pgsql-hackers |
On 2016-08-30 07:38:10 -0400, Tom Lane wrote: > Heikki Linnakangas <hlinnaka@iki.fi> writes: > > While profiling some queries and looking at executor overhead, I > > realized that we're not making much use of TupleTableSlot's ability to > > hold a buffer pin. In a SeqScan, the buffer is held pinned by the > > underlying heap-scan anyway. Same with an IndexScan, and the SampleScan. > > I think this is probably wrong, or at least very dangerous to remove. > The reason for the feature is that the slot may continue to point at > the tuple after the scan has moved on. FWIW, that's not safe to assume in upper layers *anyway*. If you want to do that, the slot has to be materialized, and that'd make a local copy. If you don't materialize tts_values/isnull can point into random old memory (common e.g. for projections and virtual tuples in general). Andres
В списке pgsql-hackers по дате отправления: