I notice that ProcessUtility() calls SetQuerySnapshot() for FETCH
and COPY TO statements, and nothing else.

Seems to me this is very broken.  Isn't a query snapshot needed for
any utility command that might do database accesses?

			regards, tom lane

Thu, 19 Oct 2000 00:43:14 -0400
Tom Lane <tgl@sss.pgh.pa.us>
SetQuerySnapshot() for utility statements
> I notice that ProcessUtility() calls SetQuerySnapshot() for FETCH
> and COPY TO statements, and nothing else.
>
> Seems to me this is very broken.  Isn't a query snapshot needed for
> any utility command that might do database accesses?

Not needed. We don't support multi-versioning for schema operations.
More of that, sometimes it would be better to read *dirty* data from
system tables - so, no snapshot required.

What is really, hm, not good is that first SetQuerySnapshot defines
serializable snapshot for *all* transactions, even for ones with read
committed
isolevel: in the times of 6.5 I thought about ability to switch between
isolevels
inside single xaction - this is not required by standard and *bad* for
system:
just remember that vacuum doesn't clean up deleted tuples if there is some
transaction *potentially* interested in them. For read committed xactions
must be no serializable snapshot defined and MyProc->xmin must be
updated when *each*  top-level query begins.

Vadim



Wed, 18 Oct 2000 22:13:18 -0700
"Vadim Mikheev" <vmikheev@sectorbase.com>
Re: SetQuerySnapshot() for utility statements