Tom Lane wrote: > 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't set 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?
It looks like an exclusion list would be easier to read and maintain. Joe ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org