Hi,

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.

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.

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.

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?

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Reply via email to