Remove over-eager assertion in ExtendBufferedRelTo()
authorAndres Freund <[email protected]>
Sun, 21 May 2023 16:48:37 +0000 (09:48 -0700)
committerAndres Freund <[email protected]>
Sun, 21 May 2023 16:53:49 +0000 (09:53 -0700)
The assertion checked that the size of the relation is not "too large" - but
the code is explicitly dealing with the possibility of another backend
extending the relation concurrently. In that case the new relation size could
be bigger than what the current backend needs, wrongly triggering an assertion
failure.

Unfortunately it is hard to write a reliable and affordable regression tests
for this, as a lot of concurrency is needed to encounter the bug.

Introduced in 31966b151e6a.

Reported-by: Melanie Plageman <[email protected]>
src/backend/storage/buffer/bufmgr.c

index aafec4a09d5851fda155d568766b10f4d37c4240..3c59bbd04ea702cbe62fa0bbb892fbbd18cc5937 100644 (file)
@@ -953,7 +953,6 @@ ExtendBufferedRelTo(ExtendBufferedWhat eb,
                                                                                          buffers, &extended_by);
 
                current_size = first_block + extended_by;
-               Assert(current_size <= extend_to);
                Assert(num_pages != 0 || current_size >= extend_to);
 
                for (int i = 0; i < extended_by; i++)