On Mon, Aug 24, 2015 at 5:15 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> Alexander Korotkov <a.korot...@postgrespro.ru> writes: > > On Mon, Aug 10, 2015 at 7:50 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > >> Hm. So one way or the other we're going to end up violating relational > >> theory somewhere. OK, I yield: let's say that pg_am has amname, amkind, > >> amhandler, and nothing else. Then we will need SQL functions to expose > >> whatever information we think needs to be available to SQL code. > > > There is second revision of this patch. Changes are so: > > > * AmRoutine was renamed to IndexAmRoutine assuming there could be other > > access methods in the future. > > * amhandlers now return index_am_handler pseudotype. > > * CHECK_PROCEDUREs are now is the place of original GET_REL_PROCEDUREs. > > * amstrategies, amsupport, amcanorderbyop, amstorage, amkeytype are in > > both pg_am and IndexAmRoutine. Consistence of amhandler answer and pg_am > > tuple is checking. > > [ scratches head... ] I thought we'd just agreed we weren't going to keep > any of those pg_am columns? If we keep them, we'll have to define what > they mean for sequence AMs etc. ("Let them be NULL" would likely break > enough stuff that we might as well not have them.) > >From the previous discussion I see following options: 1) Non-index access methods don't reuse pg_class.relam nor pg_am. Fully relational compliant but complex catalog structure. 2) Non-index access methods reuse pg_class.relam but don't reuse pg_am. This violates relational theory because single column reference multiple tables. 3) Non-index access methods reuse both pg_class.relam and pg_am. This violates relational theory because we store different objects in the same table. I'd say we already have precedent of #2. It's pg_depend which reference objects of arbitrary types. In the #3 we really shouldn't keep any specific to index am in pg_am. But what we assume to be an access method in general? For instance, we have foreign data wrappers which aren't access methods (but looks quite similar from some degree). ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company