From: | M Enrique <enrique(dot)mailing(dot)lists(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Gin index on array of uuid |
Date: | 2016-08-10 21:00:42 |
Message-ID: | CADCw5Qa=Ojc3R-uAzTKysJ5K_vKmAYRMZMwceRygRFacrhS4ew@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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
[image: pasted2]
[image: pasted3]
[image: pasted1]
On Tue, Jun 21, 2016 at 12:20 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Enrique MailingLists <enrique(dot)mailing(dot)lists(at)gmail(dot)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
>
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2016-08-10 21:01:29 | Re: Assertion failure in REL9_5_STABLE |
Previous Message | Peter Geoghegan | 2016-08-10 20:54:32 | Re: Parallel tuplesort, partitioning, merging, and the future |