Re: WIP: Rework access method interface - Mailing list pgsql-hackers

From Alexander Korotkov
Subject Re: WIP: Rework access method interface
Date
Msg-id CAPpHfdt990N2PjVraMSRbZc5S5yiAyy_6M8hRUAaN3ty_F2vWA@mail.gmail.com
Whole thread Raw
In response to Re: WIP: Rework access method interface  (Teodor Sigaev <teodor@sigaev.ru>)
Responses Re: WIP: Rework access method interface  (Petr Jelinek <petr@2ndquadrant.com>)
List pgsql-hackers
On Wed, Sep 16, 2015 at 8:44 PM, Teodor Sigaev <teodor@sigaev.ru> wrote:
validate_opclass was renamed to amvalidate.

It seems to me, that amvalidate method of AM should get as argument only Oid of operator family. Layout and meaning of amproc/amop fields are differ for different AM and there isn't an AM which implements all possible features.

Actually, I'm a bit confused with follow piece of code (ginvalidate, for instance):
foreach(l, opclass->procedures)
{
     ...
     if (proc->lefttype != opclass->intype
               || proc->righttype != opclass->intype)
           continue;
     ...

That is amproc could contain a row, which connected to some operator class but this fact will be missed this check and may be, never used or used wrongly.

Despite these observations, I think that this work is needed.

After, further personal discussion with Teodor, we decided that amvalidate is out of scope for this patch.
It's not evident what should we validate in amvalidate and which way. I think if we need amvalidate it should be subject of separate patch.
The attached patch exposes index access method parameters to SQL using following fucntions:
 * get_am_param_oid(oid, text)
 * get_am_param_int(oid, text)
 * get_am_param_bool(oid, text)

------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company 
Attachment

pgsql-hackers by date:

Previous
From: Pavel Stehule
Date:
Subject: Re: [patch] Proposal for \rotate in psql
Next
From: Adam Brightwell
Date:
Subject: Re: row_security GUC, BYPASSRLS