Re: Add isCatalogRel in rmgrdesc

Поиск
Список
Период
Сортировка
От Masahiko Sawada
Тема Re: Add isCatalogRel in rmgrdesc
Дата
Msg-id CAD21AoCyuCACJ_gM7SGhw7FbDf2+7cTb7imyduhfNSTzfN+w5g@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Add isCatalogRel in rmgrdesc  (Michael Paquier <michael@paquier.xyz>)
Ответы Re: Add isCatalogRel in rmgrdesc  ("Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com>)
Список pgsql-hackers
On Tue, Dec 12, 2023 at 6:15 PM Michael Paquier <michael@paquier.xyz> wrote:
>
> On Tue, Dec 12, 2023 at 09:23:46AM +0100, Drouvot, Bertrand wrote:
> > Please find attached a patch to add this field in the related rmgrdesc (i.e
> > all the ones that already provide the snapshotConflictHorizon except the one
> > related to xl_heap_visible: indeed a new bit was added in its flag field in 6af1793954
> > instead of adding the isCatalogRel bool).
> >
> > I think it's worth it, as this new field could help diagnose conflicts issues (if any).

+1

-   appendStringInfo(buf, "rel %u/%u/%u; blk %u; snapshotConflictHorizon %u:%u",
+   appendStringInfo(buf, "rel %u/%u/%u; blk %u;
snapshotConflictHorizon %u:%u, isCatalogRel %u",
                     xlrec->locator.spcOid, xlrec->locator.dbOid,
                     xlrec->locator.relNumber, xlrec->block,
                     EpochFromFullTransactionId(xlrec->snapshotConflictHorizon),
-                    XidFromFullTransactionId(xlrec->snapshotConflictHorizon));
+                    XidFromFullTransactionId(xlrec->snapshotConflictHorizon),
+                    xlrec->isCatalogRel);

The patch prints isCatalogRel, a bool field, as %u. But other rmgrdesc
implementations seem to use different ways. For instance in spgdesc.c,
we print flag name if it's set: (newPage and postfixBlkSame are bool
fields):

                appendStringInfo(buf, "prefixoff: %u, postfixoff: %u",
                                 xlrec->offnumPrefix,
                                 xlrec->offnumPostfix);
                if (xlrec->newPage)
                    appendStringInfoString(buf, " (newpage)");
                if (xlrec->postfixBlkSame)
                    appendStringInfoString(buf, " (same)");

whereas in hashdesc.c, we print either 'T' of 'F':

                appendStringInfo(buf, "clear_dead_marking %c, is_primary %c",
                                 xlrec->clear_dead_marking ? 'T' : 'F',
                                 xlrec->is_primary_bucket_page ? 'T' : 'F');

Is it probably worth considering such formats? I prefer to always
print the field name like the current patch and hashdesc.c since it's
easier to parse it. But I'm fine with either way to show the field
value.

Regards,

--
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com



В списке pgsql-hackers по дате отправления:

Предыдущее
От: John Naylor
Дата:
Сообщение: Re: [PoC] Improve dead tuple storage for lazy vacuum
Следующее
От: "Andrey M. Borodin"
Дата:
Сообщение: Re: Transaction timeout