From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Cc: | Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>, Teodor Sigaev <teodor(at)sigaev(dot)ru> |
Subject: | Re: Extending opfamilies for GIN indexes |
Date: | 2011-01-19 00:34:01 |
Message-ID: | 7487.1295397241@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I wrote:
> So here's what I'm thinking: we could redefine a GIN opclass, per se, as
> needing only compare() and extractValue() procs to be bound into it.
> The other three procs, as well as the query operators, could be "loose"
> in the containing opfamily. The index AM would choose which set of the
> other support procedures to use for a specific query by matching their
> amproclefttype/amprocrighttype to the declared input types of the query
> operator, much as btree does.
> Having done that, contrib/intarray could work by adding "loose"
> operators and support procs to the core opfamily for integer[].
Oh, wait a minute: there's a bad restriction there, namely that a
contrib module could only add "loose" operators that had different
declared input types from the ones known to the core opclass. Otherwise
there'd be a conflict with the contrib module and core needing to insert
similarly-keyed support functions. This would actually be enough for
contrib/intarray (because the core operator entries are for "anyarray"
not for "integer[]") but it is easy to foresee cases where that wouldn't
be good enough. Seems like we'd need an additional key column in
pg_amproc to really make this cover all cases.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Josh Kupershmidt | 2011-01-19 00:34:41 | Re: psql: Add \dL to show languages |
Previous Message | Steve Singer | 2011-01-19 00:24:25 | Re: log_hostname and pg_stat_activity |