Re: question about implementing XA-ish functions
От | jesus@omniti.com |
---|---|
Тема | Re: question about implementing XA-ish functions |
Дата | |
Msg-id | 38889E8E-126E-4FB2-8CF5-6379E8008FA1@omniti.com обсуждение исходный текст |
Ответ на | Re: question about implementing XA-ish functions (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>) |
Список | pgsql-hackers |
This is perfect. It fires on both commit and rollback? And I can determine which? The system I'm interfacing with has 2PC so it should be a pretty tight fit. Thanks a ton Heikki! -- Theo Schlossnagle (mobile) http://omniti.com/is/theo-schlossnagle On Dec 18, 2009, at 10:34 AM, Heikki Linnakangas <heikki.linnakangas@enterprisedb.com > wrote: > Theo Schlossnagle wrote: >> I'm trying to implement a function that has some XA like properties. >> >> Is it possible to write a postgres extension function that fires >> when called within a pg transaction... however, the actions it >> takes need to be later committed or rolled back based on the >> containing transactions commital or not. Not having looked to >> deeply into this, I'm wondering if this is possible. Naively, my >> first hookpoint would be something like: >> >> allocate something in the transactions memory context and register >> a cleanup.... do my work. >> >> when the transaction memory context is cleaned up, my cleanup >> handler fires, I detect whether the txn was committed or rolledback >> and rightly mark my work as committed or rolled back. > > See RegisterXactCallback(). And then there's the ResourceOwners, that > you can use to register custom resources for cleanup. > > Of course, you'll never be able to make it atomic without 2PC. The > callbacks are executed very soon after after the commit record has > been > flushed to disk, so the window is small but it's there. > > -- > Heikki Linnakangas > EnterpriseDB http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: