Re: Gin index on array of uuid - Mailing list pgsql-hackers

From M Enrique
Subject Re: Gin index on array of uuid
Date
Msg-id CADCw5Qa=Ojc3R-uAzTKysJ5K_vKmAYRMZMwceRygRFacrhS4ew@mail.gmail.com
Whole thread Raw
In response to Re: Gin index on array of uuid  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Ok, I think this is close as you point out.

I can see the GIN (2742 pg_am oid - access method) op classes defined explicitly for a lot of the core types in pg_opclass.h.

I can also see various GIN operator functions defined in pg_proc ("select proname, proargtypes  from pg_proc where proname like '%extract%' " and many comparison functions "select proname, proargtypes  from pg_proc where proname like '%cmp%' ").

It seems one way to do this is to add the missing remaining built in types such as UUID to pg_opclass.h.... but I am missing how this "DATA(insert(...))" operator class definition links to the four GIN functions (&&, @>, <@ and =). Is there a separate table or definition responsible for this linking? 

Taking _timestamp_ops as an example:
DATA(insert ( 2742 _timestamp_ops PGNSP PGUID 2745 1115 t 1114 ));
How does postgresql determine the GIN function bindings? Where does this function pointer resolution occur?

Thank you,
Enrique

pasted2

pasted3

pasted1



On Tue, Jun 21, 2016 at 12:20 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Enrique MailingLists <enrique.mailing.lists@gmail.com> writes:
> Currently creating an index on an array of UUID involves defining an
> operator class. I was wondering if this would be a valid request to add as
> part of the uuid-ossp extension? This seems like a reasonable operator to
> support as a default for UUIDs.

This makes me itch, really, because if we do this then we should logically
do it for every other add-on type.

It seems like we are not that far from being able to have just one GIN
opclass on "anyarray".  The only parts of this declaration that are
UUID-specific are the comparator function and the storage type, both of
which could be gotten without that much trouble, one would think.

> Any downsides to adding this as a default?

Well, it'd likely break things at dump/reload time for people who had
already created a competing "default for _uuid" opclass manually.  I'm not
entirely sure, but possibly replacing the core opclasses with a single one
that is "default for anyarray" could avoid such failures.  We'd have to
figure out ambiguity resolution rules.

                        regards, tom lane
Attachment

pgsql-hackers by date:

Previous
From: Peter Geoghegan
Date:
Subject: Re: Parallel tuplesort, partitioning, merging, and the future
Next
From: Alvaro Herrera
Date:
Subject: Re: Assertion failure in REL9_5_STABLE