mirror of
https://github.com/postgres/postgres.git
synced 2025-12-19 17:02:53 +03:00
Suppress spurious Coverity warning in prune freeze logic
Adjust the prune_freeze_setup() parameter types of new_relfrozen_xid and new_relmin_mxid to prevent misleading Coverity analysis. heap_page_prune_and_freeze() compared these values against NULL when passing them to prune_freeze_setup(), causing Coverity to assume they could be NULL and flag a possible null-pointer dereference later, even though it occurs inside a directly related conditional. Reported-by: Coverity Author: Melanie Plageman <melanieplageman@gmail.com>
This commit is contained in:
@@ -158,8 +158,8 @@ typedef struct
|
|||||||
|
|
||||||
/* Local functions */
|
/* Local functions */
|
||||||
static void prune_freeze_setup(PruneFreezeParams *params,
|
static void prune_freeze_setup(PruneFreezeParams *params,
|
||||||
TransactionId new_relfrozen_xid,
|
TransactionId *new_relfrozen_xid,
|
||||||
MultiXactId new_relmin_mxid,
|
MultiXactId *new_relmin_mxid,
|
||||||
const PruneFreezeResult *presult,
|
const PruneFreezeResult *presult,
|
||||||
PruneState *prstate);
|
PruneState *prstate);
|
||||||
static void prune_freeze_plan(Oid reloid, Buffer buffer,
|
static void prune_freeze_plan(Oid reloid, Buffer buffer,
|
||||||
@@ -325,8 +325,8 @@ heap_page_prune_opt(Relation relation, Buffer buffer)
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
prune_freeze_setup(PruneFreezeParams *params,
|
prune_freeze_setup(PruneFreezeParams *params,
|
||||||
TransactionId new_relfrozen_xid,
|
TransactionId *new_relfrozen_xid,
|
||||||
MultiXactId new_relmin_mxid,
|
MultiXactId *new_relmin_mxid,
|
||||||
const PruneFreezeResult *presult,
|
const PruneFreezeResult *presult,
|
||||||
PruneState *prstate)
|
PruneState *prstate)
|
||||||
{
|
{
|
||||||
@@ -362,15 +362,15 @@ prune_freeze_setup(PruneFreezeParams *params,
|
|||||||
prstate->pagefrz.freeze_required = false;
|
prstate->pagefrz.freeze_required = false;
|
||||||
if (prstate->attempt_freeze)
|
if (prstate->attempt_freeze)
|
||||||
{
|
{
|
||||||
prstate->pagefrz.FreezePageRelfrozenXid = new_relfrozen_xid;
|
Assert(new_relfrozen_xid && new_relmin_mxid);
|
||||||
prstate->pagefrz.NoFreezePageRelfrozenXid = new_relfrozen_xid;
|
prstate->pagefrz.FreezePageRelfrozenXid = *new_relfrozen_xid;
|
||||||
prstate->pagefrz.FreezePageRelminMxid = new_relmin_mxid;
|
prstate->pagefrz.NoFreezePageRelfrozenXid = *new_relfrozen_xid;
|
||||||
prstate->pagefrz.NoFreezePageRelminMxid = new_relmin_mxid;
|
prstate->pagefrz.FreezePageRelminMxid = *new_relmin_mxid;
|
||||||
|
prstate->pagefrz.NoFreezePageRelminMxid = *new_relmin_mxid;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Assert(new_relfrozen_xid == InvalidTransactionId &&
|
Assert(!new_relfrozen_xid && !new_relmin_mxid);
|
||||||
new_relmin_mxid == InvalidMultiXactId);
|
|
||||||
prstate->pagefrz.FreezePageRelminMxid = InvalidMultiXactId;
|
prstate->pagefrz.FreezePageRelminMxid = InvalidMultiXactId;
|
||||||
prstate->pagefrz.NoFreezePageRelminMxid = InvalidMultiXactId;
|
prstate->pagefrz.NoFreezePageRelminMxid = InvalidMultiXactId;
|
||||||
prstate->pagefrz.FreezePageRelfrozenXid = InvalidTransactionId;
|
prstate->pagefrz.FreezePageRelfrozenXid = InvalidTransactionId;
|
||||||
@@ -823,12 +823,8 @@ heap_page_prune_and_freeze(PruneFreezeParams *params,
|
|||||||
|
|
||||||
/* Initialize prstate */
|
/* Initialize prstate */
|
||||||
prune_freeze_setup(params,
|
prune_freeze_setup(params,
|
||||||
new_relfrozen_xid ?
|
new_relfrozen_xid, new_relmin_mxid,
|
||||||
*new_relfrozen_xid : InvalidTransactionId,
|
presult, &prstate);
|
||||||
new_relmin_mxid ?
|
|
||||||
*new_relmin_mxid : InvalidMultiXactId,
|
|
||||||
presult,
|
|
||||||
&prstate);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Examine all line pointers and tuple visibility information to determine
|
* Examine all line pointers and tuple visibility information to determine
|
||||||
|
|||||||
Reference in New Issue
Block a user