Re: Table AM Interface Enhancements
Robert Haas <robertmhaas@gmail.com>
On Tue, Apr 16, 2024 at 6:52 AM Alexander Korotkov <aekorotkov@gmail.com> wrote: > Taking a closer look at acquire_sample_rows(), I think it would be > good if table AM implementation would care about block-level (or > whatever-level) sampling. So that acquire_sample_rows() just fetches > tuples one-by-one from table AM implementation without any care about > blocks. Possible table_beginscan_analyze() could take an argument of > target number of tuples, then those tuples are just fetches with > table_scan_analyze_next_tuple(). What do you think? Andres is the expert here, but FWIW, that plan seems reasonable to me. One downside is that every block-based tableam is going to end up with a very similar implementation, which is kind of something I don't like about the tableam API in general: if you want to make something that is basically heap plus a little bit of special sauce, you have to copy a mountain of code. Right now we don't really care about that problem, because we don't have any other tableams in core, but if we ever do, I think we're going to find ourselves very unhappy with that aspect of things. But maybe now is not the time to start worrying. That problem isn't unique to analyze, and giving out-of-core tableams the flexibility to do what they want is better than not. -- Robert Haas EDB: http://www.enterprisedb.com
Commits
-
Remove extra comment at TableAmRoutine.scan_analyze_next_block
- 70a845c04a47 17.0 landed
-
revert: Generalize relation analyze in table AM interface
- 6377e12a5a52 17.0 landed
-
Revert: Allow table AM to store complex data structures in rd_amcache
- 922c4c461d21 17.0 landed
-
Revert: Allow table AM tuple_insert() method to return the different slot
- 8dd0bb84da7d 17.0 landed
-
Revert: Allow locking updated tuples in tuple_update() and tuple_delete()
- 193e6d18e553 17.0 landed
-
Revert: Let table AM insertion methods control index insertion
- da841aa4dc27 17.0 landed
-
Revert: Custom reloptions for table AM
- bc1e2092ebb8 17.0 landed
-
Provide a way block-level table AMs could re-use acquire_sample_rows()
- dd1f6b0c172a 17.0 landed
-
Custom reloptions for table AM
- 9bd99f4c26fe 17.0 landed
- c95c25f9af4b 17.0 landed
-
Use streaming I/O in ANALYZE.
- 041b96802efa 17.0 cited
-
Revert "Custom reloptions for table AM"
- 867cc7b6ddb9 17.0 landed
-
Let table AM insertion methods control index insertion
- b1484a3f1910 17.0 landed
-
Generalize relation analyze in table AM interface
- 27bc1772fc81 17.0 landed
-
Improve error message for tts_(virtual|minimal)_is_current_xact_tuple
- 41d3780d3d29 17.0 landed
-
Add comments on some MinimalTupleSlots methods usage
- 10baee0c95d1 17.0 landed
-
Add TupleTableSlotOps.is_current_xact_tuple() method
- 0997e0af273d 17.0 landed
-
Allow table AM tuple_insert() method to return the different slot
- c35a3fb5e067 17.0 landed
-
Allow table AM to store complex data structures in rd_amcache
- 02eb07ea89d2 17.0 landed