Subject | Re: [Firebird-Architect] Feature request... |
---|---|
Author | Ann W. Harrison |
Post date | 2004-05-28T16:30:02Z |
At 06:21 PM 5/27/2004, unordained wrote:
way to differentiate between records created by a transaction before
and after an event.
start subtransaction B, how do you know if a new subtransaction
C is a child of A or B?
parent.
to work. The less easy part is allowing a child to see part but not
all of its parent's work.
can have multiple transactions active at a time.
Interesting. Does anybody else feel a need for subtransactions with
these semantics?
Regards,
Ann
>The semantics I would expect from nested transactions are as follows:OK.
>
>- A transaction is truly committed if it has
>committed and all parent transactions have committed.
>- A transaction is truly rolled back if it has rolled back orOK.
>any of its parent transactions have rolled back.
>- Sub-transactions would have the same isolation propertiesOK, more or less...
>relative to each other and their parent transaction as concurrent
>transactions have to each other and the state of the database (outside of
>any transaction) ... yes, sub-transactions could deadlock.
>I would expect sub-transactions to see everything their parentThat would be hard given the current way Firebird works. There's no
>transaction(s) did up until the spawning point,
way to differentiate between records created by a transaction before
and after an event.
>and I would expectOK, I guess.
>parent transactions to see everything their sub-transactions have
>done once they've committed (rejoining the parent, thus acting as
>if the parent has performed those actions directly)
>I would expect the global database level (and new top-levelFor read-committed, that makes sense.
>transactions) to potentially (based on isolation level) see
>changes by sub-transactions only once those sub-transactions'
>top-level transactions had committed.
>the order of sub-transactions would be irrelevant ... multipleOK. That's interesting. Assuming you have transaction A and
>sub-transactions could be started simultaneously, without
>previous sub-transactions having finalized yet.
start subtransaction B, how do you know if a new subtransaction
C is a child of A or B?
>I think of save-points as sequential along the path of actionsThat's correct. And, of course, their scope is the same as the
>by a transaction, allowing you to back up to any point along
>that linear path.
parent.
>I don't think I'd ask for the split/join semantics I've seenThat's good, I don't think the split would be any fun at all.
>mentioned in some papers.
>The non-linearity would be a big implementation problem, I'dActually, that's part of the transaction state, and could be twiddled
>think. While the MGA can store the back-versions appropriately,
>the inventory tables would have to handle more complex logic for
>determining which other transactions a given transaction can see
>into.
to work. The less easy part is allowing a child to see part but not
all of its parent's work.
>one transaction is currently expected to do one thing at a time --That's less of a problem than you might think, since a connection
>suddenly it'd be spawning multiple sub-transactions, all of
>which could be simultaneously active.
can have multiple transactions active at a time.
Interesting. Does anybody else feel a need for subtransactions with
these semantics?
Regards,
Ann