Hi!
Here's a v3 of the patch, adopting the idea of passing the data through
a field in the scan descriptor. I've kept it broken into multiple
smaller pieces 0002-0006 to show the incremental changes, but in the end
this should be all merged.
0001 - a prerequisite patch
0002 - v2 of the patch
0003 - basic cleanup / helpers to reduce code duplication, various
smaller fixes and improvements, ...
0004 - changes the design to use a new field in TableScanDesc
0005 - minor cleanup of 0004
0006 - support for TidRangeScan (the last scan using ReadStream),
requires changes similar to SeqScan in v2
Overall, I think it looks reasonable. There are probably ways to
simplify it further (e.g. by introducing a new read_stream_begin_
helper, so that it's not necessary to update every caller of
read_stream_begin_relation by adding a NULL argument).
The 0003 also changes the EXPLAIN to enable IO by default, just like we
do for BUFFERS. It seems like a reasonable precedent to me.
0004 reworks the tracking to use a field in TableScanDesc, instead of
adding a table AM callback. I agree it seems simpler / less disruptive.
0005 is a minor cleanup for 0004
0006 adds EXPLAIN support for TidRangeScan, similarly to how 0002 adds
support for SeqScan (but that still uses the TAM interface)
regards
--
Tomas Vondra