aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2024-11-01 17:05:36 +0900
committerMichael Paquier <michael@paquier.xyz>2024-11-01 17:05:36 +0900
commite819bbb7c82ac048ffd865ba3f2d2c4933923c77 (patch)
tree5ce97d23cf75d62d7779f6efd0dc9ec04a2bba24 /src
parent07e9e28b56db4d8533b62b3a921f1e74aae26b1f (diff)
downloadpostgresql-e819bbb7c82ac048ffd865ba3f2d2c4933923c77.tar.gz
postgresql-e819bbb7c82ac048ffd865ba3f2d2c4933923c77.zip
Remove use of pg_memory_is_all_zeros() in bufpage.c
After a closer lookup, this makes the all-zero check of the page more expensive, so let's remove the new function call in bufpage.c. The maths of the check were also incorrect, checking that the page was full of zeros only for the first 1kB. This brings back the code to the state it was at 49d6c7d8daba. Per discussion with David Rowley and Bertrand Drouvot. Discussion: https://postgr.es/m/CAApHDvrXzPAr3FxoBuB7b3D-okNoNA2jxLun1rW8Yw5wkbqusw@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r--src/backend/storage/page/bufpage.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/backend/storage/page/bufpage.c b/src/backend/storage/page/bufpage.c
index 5ee1e58cd44..be6f1f62d29 100644
--- a/src/backend/storage/page/bufpage.c
+++ b/src/backend/storage/page/bufpage.c
@@ -89,8 +89,10 @@ PageIsVerifiedExtended(Page page, BlockNumber blkno, int flags)
{
PageHeader p = (PageHeader) page;
size_t *pagebytes;
+ int i;
bool checksum_failure = false;
bool header_sane = false;
+ bool all_zeroes = false;
uint16 checksum = 0;
/*
@@ -124,9 +126,18 @@ PageIsVerifiedExtended(Page page, BlockNumber blkno, int flags)
}
/* Check all-zeroes case */
+ all_zeroes = true;
pagebytes = (size_t *) page;
+ for (i = 0; i < (BLCKSZ / sizeof(size_t)); i++)
+ {
+ if (pagebytes[i] != 0)
+ {
+ all_zeroes = false;
+ break;
+ }
+ }
- if (pg_memory_is_all_zeros(pagebytes, (BLCKSZ / sizeof(size_t))))
+ if (all_zeroes)
return true;
/*