On Fri, Nov 25, 2022 at 8:17 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > Ted Yu <yuzhih...@gmail.com> writes: > > I wonder if we should check relation->rd_rules after the call > > to RelationBuildRuleLock(). > > That patch is both pointless and wrong. There is some > value in updating relhasrules in the catalog, so that future > relcache loads don't uselessly call RelationBuildRuleLock; > but we certainly can't try to do so right there. That being > the case, making the relcache be out of sync with what's on > disk cannot have any good consequences. The most likely > effect is that it would block later logic from fixing things > correctly. There is logic in VACUUM to clean out obsolete > relhasrules flags (see vac_update_relstats), but I suspect > that would no longer work properly if we did this. > > regards, tom lane > Hi, Thanks for evaluating the patch.
The change was originating from what we have in RelationCacheInitializePhase3(): if (relation->rd_rel->relhasrules && relation->rd_rules == NULL) { RelationBuildRuleLock(relation); if (relation->rd_rules == NULL) relation->rd_rel->relhasrules = false; FYI