Amit Kapila <amit.kapil...@gmail.com> writes: > The attached patch will fix the issue. What do you think?
I think it'd be cleaner to separate the initialization of a new entry from validation altogether, along the lines of /* Find cached function info, creating if not found */ oldctx = MemoryContextSwitchTo(CacheMemoryContext); entry = (RelationSyncEntry *) hash_search(RelationSyncCache, (void *) &relid, HASH_ENTER, &found); MemoryContextSwitchTo(oldctx); Assert(entry != NULL); if (!found) { /* immediately make a new entry valid enough to satisfy callbacks */ entry->schema_sent = false; entry->streamed_txns = NIL; entry->replicate_valid = false; /* are there any other fields we should clear here for safety??? */ } /* Fill it in if not valid */ if (!entry->replicate_valid) { List *pubids = GetRelationPublications(relid); ... BTW, unless someone has changed the behavior of dynahash when I wasn't looking, those MemoryContextSwitchTos shown above are useless. Also, why does the comment refer to a "function" entry? regards, tom lane