From: | Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> |
---|---|
To: | Surafel Temesgen <surafel3000(at)gmail(dot)com> |
Cc: | vik(dot)fearing(at)2ndquadrant(dot)com, Mark Dilger <hornschnorter(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, andrew(at)tao11(dot)riddles(dot)org(dot)uk |
Subject: | Re: FETCH FIRST clause PERCENT option |
Date: | 2019-01-09 17:18:06 |
Message-ID: | f9bd8aba-96c8-8725-43fc-24065d2da96a@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 1/9/19 4:43 PM, Surafel Temesgen wrote:
>
>
> On Wed, Jan 9, 2019 at 5:38 PM Tomas Vondra
> <tomas(dot)vondra(at)2ndquadrant(dot)com <mailto:tomas(dot)vondra(at)2ndquadrant(dot)com>> wrote:
>
>
> It's hard to say what exactly are you doing, because you haven't shared
> any code nor examples.
>
>
> okay i attach in progress patch
>
Yeah, that's what I thought - the patch computes
node->count = DatumGetInt64(100 / DatumGetFloat8(val));
and then always fetches this number of records before emitting the next
row from the tuplestore. That's wrong, as I explained before, because
the distance does change, due to rounding.
See the attached patch, which recomputes the count regularly. I don't
claim the patch is committable or that it has no other bugs, but
hopefully it shows what I meant.
FWIW you don't need to create any slots - the two already created are
enough. You certainly don't need to create the slots within a loop.
regards
--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachment | Content-Type | Size |
---|---|---|
percent-incremental.patch | text/x-patch | 27.8 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2019-01-09 17:23:48 | Re: Displaying and dumping of table access methods |
Previous Message | Andres Freund | 2019-01-09 16:10:43 | Re: Misleading panic message in backend/access/transam/xlog.c |