Re: Support for REINDEX CONCURRENTLY - Mailing list pgsql-hackers

From Michael Paquier
Subject Re: Support for REINDEX CONCURRENTLY
Date
Msg-id CAB7nPqQhki_jKg1LXiBnK3n7DGMSkaJYra1U_5OS6F6UnCK4Dg@mail.gmail.com
Whole thread Raw
In response to Re: Support for REINDEX CONCURRENTLY  (Fujii Masao <masao.fujii@gmail.com>)
List 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 by date:

Previous
From: Jonathan Rogers
Date:
Subject: Re: Btrfs clone WIP patch
Next
From: Michael Paquier
Date:
Subject: Re: Support for REINDEX CONCURRENTLY