From: | Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com> |
---|---|
To: | Melanie Plageman <melanieplageman(at)gmail(dot)com>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi> |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Nazir Bilal Yavuz <byavuz81(at)gmail(dot)com> |
Subject: | Re: BitmapHeapScan streaming read user and prelim refactoring |
Date: | 2024-03-20 18:13:05 |
Message-ID: | 143eb079-0c70-4031-a7b8-ec6aa6e5108b@enterprisedb.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 3/18/24 16:19, Melanie Plageman wrote:
> On Mon, Mar 18, 2024 at 02:10:28PM +0200, Heikki Linnakangas wrote:
>> On 14/02/2024 21:42, Andres Freund wrote:
>>> On 2024-02-13 18:11:25 -0500, Melanie Plageman wrote:
>>>> patch 0004 is, I think, a bug fix. see [2].
>>>
>>> I'd not quite call it a bugfix, it's not like it leads to wrong
>>> behaviour. Seems more like an optimization. But whatever :)
>>
>> It sure looks like bug to me, albeit a very minor one. Certainly not an
>> optimization, it doesn't affect performance in any way, only what EXPLAIN
>> reports. So committed and backported that to all supported branches.
>
> I've attached v7 rebased over this commit.
>
I've started a new set of benchmarks with v7 (on top of f69319f2f1), but
unfortunately that results in about 15% of the queries failing with:
ERROR: prefetch and main iterators are out of sync
Reproducing it is pretty simple (at least on my laptop). Simply apply
0001-0011, and then do this:
======================================================================
create table test_table (a bigint, b bigint, c text) with (fillfactor = 25);
insert into test_table select 10000 * random(), i, md5(random()::text)
from generate_series(1, 1000000) s(i);
create index on test_table(a);
vacuum analyze ;
checkpoint;
set work_mem = '128kB';
set effective_io_concurrency = 8;
set random_page_cost = 2;
set max_parallel_workers_per_gather = 0;
explain select * from test_table where a >= 1 and a <= 512;
explain analyze select * from test_table where a >= 1 and a <= 512;
ERROR: prefetch and main iterators are out of sync
======================================================================
I haven't investigated this, but it seems to get broken by this patch:
v7-0009-Make-table_scan_bitmap_next_block-async-friendly.patch
I wonder if there are some additional changes aside from the rebase.
regards
--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2024-03-20 18:15:12 | Re: [DOCS] HOT - correct claim about indexes not referencing old line pointers |
Previous Message | Andrey M. Borodin | 2024-03-20 18:08:09 | Re: UUID v7 |