Re: Wrong usage of RelationNeedsWAL - Mailing list pgsql-hackers

From Andres Freund
Subject Re: Wrong usage of RelationNeedsWAL
Date
Msg-id 20210115213054.c5wc3dogjx55jz6x@alap3.anarazel.de
Whole thread Raw
In response to Wrong usage of RelationNeedsWAL  (Kyotaro Horiguchi <horikyota.ntt@gmail.com>)
List pgsql-hackers
Hi,

On 2021-01-13 16:07:05 +0900, Kyotaro Horiguchi wrote:
> Commit c6b92041d3 changed the definition of RelationNeedsWAL().
> 
> -#define RelationNeedsWAL(relation) \
> -    ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT)
> +#define RelationNeedsWAL(relation)                                        \
> +    ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT &&    \
> +     (XLogIsNeeded() ||                                                    \
> +      (relation->rd_createSubid == InvalidSubTransactionId &&            \
> +       relation->rd_firstRelfilenodeSubid == InvalidSubTransactionId)))
> 
> On the other hand I found this usage.
> 
> plancat.c:128 get_relation_info()
> >    /* Temporary and unlogged relations are inaccessible during recovery. */
> >    if (!RelationNeedsWAL(relation) && RecoveryInProgress())
> >        ereport(ERROR,
> >                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
> >                 errmsg("cannot access temporary or unlogged relations during recovery")));
> 
> It works as expected accidentally, but the meaning is off.
> WAL-skipping optmization is irrelevant to the condition for the error.
> 
> I found five misues in the tree. Please find the attached.

Noah?

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Key management with tests
Next
From: "David G. Johnston"
Date:
Subject: Re: WIP: document the hook system