Tom Lane wrote:
> Chris Browne <cbbrowne@acm.org> writes:
>> Note that we required that the "provider transaction" have the
>> attributes IsXactIsoLevelSerializable and XactReadOnly both being
>> true, so we have the mandates that the resultant backend process:
>
>> a) Is in read only mode, and
>> b) Is in serializable mode.
>
> If XactReadOnly were a "hard" read only constraint, that argument
> might be worth the electrons it's written on. I quote TFM:
>
> Now I think someone was looking into a "hard" read only mode for
> use in doing read-only queries against a PITR slave; if that
> ever happens it might be adaptable to serve this purpose too.
> But we haven't got it today.
That would haven been me then ;-)
I think that lazy xid assignment actually got us 90% of the way towards
a "hard" transaction read-only constraint - nearly all data-modfying
operation surely depend on the xact having an xid assigned, no? (The
only exception might be nextval() and friends).
I seem to remember there being some pushback to the idea of changing the
semantics of "set transaction isolation read only" from "soft" to "hard"
semantics though - on the basis that it might break existing
applications. If that has changed (or my memory tricks me ;-) ) I'd
volunteer to create a patch for 8.4 to make "set transaction read only"
a hard constraint.
regards, Florian Pflug