Hi,
On 2019-03-25 11:20:13 -0400, Robert Haas wrote:
> While reviewing some zheap code last week, I noticed that the naming
> of the ExecStore*Tuple() functions seems a bit unfortunate. One
> reason is that we are now using slots in all kinds of places other
> than the executor, so that the "Exec" prefix seems a bit out of place.
> However, you could argue that this is OK, on the grounds that the
> functions are defined in the executor. What I noticed, though, is
> that every new table AM is probably going to need its own type of
> slot, and it's natural to define those slot support functions in the
> AM code rather than having every AM shove whatever it's got into
> execTuples.c.
Yea, it's not accurate. Nor was it before this change though - there's
e.g. plenty executor code that used slots long before v12.
> But if you do that, then you end up with a function with a name like
> ExecStoreZHeapTuple() which isn't in src/backend/executor, and which
> furthermore will never be called from the executor, because the
> executor only knows about a short, hard-coded list of built-in slot
> types, and ZHeapTuples are not one of them. That function will,
> rather, only be called from the zheap code. And having a function
> whose name starts with Exec... that is neither defined in the executor
> nor used in the executor seems wrong.
Yea.
I feel if we go there we probably should also rename ExecClearTuple,
ExecMaterializeSlot, ExecCopySlotHeapTuple, ExecCopySlotMinimalTuple,
ExecCopySlot. Although there we probably can add a compat wrapper.
> So I think we should rename these functions before we get too used to
> the new names. There is a significant advantage in doing that for v12
> because people are already going to have to adjust third-party code to
> compensate for the fact that we no longer have an ExecStoreTuple()
> function any more.
Indeed.
> I'm not sure exactly what names would be better. Perhaps just change
> the "Exec" prefix to "Slot", e.g. SlotStoreHeapTuple(). Or maybe put
> InSlot at the end, like StoreHeapTupleInSlot(). Or just take those
> four words - slot, heap, tuple, and store - and put them in any order
> you like. TupleSlotStoreHeap?
I think I might go for slot_store_heap_tuple etc, given that a lot of
those accessors have been slot_ for about ever. What do you think?
Greetings,
Andres Freund