Re: Wrong usage of RelationNeedsWAL
От | Andres Freund |
---|---|
Тема | Re: Wrong usage of RelationNeedsWAL |
Дата | |
Msg-id | 20210115213054.c5wc3dogjx55jz6x@alap3.anarazel.de обсуждение исходный текст |
Ответ на | Wrong usage of RelationNeedsWAL (Kyotaro Horiguchi <horikyota.ntt@gmail.com>) |
Список | 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 по дате отправления: