Hello,
At Thu, 9 Jul 2026 11:24:31 +0900, Fujii Masao <masao.fujii@gmail.com> wrote in
> I think BuildRelationList() should exclude temporary relations without
> RELKIND_HAS_STORAGE(), matching the existing behavior for
> non-temporary relations. Attached patch implements this.
...
> fails without processing the shared catalogs, yet they are still marked
> as processed. As a result, later workers skip them, and checksum
> enabling can complete successfully even though the shared catalogs
> were never processed.
>
> To fix this, we should mark the shared catalogs as processed only after
> a worker completes successfully. Attached patch also implements this.
>
> Thoughts?
The changes look functionally correct to me.
A couple of minor comments:
1. In BuildRelationList(), if relations without storage should be
excluded regardless of whether they are temporary or non-temporary, I
would personally prefer moving the RELKIND_HAS_STORAGE() check before
the persistence check. That would make the intent a bit clearer.
2. In ProcessAllDatabases(), I find it slightly easier to read if the
dropped-database case is handled explicitly first, perhaps by
continuing early, so that DATACHECKSUMSWORKER_SUCCESSFUL remains the
default result for the normal path. I'm not completely sure whether
that check should go just before or just after
pgstat_progress_update_param(), though.
Both are mostly matters of style, so please feel free to ignore them
if you prefer the current structure.
Regards,
--
Kyotaro Horiguchi
NTT Open Source Software Center