Thread: nbtpage.c:356 Expression 'metad->btm_root != P_NONE' is always false.

nbtpage.c:356 Expression 'metad->btm_root != P_NONE' is always false.

From
Антон Пацев
Date:
Hello!
I am trying to help for Project PostgreSQL. Check source code PostgreSQL by PVS-Studio.
PVS-Studio have many issue, but some issue is interesting.
nbtpage.c:356HighV547Expression 'metad->btm_root != 0' is always false.
Source file src/backend/access/nbtree/nbtpage.c

Re: nbtpage.c:356 Expression 'metad->btm_root != P_NONE' is always false.

From
Tom Lane
Date:
=?UTF-8?B?0JDQvdGC0L7QvSDQn9Cw0YbQtdCy?= <patsev.anton@gmail.com> writes:
> I am trying to help for Project PostgreSQL. Check source code PostgreSQL by
> PVS-Studio.
> PVS-Studio have many issue, but some issue is interesting.
> nbtpage.c:356 <http://localhost/sources/nbtpage.c_24.html#ln356> *High* V547
> <https://www.viva64.com/en/w/v547/> Expression 'metad->btm_root != 0' is
> always false.

This is incorrect.  The tool apparently doesn't understand that the
storage pointed to by metad can be changed by other processes in the
interval where we don't hold a lock on the buffer.

            regards, tom lane