From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "scott(dot)marlowe" <scott(dot)marlowe(at)ihs(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Changing behavior of BEGIN...sleep...do something...COMMIT |
Date: | 2003-03-31 18:21:02 |
Message-ID: | 24175.1049134862@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
"scott.marlowe" <scott(dot)marlowe(at)ihs(dot)com> writes:
> On Fri, 28 Mar 2003, Tom Lane wrote:
>> It seems to me that it'd be fairly easy to make BEGIN cause only
>> a local state change in the backend; the actual transaction need not
>> start until the first subsequent command is received. It's already
>> true that the transaction snapshot is not frozen at BEGIN time, but
>> only when the first DML or DDL command is received; so this would
>> have no impact on the client-visible semantics. But a BEGIN-then-
>> sleep-for-awhile client wouldn't interfere with VACUUM anymore.
> What about serializable mode? Wouldn't that break it?
No. Even in serializable mode, we don't set the snapshot until the
first DML/DDL command. (This *has* to be true because if you want to
take any locks via explicit LOCK commands, you need to be able to issue
those before the snapshot is frozen. Doesn't do you much good to lock
a table if your view of the table will date from before the lock.)
AFAICT the only part of this proposal that would result in any change in
user-visible behavior is the proposal to alter the point where now() is
frozen. But that's really an independent question.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2003-03-31 18:24:42 | Re: What's wrong |
Previous Message | scott.marlowe | 2003-03-31 18:06:08 | Re: Changing behavior of BEGIN...sleep...do something...COMMIT |