Re: Tid scan improvements
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: David Rowley <david.rowley@2ndquadrant.com>
Cc: Edmund Horner <ejrh00@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Tomas Vondra <tomas.vondra@2ndquadrant.com>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2019-03-25T21:52:11Z
Lists: pgsql-hackers
Hi, On 2019-03-18 22:35:05 +1300, David Rowley wrote: > The commit message in 8586bf7ed mentions: > > > Subsequent commits will incrementally abstract table access > > functionality to be routed through table access methods. That change > > is too large to be reviewed & committed at once, so it'll be done > > incrementally. > > and looking at [1] I see patch 0004 introduces some changes in > nodeTidscan.c to call a new tableam API function named > heapam_fetch_row_version. I see this function does have a ItemPointer > argument, so I guess we must be keeping those as unique row > identifiers in the API. Right, we are. At least for now - there's some discussions around allowing different format for TIDs, to allow things like index organized tables, but that's for later. > Patch 0001 does change the signature of heap_setscanlimits() (appears > to be committed already), and then in 0010 the only code that calls > heap_setscanlimits() (IndexBuildHeapRangeScan()) is moved and renamed > to heapam_index_build_range_scan() and set to be called via the > index_build_range_scan TableAmRoutine method. So it looks like out of > that patch series nothing is there to allow you to access > heap_setscanlimits() directly via the TableAmRoutine API, so perhaps > for this to work heap_setscanlimits will need to be interfaced, > however, I'm unsure if that'll violate any assumptions that Andres > wants to keep out of the API... I was kinda hoping to keep block numbers out of the "main" APIs, to avoid assuming everything is BLCKSZ based. I don't have a particular problem allowing an optional setscanlimits type callback that works with block numbers. The planner could check its presence and just not build tid range scans if not present. Alternatively a bespoke scan API for tid range scans, like the later patches in the tableam series for bitmap, sample, analyze scans, might be an option. Greetings, Andres Freund
Commits
-
Add TID Range Scans to support efficient scanning ranges of TIDs
- bb437f995d47 14.0 landed
-
Improve planner's selectivity estimates for inequalities on CTID.
- f7111f72d2fd 12.0 landed