Re: [HACKERS] logical decoding of two-phase transactions
От | Nikhil Sontakke |
---|---|
Тема | Re: [HACKERS] logical decoding of two-phase transactions |
Дата | |
Msg-id | CAMGcDxfgg8yP0MsdKRuqwihkrQF=0Mz9Se+0paNGADWaexULjQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] logical decoding of two-phase transactions (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: [HACKERS] logical decoding of two-phase transactions
|
Список | pgsql-hackers |
Hi Andres, > So what if we, at the begin / end of cache miss handling, re-check if > the to-be-decoded transaction is still in-progress (or has > committed). And we throw an error if that happened. That error is then > caught in reorderbuffer, the in-progress-xact aborted callback is > called, and processing continues (there's a couple nontrivial details > here, but it should be doable). > > The biggest issue is what constitutes a "cache miss". It's fairly > trivial to do this for syscache / relcache, but that's not sufficient: > there's plenty cases where catalogs are accessed without going through > either. But as far as I can tell if we declared that all historic > accesses have to go through systable_beginscan* - which'd imo not be a > crazy restriction - we could put the checks at that layer. > Documenting that historic accesses go through systable_* APIs does seem reasonable. In our earlier discussions, we felt asking plugin writers to do anything along these lines was too onerous and cumbersome to expect. > That'd require that an index lookup can't crash if the corresponding > heap entry doesn't exist (etc), but that's something we need to handle > anyway. The issue that multiple separate catalog lookups need to be > coherent (say Robert's pg_class exists, but pg_attribute doesn't > example) is solved by virtue of the the pg_attribute lookups failing if > the transaction aborted. > > Am I missing something here? > Are you suggesting we have a: PG_TRY() { Catalog_Access(); } PG_CATCH() { Abort_Handling(); } here? Regards, Nikhils
В списке pgsql-hackers по дате отправления: