03.12.2015 04:03, Robert Haas пишет:
On Tue, Dec 1, 2015 at 7:53 AM, Anastasia Lubennikova
If we don't need c4 as an index scankey, we don't need any btree opclass on
But we still want to have it in covering index for queries like
SELECT c4 FROM tbl WHERE c1=1000; // uses the IndexOnlyScan
SELECT * FROM tbl WHERE c1=1000; // uses the IndexOnlyScan
The patch "optional_opclass" completely ignores opclasses of included
OK, I don't get it. Why have an opclass here at all, even optionally?
We haven't opclass on c4 and there's no need to have it.
But now (without a patch) it's impossible to create covering index,
which contains columns with no opclass for btree.
test=# create index on tbl using btree (c1, c4);
ERROR: data type box has no default operator class for access method
ComputeIndexAttrs() processes the list of index attributes and trying to
get an opclass for each of them via GetIndexOpClass().
The patch drops this check for included attributes. So it makes possible
to store any datatype in btree and use IndexOnlyScan advantages.
I hope that this helps to clarify.
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
Sent via pgsql-hackers mailing list (email@example.com)
To make changes to your subscription: