Re: Support for REINDEX CONCURRENTLY
От | Michael Paquier |
---|---|
Тема | Re: Support for REINDEX CONCURRENTLY |
Дата | |
Msg-id | CAB7nPqQhki_jKg1LXiBnK3n7DGMSkaJYra1U_5OS6F6UnCK4Dg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Support for REINDEX CONCURRENTLY (Fujii Masao <masao.fujii@gmail.com>) |
Список | pgsql-hackers |
On Sun, Mar 10, 2013 at 4:50 AM, Fujii Masao <masao.fujii@gmail.com> wrote:
-- On Sun, Mar 10, 2013 at 3:48 AM, Fujii Masao <masao.fujii@gmail.com> wrote:- "SELECT reltoastidxid "
> Thanks for updating the patch!
- "FROM info_rels i JOIN pg_catalog.pg_class c "
- " ON i.reloid = c.oid"));
+ "SELECT indexrelid "
+ "FROM info_rels i "
+ " JOIN pg_catalog.pg_class c "
+ " ON i.reloid = c.oid "
+ " JOIN pg_catalog.pg_index p "
+ " ON i.reloid = p.indrelid "
+ "WHERE p.indexrelid >= %u ", FirstNormalObjectId));
This new SQL doesn't seem to be right. Old one doesn't pick up any indexes
other than toast index, but new one seems to do.
Indeed, it was selecting all indexes...
I replaced it by this query reducing the selection of indexes for toast relations:
- "SELECT reltoastidxid "
- "FROM info_rels i JOIN pg_catalog.pg_class c "
- " ON i.reloid = c.oid"));
+ "SELECT indexrelid "
+ "FROM pg_index "
+ "WHERE indrelid IN (SELECT reltoastrelid "
+ " FROM pg_class "
+ " WHERE oid >= %u "
+ " AND reltoastrelid != %u)",
+ FirstNormalObjectId, InvalidOid));
Will send patch soon...
I replaced it by this query reducing the selection of indexes for toast relations:
- "SELECT reltoastidxid "
- "FROM info_rels i JOIN pg_catalog.pg_class c "
- " ON i.reloid = c.oid"));
+ "SELECT indexrelid "
+ "FROM pg_index "
+ "WHERE indrelid IN (SELECT reltoastrelid "
+ " FROM pg_class "
+ " WHERE oid >= %u "
+ " AND reltoastrelid != %u)",
+ FirstNormalObjectId, InvalidOid));
Will send patch soon...
Michael
В списке pgsql-hackers по дате отправления: