Re: Changing behavior of BEGIN...sleep...do something...COMMIT

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

In response to

Browse pgsql-hackers by date

  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