Re: Add pg_buffercache_evict_all() and pg_buffercache_mark_dirty[_all]() functions
От | Nazir Bilal Yavuz |
---|---|
Тема | Re: Add pg_buffercache_evict_all() and pg_buffercache_mark_dirty[_all]() functions |
Дата | |
Msg-id | CAN55FZ2Hi4uAeCcNAE1EH7DzxA0qwqt64SMJanwM0UKSqG6dCA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Add pg_buffercache_evict_all() and pg_buffercache_mark_dirty[_all]() functions (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Add pg_buffercache_evict_all() and pg_buffercache_mark_dirty[_all]() functions
|
Список | pgsql-hackers |
Hi, Thank you for looking into this! On Thu, 10 Apr 2025 at 23:06, Robert Haas <robertmhaas@gmail.com> wrote: > > On Tue, Mar 18, 2025 at 6:03 PM Aidar Imamov <a.imamov@postgrespro.ru> wrote: > > > for (int buf = 1; buf < NBuffers; buf++) > > Mb it would be more correct to use <= NBuffers? > > I agree that (int buf = 1; buf < NBuffers; buf++) isn't right because > that iterates one fewer times than the number of buffers. What was > ultimately committed was: > > + for (int buf = 1; buf <= NBuffers; buf++) > + { > + BufferDesc *desc = GetBufferDescriptor(buf - 1); > > Curiously, there is no other instance of <= NBuffers in the code. > Elsewhere we instead do: > > for (i = 0; i < NBuffers; i++) > { > BufferDesc *bufHdr = GetBufferDescriptor(i); > > Or in BufferSync: > > for (buf_id = 0; buf_id < NBuffers; buf_id++) > { > BufferDesc *bufHdr = GetBufferDescriptor(buf_id); > > Nonetheless what was committed seems pretty defensible, because we > have lots of other places that do GetBufferDescriptor(buffer - 1) and > similar. Alternating between 0-based indexing and 1-based indexing > like this seems rather error-prone somehow. :-( I understand your point. I did it like that because bufferids start from 1 and go to NBuffers inclusive in the pg_buffercache view, so it seems more natural to me to implement it like that. I am okay to replace these loops with [1] to make it standart everywhere: [1] for (int buf = 0; buf < NBuffers; buf++) { BufferDesc *desc = GetBufferDescriptor(buf); -- Regards, Nazir Bilal Yavuz Microsoft
В списке pgsql-hackers по дате отправления: