Hi all,

I've noticed that LIKE tablename INCLUDING INDEXES skips any indexes
that were duplicated.

e.g.

CREATE TABLE people (id int, alias text);
CREATE INDEX idx_people_id_1 ON people (id);
CREATE INDEX idx_people_id_2 ON people (id) WHERE id % 2 = 0;
CREATE INDEX idx_people_alias_1 ON people (alias);
CREATE INDEX idx_people_alias_2 ON people (alias);
CREATE INDEX idx_people_alias_3_tblspc ON people (alias) TABLESPACE ts;
CREATE INDEX idx_people_alias_4 ON people (alias) WITH (FILLFACTOR = 24);

\d+ people

                        Table "public.people"
 Column |  Type   | Modifiers | Storage  | Stats target | Description
--------+---------+-----------+----------+--------------+-------------
 id     | integer |           | plain    |              |
 alias  | text    |           | extended |              |
Indexes:
    "idx_people_alias_1" btree (alias)
    "idx_people_alias_2" btree (alias)
    "idx_people_alias_3_tblspc" btree (alias), tablespace "ts"
    "idx_people_alias_4" btree (alias) WITH (fillfactor=24)
    "idx_people_id_1" btree (id)
    "idx_people_id_2" btree (id) WHERE (id % 2) = 0




CREATE SCHEMA test;
CREATE TABLE test.people (LIKE people INCLUDING INDEXES);

\d+ test.people

                         Table "test.people"
 Column |  Type   | Modifiers | Storage  | Stats target | Description
--------+---------+-----------+----------+--------------+-------------
 id     | integer |           | plain    |              |
 alias  | text    |           | extended |              |
Indexes:
    "people_alias_idx" btree (alias)
    "people_id_idx" btree (id)
    "people_id_idx1" btree (id) WHERE (id % 2) = 0


As you can see, 3 indexes are missing, which happen to be ones that
would duplicate the column definition of another index.  Is this
intentional?  If so, shouldn't it be documented behaviour?

-- 
Thom


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to