Re: SetQuerySnapshot() for utility statements
От | Mikheev, Vadim |
---|---|
Тема | Re: SetQuerySnapshot() for utility statements |
Дата | |
Msg-id | 8F4C99C66D04D4118F580090272A7A23018D74@SECTORBASE1 обсуждение исходный текст |
Ответ на | SetQuerySnapshot() for utility statements (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: SetQuerySnapshot() for utility statements
|
Список | pgsql-hackers |
> 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
В списке pgsql-hackers по дате отправления: