Re: Where to call SetQuerySnapshot

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Where to call SetQuerySnapshot
Дата
Msg-id 13553.1034097685@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Where to call SetQuerySnapshot  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
I said:
> ...  So I had
> been thinking of pulling it out to postgres.c anyway.  I will do that.

I did this and ended up with a rather long list of statement types that
might need a snapshot:
               elog(DEBUG2, "ProcessUtility");
               /* set snapshot if utility stmt needs one */               /* XXX maybe cleaner to list those that
shouldn'tset one? */               if (IsA(utilityStmt, AlterTableStmt) ||                   IsA(utilityStmt,
ClusterStmt)||                   IsA(utilityStmt, CopyStmt) ||                   IsA(utilityStmt, ExecuteStmt) ||
           IsA(utilityStmt, ExplainStmt) ||                   IsA(utilityStmt, IndexStmt) ||
IsA(utilityStmt,PrepareStmt) ||                   IsA(utilityStmt, ReindexStmt))                   SetQuerySnapshot();
 

(Anything that can call the planner or might create entries in
functional indexes had better set a snapshot, thus stuff like
ReindexStmt has the issue.)

I wonder if we should turn this around, and set a snapshot for all
utility statements that can't show cause why they don't need one.
Offhand, TransactionStmt, FetchStmt, and VariableSet/Show/Reset
might be the only ones that need be excluded.  Comments?
        regards, tom lane


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Neil Conway
Дата:
Сообщение: Re: pg_dump file question
Следующее
От: Joe Conway
Дата:
Сообщение: Re: Where to call SetQuerySnapshot