On Sun, Mar 10, 2013 at 4:50 AM, Fujii Masao <masao.fu...@gmail.com> wrote:

> On Sun, Mar 10, 2013 at 3:48 AM, Fujii Masao <masao.fu...@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

Reply via email to