Re: ALTER TABLE lock strength reduction patch is unsafe
Noah Misch <noah@leadboat.com>
From: Noah Misch <noah@leadboat.com>
To: Simon Riggs <simon@2ndQuadrant.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Robert Haas <robertmhaas@gmail.com>, Bruce Momjian <bruce@momjian.us>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2012-01-02T19:25:25Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add bytea_agg, parallel to string_agg.
- d5448c7d31b5 9.2.0 cited
-
Fix ALTER TABLE ONLY .. DROP CONSTRAINT.
- c0f03aae0469 9.2.0 cited
Attachments
- find-overlap-snapshotnow.patch (text/plain) patch
On Mon, Jan 02, 2012 at 06:41:31PM +0000, Simon Riggs wrote: > On Mon, Jan 2, 2012 at 6:06 PM, Noah Misch <noah@leadboat.com> wrote: > > On Mon, Jan 02, 2012 at 05:09:16PM +0000, Simon Riggs wrote: > >> Attached patch makes SnapshotNow into an MVCC snapshot, initialised at > >> the start of each scan iff SnapshotNow is passed as the scan's > >> snapshot. It's fairly brief but seems to do the trick. > > > > That's a neat trick. ?However, if you start a new SnapshotNow scan while one is > > ongoing, the primordial scan's snapshot will change mid-stream. > > Do we ever do that? (and if so, Why?!? or perhaps just Where?) I hacked up your patch a bit, as attached, to emit a WARNING for any nested use of SnapshotNow. This made 97/127 test files fail. As one example, RelationBuildRuleLock() does TextDatumGetCString() for every tuple of its SnapshotNow scan. That may need a detoast, which itself runs a scan. > We can use more complex code if required, but we'll be adding > complexity and code into the main path that I'd like to avoid. Agreed.