Re: Table AM Interface Enhancements

Поиск
Список
Период
Сортировка
От Alexander Korotkov
Тема Re: Table AM Interface Enhancements
Дата
Msg-id CAPpHfdv0g30VPKBwK=jCEmDdybgdu2Ro8VSNbLnc22C6qKsaZA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Table AM Interface Enhancements  (Mark Dilger <mark.dilger@enterprisedb.com>)
Ответы Re: Table AM Interface Enhancements  (Mark Dilger <mark.dilger@enterprisedb.com>)
Список pgsql-hackers
On Fri, Nov 24, 2023 at 5:18 PM Mark Dilger
<mark.dilger@enterprisedb.com> wrote:
> > On Nov 23, 2023, at 4:42 AM, Alexander Korotkov <aekorotkov@gmail.com> wrote:
>
>
> > 0006-Generalize-table-AM-API-for-INSERT-.-ON-CONFLICT-v1.patch
> >
> > Provides a new table AM API method to encapsulate the whole INSERT ...
> > ON CONFLICT ... algorithm rather than just implementation of
> > speculative tokens.
>
> I *think* I understand that you are taking the part of INSERT..ON CONFLICT that lives outside the table AM and
pullingit inside so that table AM authors are free to come up with whatever implementation is more suited for them.
Themost straightforward way of doing so results in an EState parameter in the interface definition.  That seems not so
good,as the EState is a fairly complicated structure, and future changes in the executor might want to rearrange what
EStatetracks, which would change which values tuple_insert_with_arbiter() can depend on. 

I think this is the correct understanding.

> Should the patch at least document which parts of the EState are expected to be in which states, and which parts
shouldbe viewed as undefined?  If the implementors of table AMs rely on any/all aspects of EState, doesn't that prevent
futurechanges to how that structure is used? 

New tuple tuple_insert_with_arbiter() table AM API method needs EState
argument to call executor functions: ExecCheckIndexConstraints(),
ExecUpdateLockMode(), and ExecInsertIndexTuples().  I think we
probably need to invent some opaque way to call this executor function
without revealing EState to table AM.  Do you think this could work?

> > 0008-Let-table-AM-insertion-methods-control-index-inse-v1.patch
> >
> > Allows table AM to skip index insertions in the executor and handle
> > those insertions itself.
>
> The new parameter could use more documentation.
>
> > 0009-Custom-reloptions-for-table-AM-v1.patch
> >
> > Enables table AMs to define and override reloptions for tables and indexes.
>
> This could use some regression tests to exercise the custom reloptions.

Thank you for these notes.  I'll take this into account for the next
patchset version.

------
Regards,
Alexander Korotkov



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Paul A Jungwirth
Дата:
Сообщение: Improve rowcount estimate for UNNEST(column)
Следующее
От: Tom Lane
Дата:
Сообщение: New instability in stats regression test