Re: Why does ExecComputeStoredGenerated() form a heap tuple
Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
From: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
To: David Rowley <david.rowley@2ndquadrant.com>
Cc: Andres Freund <andres@anarazel.de>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-05-15T17:44:22Z
Lists: pgsql-hackers
Attachments
- v2-0001-Convert-ExecComputeStoredGenerated-to-use-tuple-s.patch (text/plain) patch v2-0001
On 2019-04-24 00:26, David Rowley wrote: > I didn't do the exact same test, but if I use COPY instead of \copy, > then for me patched is faster. OK, confirmed that way, too. > For the patch, I wonder if you need this line: > > + memcpy(values, slot->tts_values, sizeof(*values) * natts); > > If you got rid of that and changed the datumCopy to use > slot->tts_values[i] instead. done > Maybe it's also worth getting rid of the first memcpy for the null > array and just assign the element in the else clause. Tried that, seems to be slower. So I left it as is. > It might also be cleaner to assign TupleDescAttr(tupdesc, i) to a > variable instead of using the macro 3 times. It'd make that datumCopy > line shorter too. Also done. Updated patch attached. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Convert ExecComputeStoredGenerated to use tuple slots
- 66a4bad83aaa 12.0 landed