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:
> Thanks for updating the patch!

-                                                         "SELECT reltoastidxid "
-                                                         "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...
--
Michael

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Jonathan Rogers
Дата:
Сообщение: Re: Btrfs clone WIP patch
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: Support for REINDEX CONCURRENTLY