Gregory Stark wrote: > "Alvaro Herrera" <[EMAIL PROTECTED]> writes: > > > The other question is about CommitTransactionCommand. Currently my > > EOXact routine barfs for every snapshot not unregistered on main > > transaction commit -- a leak. I see this as a good thing, however it > > forced me to be more meticulous about not having ActiveSnapshot be set > > in commands that have multiple transactions like VACUUM, multitable > > CLUSTER and CREATE INDEX CONCURRENTLY. > > I believe ActiveSnapshot has to be set during CREATE INDEX CONCURRENTLY if > it's an expression index which calls a function which needs a snapshot...
Yeah, it is set at that point -- it is unset just before CommitTransactionCommand is called. Same for multitable CLUSTER -- it certainly does need a snapshot, but it needs to unregister it just before committing at the end of processing each table. > AFAICT VACUUM had better not ever need a snapshot because its xmin isn't > included in other vacuum commands' globalxmin so there's no guarantee that if > it had a snapshot that the tuples visible in that snapshot wouldn't disappear > out from under it. Yeah, I neglected to mention that this is just for VACUUM FULL (which does have its xmin included in snapshots). -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc. -- Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-patches