Обсуждение: pgsql: Don't initialize page in {vm,fsm}_extend(), not needed
Don't initialize page in {vm,fsm}_extend(), not needed The read path needs to be able to initialize pages anyway, as relation extensions are not durable. By avoiding initializing pages, we can, in a future patch, extend the relation by multiple blocks at once. Using smgrextend() for {vm,fsm}_extend() is not a good idea in general, as at least one page of the VM/FSM will be read immediately after, always causing a cache miss, requiring us to read content we just wrote. Discussion: https://postgr.es/m/20230301223515.pucbj7nb54n4i4nv@awork3.anarazel.de Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/3d6a98457d8e21d85bed86cfd3e1d1df1b260721 Modified Files -------------- src/backend/access/heap/visibilitymap.c | 6 +----- src/backend/storage/freespace/freespace.c | 5 +---- 2 files changed, 2 insertions(+), 9 deletions(-)
Andres Freund <andres@anarazel.de> writes: > Don't initialize page in {vm,fsm}_extend(), not needed Various buildfarm members are complaining about under-braced initializations added by this commit. visibilitymap.c: In function \342\200\230vm_extend\342\200\231: visibilitymap.c:625:2: warning: missing braces around initializer [-Wmissing-braces] PGAlignedBlock pg = {0}; ^ visibilitymap.c:625:2: warning: (near initialization for \342\200\230pg.data\342\200\231) [-Wmissing-braces] freespace.c: In function \342\200\230fsm_extend\342\200\231: freespace.c:611:2: warning: missing braces around initializer [-Wmissing-braces] PGAlignedBlock pg = {0}; ^ freespace.c:611:2: warning: (near initialization for \342\200\230pg.data\342\200\231) [-Wmissing-braces] This is from buri, similar from curculio, dragonet, idiacanthus, xenodermus, etc regards, tom lane
On Wed, Apr 05, 2023 at 07:19:48PM -0400, Tom Lane wrote: > freespace.c: In function \342\200\230fsm_extend\342\200\231: > freespace.c:611:2: warning: missing braces around initializer [-Wmissing-braces] > PGAlignedBlock pg = {0}; > ^ > freespace.c:611:2: warning: (near initialization for \342\200\230pg.data\342\200\231) [-Wmissing-braces] > > This is from buri, similar from curculio, dragonet, idiacanthus, > xenodermus, etc That's the same as d937904, it seems, requiring a {{0}}. -- Michael
Вложения
Hi, On 2023-04-05 19:19:48 -0400, Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: > > Don't initialize page in {vm,fsm}_extend(), not needed > > Various buildfarm members are complaining about under-braced > initializations added by this commit. > > visibilitymap.c: In function \342\200\230vm_extend\342\200\231: > visibilitymap.c:625:2: warning: missing braces around initializer [-Wmissing-braces] > PGAlignedBlock pg = {0}; > ^ > visibilitymap.c:625:2: warning: (near initialization for \342\200\230pg.data\342\200\231) [-Wmissing-braces] > > freespace.c: In function \342\200\230fsm_extend\342\200\231: > freespace.c:611:2: warning: missing braces around initializer [-Wmissing-braces] > PGAlignedBlock pg = {0}; > ^ > freespace.c:611:2: warning: (near initialization for \342\200\230pg.data\342\200\231) [-Wmissing-braces] > > This is from buri, similar from curculio, dragonet, idiacanthus, > xenodermus, etc I really don't see the point of placating old compilers for things like this. It's just inflicting pain on ourselves without any reward. Just to be clear: I didn't knowingly trigger the warning. Either way, an upcoming commit will implement vm_extend() / fsm_extend() with generic code, then the warning will be gone. Greetings, Andres Freund
Hi, On 2023-04-05 16:58:41 -0700, Andres Freund wrote: > On 2023-04-05 19:19:48 -0400, Tom Lane wrote: > > Andres Freund <andres@anarazel.de> writes: > > > Don't initialize page in {vm,fsm}_extend(), not needed > > > > Various buildfarm members are complaining about under-braced > > initializations added by this commit. > > > > visibilitymap.c: In function \342\200\230vm_extend\342\200\231: > > visibilitymap.c:625:2: warning: missing braces around initializer [-Wmissing-braces] > > PGAlignedBlock pg = {0}; > > ^ > > visibilitymap.c:625:2: warning: (near initialization for \342\200\230pg.data\342\200\231) [-Wmissing-braces] > > > > freespace.c: In function \342\200\230fsm_extend\342\200\231: > > freespace.c:611:2: warning: missing braces around initializer [-Wmissing-braces] > > PGAlignedBlock pg = {0}; > > ^ > > freespace.c:611:2: warning: (near initialization for \342\200\230pg.data\342\200\231) [-Wmissing-braces] > > > > This is from buri, similar from curculio, dragonet, idiacanthus, > > xenodermus, etc > > I really don't see the point of placating old compilers for things like > this. It's just inflicting pain on ourselves without any reward. Just to be > clear: I didn't knowingly trigger the warning. > > Either way, an upcoming commit will implement vm_extend() / fsm_extend() with > generic code, then the warning will be gone. Done as of fcdda1e4b50249c344e510ea93d4bd74d2743430 - Andres