Re: pg14b1 stuck in lazy_scan_prune/heap_page_prune of pg_statistic
От | Andres Freund |
---|---|
Тема | Re: pg14b1 stuck in lazy_scan_prune/heap_page_prune of pg_statistic |
Дата | |
Msg-id | 20210621122919.2qhu3pfugxxp3cji@alap3.anarazel.de обсуждение исходный текст |
Ответ на | Re: pg14b1 stuck in lazy_scan_prune/heap_page_prune of pg_statistic (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: pg14b1 stuck in lazy_scan_prune/heap_page_prune of pg_statistic
|
Список | pgsql-hackers |
Hi, On 2021-06-16 12:12:23 -0700, Andres Freund wrote: > Could you share your testcase? I've been working on a series of patches > to address this (I'll share in a bit), and I've run quite a few tests, > and didn't hit any infinite loops. Sorry for not yet doing that. Unfortunately I have an ongoing family health issue (& associated travel) claiming time and energy :(. I've pushed the minimal fix due to beta 2. Beyond beta 2 I am thinking of the below to unify the horizon determination: static inline GlobalVisHorizonKind GlobalVisHorizonKindForRel(Relation rel) { if (!rel) return VISHORIZON_SHARED; /* * Other relkkinds currently don't contain xids, nor always the necessary * logical decoding markers. */ Assert(rel->rd_rel->relkind == RELKIND_RELATION || rel->rd_rel->relkind == RELKIND_MATVIEW || rel->rd_rel->relkind == RELKIND_TOASTVALUE); if (rel->rd_rel->relisshared || RecoveryInProgress()) return VISHORIZON_SHARED; else if (IsCatalogRelation(rel) || RelationIsAccessibleInLogicalDecoding(rel)) return VISHORIZON_CATALOG; else if (!RELATION_IS_LOCAL(rel)) return VISHORIZON_DATA; else return VISHORIZON_TEMP; } That's then used in GetOldestNonRemovableTransactionId(), GlobalVisTestFor(). Makes sense? Regards, Andres
В списке pgsql-hackers по дате отправления: