Hackers,

I've been playing with nested transactions.  In fact I have already have
some things working, but there are some major complications I had not
seen.

First is the management of Snapshots (SnapshotDirty, QuerySnapshot,
SerializableSnapshot).  They are kept in global variables for each
backend.  Then there are DeferredTrigger objects, that are also global
objects.

For MemoryContexts I have put a member in the TransactionStateData
structure.  Maybe this is also workable for DeferredTrigger and
Snapshots?

Another idea would be using Lists for each object, managing them as
global stacks.  For DeferredTriggers, I could instead add the Xid to the
DeferredTriggerEventItem (DeferredTriggerEventData?) struct, and check
it in deferredTriggerInvokeEvents().

Is there another way?  What do people prefer?


Also, about deferred triggers: should they be deferred until toplevel
transaction commit, or only until their calling transaction commits?

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"La conclusion que podemos sacar de esos estudios es que
no podemos sacar ninguna conclusion de ellos" (Tanenbaum)


Tue, 25 Mar 2003 00:37:35 -0400
Alvaro Herrera <alvherre@dcc.uchile.cl>
Nested transactions