Re: Re: patch: fix performance problems with repated decomprimation of varlena values in plpgsql
Noah Misch <noah@leadboat.com>
From: Noah Misch <noah@leadboat.com>
To: Pavel Stehule <pavel.stehule@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>, Kevin Grittner <Kevin.Grittner@wicourts.gov>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2011-02-08T15:28:52Z
Lists: pgsql-hackers
On Tue, Feb 08, 2011 at 08:00:42AM +0100, Pavel Stehule wrote: > 2011/2/8 Noah Misch <noah@leadboat.com>: > > On Mon, Feb 07, 2011 at 11:16:18PM -0500, Robert Haas wrote: > >> So > >> can we just get rid of should_be_detoasted, and have exec_eval_datum() > >> or its callers instead test: > >> > >> !var->isnull && var->datatype->typbyval && var->datatype->typlen == -1 > >> && VARATT_IS_EXTENDED(var->value) > > > > FWIW, this is what I meant by option 2 in my summary. > > > >> I haven't tested this, but it's not clear that'd be measurably slower > >> than checking a single Boolean. > > > > Pavel benchmarked this or something close, measuring a performance loss: > > http://archives.postgresql.org/message-id/AANLkTikDHekc9r38w2ttzoMDr8vDaVAnr3LhqfJkEuL9@mail.gmail.com > > I tested this in situation when Datum is detoasted on usage, not in > assignment. So impact will be less. Robert spoke of doing it on usage (exec_eval_datum()) too, though.