Re: Fix an incorrect assertion condition in mdwritev().

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Fix an incorrect assertion condition in mdwritev().
Дата
Msg-id 1933.1716695945@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Fix an incorrect assertion condition in mdwritev().  (Michael Paquier <michael@paquier.xyz>)
Ответы Re: Fix an incorrect assertion condition in mdwritev().
Список pgsql-hackers
Michael Paquier <michael@paquier.xyz> writes:
> On Sat, May 25, 2024 at 11:52:22PM +0800, Xing Guo wrote:
>> #ifdef CHECK_WRITE_VS_EXTEND
>> -    Assert(blocknum < mdnblocks(reln, forknum));
>> +    Assert(blocknum + nblocks <= mdnblocks(reln, forknum));
>> #endif

> Yes, it looks like you're right that this can be made stricter,
> computing the number of blocks we're adding in the number calculated
> (aka adding one block to this number fails immediately at initdb).

Hmm ... I agree that this is better normally.  But there's an
edge case where it would fail to notice a problem that the
existing code does notice: if blocknum is close to UINT32_MAX
and adding nblocks causes it to wrap around to a small value.
Is there an inexpensive way to catch that?  (If not, it's
not a reason to block this patch; but let's think about it
while we're here.)

            regards, tom lane



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Alexander Korotkov
Дата:
Сообщение: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: AIX support