@@ -652,19 +652,28 @@ finish_delayed_invalidation(void)
652652{
653653PartParentSearch search ;
654654Oid parent ;
655+ List * fresh_rels = delayed_invalidation_parent_rels ;
655656
656657parent = get_parent_of_partition (vague_rel ,& search );
657658
658659switch (search )
659660{
660661/* It's still parent */
661662case PPS_ENTRY_PART_PARENT :
662- try_perform_parent_refresh (parent );
663+ {
664+ /* Skip if we've already refreshed this parent */
665+ if (!list_member_oid (fresh_rels ,parent ))
666+ try_perform_parent_refresh (parent );
667+ }
663668break ;
664669
665670/* It *might have been* parent before (not in PATHMAN_CONFIG) */
666671case PPS_ENTRY_PARENT :
667- remove_pathman_relation_info (parent );
672+ {
673+ /* Skip if we've already refreshed this parent */
674+ if (!list_member_oid (fresh_rels ,parent ))
675+ try_perform_parent_refresh (parent );
676+ }
668677break ;
669678
670679/* How come we still don't know?? */
@@ -793,7 +802,6 @@ try_syscache_parent_search(Oid partition, PartParentSearch *status)
793802else
794803{
795804Relation relation ;
796- Snapshot snapshot ;
797805ScanKeyData key [1 ];
798806SysScanDesc scan ;
799807HeapTuple inheritsTuple ;
@@ -809,7 +817,6 @@ try_syscache_parent_search(Oid partition, PartParentSearch *status)
809817BTEqualStrategyNumber ,F_OIDEQ ,
810818ObjectIdGetDatum (partition ));
811819
812- snapshot = RegisterSnapshot (GetLatestSnapshot ());
813820scan = systable_beginscan (relation ,InheritsRelidSeqnoIndexId ,
814821 true,NULL ,1 ,key );
815822
@@ -835,7 +842,6 @@ try_syscache_parent_search(Oid partition, PartParentSearch *status)
835842}
836843
837844systable_endscan (scan );
838- UnregisterSnapshot (snapshot );
839845heap_close (relation ,AccessShareLock );
840846
841847return parent ;