Ok, I made some more changes and the current patch is here (the same new
files list applies). If you already started looking at the other patch
I can give you the patch between both, if it makes your life easier.
Additionally I collected some to-do entries, maybe you find it useful.
I'm sure you'll rewrite lots of things, so in order not to collide I'll
go back to my shared dependencies patch :-) (regarding the two things I
said I'd work on, notifes are already supported; and large object
support seems more hassle than worth to implement and we could punt for
this release ... )
* Verify that TransactionIdIsInProgress is correct w.r.t.
TransactionIdIsPrepared.
* MultiXactId needs to be supported.
* Clean up the callback support.
* Make sure we don't lose a file descriptor after BasicOpenFile if we
ereport() after opening it. Maybe use FileNameOpenFile instead.
* Clean up the use of transaction identifiers. X/Open has a Transaction
Identifier standard definition, look that up.
* Is PREPARE TRANSACTION the best interface? What about marking a transaction
for preparing when it begins? Apparently the XA spec requires/prefers this.
* Fix the erroneous sinval interactions reported by the regression test.
* Make the relcache-file-delete logic separate from particular sinval messages.
* Check whether the TwoPhaseStateLock usage per GetPreparedTransactionXidList
is safe. (In particular in CheckPointTwoPhase)
* Rethink about using both WAL and a state file. (If we declared the
intent to persist a transaction when it begins, maybe we don't need
the state file at all.)
* Rework the XLog entries for prepare, commit prepared, abort prepared.
They seem messy.
* Verify the order of calls in PrepareTransaction.
* Why is the new code in GetOldestXmin dependent on allDbs? That seems bogus.
* Add a databaseId field in GlobalTransactionData, and check it where
appropiate.
--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"The first of April is the day we remember what we are
the other 364 days of the year" (Mark Twain)