Re: PATCH: logical_work_mem and logical streaming of large in-progress transactions
От | Tom Lane |
---|---|
Тема | Re: PATCH: logical_work_mem and logical streaming of large in-progress transactions |
Дата | |
Msg-id | 1075530.1600099936@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: PATCH: logical_work_mem and logical streaming of large in-progress transactions (Amit Kapila <amit.kapila16@gmail.com>) |
Ответы |
Re: PATCH: logical_work_mem and logical streaming of large in-progress transactions
|
Список | pgsql-hackers |
Amit Kapila <amit.kapila16@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
В списке pgsql-hackers по дате отправления: