From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Noah Misch <noah(at)leadboat(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Re: patch: fix performance problems with repated decomprimation of varlena values in plpgsql |
Date: | 2011-01-18 21:40:40 |
Message-ID: | AANLkTi=5gnfuqz1_cMZDs-a1XXYYbJ0D96GjgkJGO+Nf@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
2011/1/18 Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>:
> Noah Misch <noah(at)leadboat(dot)com> writes:
>> On Sun, Jan 16, 2011 at 06:49:27PM +0100, Pavel Stehule wrote:
>>> I am sending a updated version with little bit more comments. But I am
>>> sure, so somebody with good English have to edit my comments.
>>> Minimally I hope, so your questions will be answered.
>
>> Thanks. I edited the comments and white space somewhat, as attached. I'll go
>> ahead and mark it Ready for Committer.
>
> I looked at this patch and found it fairly awkward. What is the point
> of adding an additional flag to every variable, as opposed to just
> forcibly detoasting during assignment? If it's to avoid detoasting when
> the variable is read in a way that doesn't require detoasting, it fails
> rather completely IMO, since exec_eval_datum certainly doesn't know
> that.
I am not sure about false overhead of detoasting. This is a safe
variant. I don't would to decrease performance. Not sure if it's
necessary.
But detoasting on assignment isn't enought:
some most simple example - searching a maximum
for i in array_lower(a,1) .. array_upper(a,1)
loop
if x < a[i] then
x = a[i];
end if;
end loop;
in this cycle the variable a wasn't modified. Any access to this
variable means a detoast and decompres. So there is necessary to
modify a process. Detoast not on assign, but detoast on usage.
Regards
Pavel Stehule
>
> The added memory context variable seems redundant as well.
I didn't find a pointer on top execution context available from
execution state. I am sure, so we have to switch to this context
explicitly.
Regards
Pavel Stehule
>
> regards, tom lane
>
From | Date | Subject | |
---|---|---|---|
Next Message | Mark Kirkwood | 2011-01-18 21:43:55 | Re: pg_filedump moved to pgfoundry |
Previous Message | Tom Lane | 2011-01-18 21:39:17 | Re: Fixing GIN for empty/null/full-scan cases |