Tom Lane wrote: > Alvaro Herrera <alvhe...@2ndquadrant.com> writes: > > ... However, when you create an index, you can > > indicate which operator class to use, and it may not be the default one. > > If a different one is chosen at index creation time, then a query using > > COUNT(distinct) will do the wrong thing, because DISTINCT will select > > an equality type using the type's default operator class, not the > > equality that belongs to the operator class used to create the index. > > > That's wrong: DISTINCT should use the equality operator that corresponds > > to the index' operator class instead, not the default one. > > Uh, what? Surely the semantics of count(distinct x) *must not* vary > depending on what indexes happen to be available.
Err ... > I think what you meant to say is that the planner may only choose an > optimization of this sort when the index's opclass matches the one > DISTINCT will use, ie the default for the data type. Um, yeah, absolutely. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Sent via pgsql-hackers mailing list (email@example.com) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers