Re: GetTransactionSnapshot() in enum.c

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andres Freund <andres(at)2ndquadrant(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org, Robert Haas <robertmhaas(at)gmail(dot)com>
Subject: Re: GetTransactionSnapshot() in enum.c
Date: 2013-08-19 17:41:37
Message-ID: 22342.1376934097@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Andres Freund <andres(at)2ndquadrant(dot)com> writes:
> ISTM that we shouldn't use GetTransactionSnapshot() in enum.c but
> GetLatestSnapshot() in <= 9.3 and NULL/GetCatalogSnapshot() > 9.3.

> typecache.c's usage was converted to GetLatestSnapshot() but enum.c's
> was not.

That was intentional, see the comments for commit
9ad45c18b6c8d03ce18a26223eb0d15e900c7a2c.

Possibly we should rethink this in HEAD given that we don't do SnapshotNow
scans anymore, but I'm disinclined to do so in back branches.

BTW, I notice that the MVCC-catalog-scans patch summarily asserts that
RenumberEnumType no longer poses any concurrency hazards. I doubt that's
true: isn't it still possible that pg_enum rows acquired through the
syscaches will have inconsistent enumsortorder values, if they were
read at different times? If you want to examine enumsortorder, you really
need to be comparing rows you know were read with the *same* snapshot.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2013-08-19 17:42:21 Re: Should we remove "not fast" promotion at all?
Previous Message Tom Lane 2013-08-19 17:27:29 Re: Should we remove "not fast" promotion at all?