Re: Some read stream improvements
От | Thomas Munro |
---|---|
Тема | Re: Some read stream improvements |
Дата | |
Msg-id | CA+hUKGKJ6pMvtXmmts87N7-0qOdMRmYZkm3GDw=mdzHNw4X61A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Some read stream improvements (Andres Freund <andres@anarazel.de>) |
Список | pgsql-hackers |
On Tue, Mar 18, 2025 at 5:56 AM Andres Freund <andres@anarazel.de> wrote: > So one thing is that the pin count differs by 1 at the start of the scan. No > idea why. > > I still don't know what drives the difference between freebsd and the rest, > but IIUC the reason this fails is just that we are holding too many buffers > pinned, due to some buffers being pinned outside of read_stream.c. I couldn't reproduce this on my local FreeBSD box, but I think I see one part of the problem: the cursor a few lines up has a stream with a higher distance holding a couple of pins. Not sure how the local buffer pool got into a state that caused that if it isn't doing the same on other machines, but anyway, if I read the test right you intend to pin strictly one page per cursor, so I tried saying so explicitly: - query = format($q$DECLARE %I CURSOR FOR SELECT ctid FROM test_temp WHERE ctid >= '( %s, 1)'::tid $q$, cursorname, i); + query = format($q$DECLARE %I CURSOR FOR SELECT ctid FROM test_temp WHERE ctid between '(%s, 1)'::tid and '(%s, 9999)'::tid $q$, cursorname, i, i); That passed on the FreeBSD CI task.
В списке pgsql-hackers по дате отправления: