| 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: | Whole Thread | Raw Message | 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 |