Re: Table AM Interface Enhancements
Jeff Davis <pgsql@j-davis.com>
On Sat, 2024-03-30 at 23:33 +0200, Alexander Korotkov wrote: > I've pushed 0001, 0002 and 0006. Sorry to jump in to this discussion so late. I had worked on something like the custom reloptions (0002) in the past, and there were some complications that don't seem to be addressed in commit c95c25f9af. * At minimum I think it needs some direction (comments, docs, tests) that show how it's supposed to be used. * The bytea returned by the reloptions() method is not in a trivial format. It's a StdRelOptions struct with string values stored after the end of the struct. To build the bytea internally, there's some infrastructure like allocateRelOptStruct() and fillRelOptions(), and it's not very easy to extend those to support a few custom options. * If we ever decide to add a string option to StdRdOptions, I think the design breaks, because the code that looks for those string values wouldn't know how to skip over the custom options. Perhaps we can just promise to never do that, but we should make it explicit somehow. * Most existing heap reloptions (other than fillfactor) are used by other parts of the system (like autovacuum) so should be considered valid for any AM. Most AMs will just want to add a handful of their own options on top, so it would be good to demonstrate how this should be done. * There are still places that are inappropriately calling heap_reloptions directly. For instance, in ProcessUtilitySlow(), it seems to assume that a toast table is a heap? Regards, Jeff Davis
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