Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> writes:
> I am working on a feature to support INCLUDE clause of index in PG-11. As
> per the documentation https://www.postgresql.org/docs/11/static/
> sql-createindex.html, columns listed in INCLUDE clause cannot also be
> present as index key columns. But I find different behaviour for below
> queries which are logically identical.
I wonder why there is any such restriction at all. We have never
attempted to prevent the creation of "silly" indexes, eg
regression=# create table some_table (id int);
CREATE TABLE
regression=# create index on some_table (id,id);
CREATE INDEX
regression=# \d+ some_table
Table "public.some_table"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+---------+-----------+----------+---------+---------+--------------+-------------
id | integer | | | | plain | |
Indexes:
"some_table_id_id1_idx" btree (id, id)
So my inclination is to rip out the "must not intersect" test altogether,
not try to make it a bit smarter.
regards, tom lane