On Wed, Aug 26, 2020 at 05:58:01PM -0400, Alvaro Herrera wrote:
> Well, there is a small problem here ... which is that I misled you with
> \dAo ... because that one lists the operators for the opfamilies, not
> for the opclasses. And you can't use the opfamily name in CREATE INDEX:
>
> 55432 14devel 30811=# create index on t using brin (a integer_minmax_ops);
> ERROR: operator class "integer_minmax_ops" does not exist for access method "brin"
>
> You have to use the opclass name:
>
> 55432 14devel 30811=# create index on t using brin (a int4_minmax_ops);
> CREATE INDEX
>
> Compare \dAf to \dAc. The latter shows what opclasses you can use for
> each datatype, while the former shows what types can be used with an
> index using the opfamily that the opclass belongs into.
>
> As I understand it, the cross-type operators are "loose" in the opfamily
> and they don't belong to any opclass. So what we could do is list the
> opclasses within each opfamily, and then list all the loose operators.
> Something like (fixed width font):
Stupid question, but do we think the average Postgres user can
understand this issue. I am having trouble myself.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EnterpriseDB https://enterprisedb.com
The usefulness of a cup is in its emptiness, Bruce Lee