Tom Lane wrote:
"Florian G. Pflug" <[EMAIL PROTECTED]> writes:
I came up with the following plan for both inval events and locks
.) Store two flags in the commit record of a transaction, for
    "transaction generated inval events" and "transaction held an
    access exlusive lock".
.) Upon replay, block until no transactions are running (for
    "transaction held an exclusive lock") before replaying the
    record, or flush the caches after replaying it (for
    "transaction generated inval events").

This does not work; the lock has to be taken earlier than that.
(See for instance VACUUM's truncate calls.)  Not to mention that
you have converted "exclusive lock on one table" to "exclusive lock
on every table", which is even worse than the idea of converting
per-table cache flushes to system-wide ones.

I'll check what VACUUM is doing.. I primarily had CLUSTER and TRUNCATE
in mind.

That "exclusive lock on one table becomes exclusive lock on all tables"
issue can (as I wrote in the part of my mail that you sniped) be
solved I think by storing a list of OIDs instead of a flag for the
locks and inval events.

greetings, Florian Pflug

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to