Re: WIP: Rework access method interface

Поиск
Список
Период
Сортировка
От Alexander Korotkov
Тема Re: WIP: Rework access method interface
Дата
Msg-id CAPpHfdtTEBG0zALaKbFiB4nsSRK9PwyHVNUm+N0apisw9JyPWA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: WIP: Rework access method interface  (Alexander Korotkov <a.korotkov@postgrespro.ru>)
Ответы Re: WIP: Rework access method interface  (Petr Jelinek <petr@2ndquadrant.com>)
Список pgsql-hackers
On Thu, Nov 12, 2015 at 2:49 PM, Alexander Korotkov <a.korotkov@postgrespro.ru> wrote:
On Tue, Nov 3, 2015 at 3:16 PM, Alexander Korotkov <a.korotkov@postgrespro.ru> wrote:
On Tue, Nov 3, 2015 at 2:36 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Alvaro Herrera <alvherre@2ndquadrant.com> writes:
> Tom Lane wrote:
>> I'm kind of inclined to just let the verifiers read the catalogs for
>> themselves.  AFAICS, a loop around the results of SearchSysCacheList
>> is not going to be significantly more code than what this patch does,
>> and it avoids presuming that we know what the verifiers will wish to
>> look at.

> Hmm, so this amounts to saying the verifier can only run after the
> catalog rows are written.  Is that okay?

Why not?  Surely we are not interested in performance-optimizing for
the case of a detectably incorrect CREATE OP CLASS command.

I don't actually care that much about running the verifiers during
CREATE/etc OP CLASS at all.  It's at least as important to be able
to run them across the built-in opclasses, considering all the chances
for human error in constructing those things.  Even in the ALTER OP CLASS
case, the verifier would likely need to look at existing catalog rows as
well as the new ones.  So basically, I see zero value in exposing CREATE/
ALTER OP CLASS's internal working representation to the verifiers.

I'm OK with validating opclass directly by system catalog, i.e. looping over SearchSysCacheList results. Teodor was telling me something similar personally.
I'll also try to rearrange header according to the comments upthread.

The next revision of patch is attached.
The changes are following:
  1. Definitions of Selectivity, Cost and declarations of IndexAmRoutine, PlannerInfo, IndexPath, IndexInfo are moved into separate header reldecls.h. That allows to get rid of #include "nodes/relation.h" in amapi.h.
  2. amvalidate method now gets opclass oid as parameter. Internally, amvalidate implementations do catalog lookups. opfam_internal.h isn't included from inappropriate places anymore.
  3. I removed amvalidate calls from opclasscmds.c. Validating user-defined opclasses is behavior change which can have issues with backward compatibility. I think if we want to introduce this, it should be considered separately of API rework.
​Patch was rebased against current master.
Any notes about current version of patch?
It would be nice to commit it and continue work on other parts of am extendability.​


------

Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
Вложения

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

Предыдущее
От: Aleksander Alekseev
Дата:
Сообщение: Re: Patch: ResourceOwner optimization for tables with many partitions
Следующее
От: David Fetter
Дата:
Сообщение: Re: Making tab-complete.c easier to maintain