• Michael Paquier's avatar
    Add TABLESPACE option to REINDEX · c5b28604
    Michael Paquier authored
    This patch adds the possibility to move indexes to a new tablespace
    while rebuilding them.  Both the concurrent and the non-concurrent cases
    are supported, and the following set of restrictions apply:
    - When using TABLESPACE with a REINDEX command that targets a
    partitioned table or index, all the indexes of the leaf partitions are
    moved to the new tablespace.  The tablespace references of the non-leaf,
    partitioned tables in pg_class.reltablespace are not changed. This
    requires an extra ALTER TABLE SET TABLESPACE.
    - Any index on a toast table rebuilt as part of a parent table is kept
    in its original tablespace.
    - The operation is forbidden on system catalogs, including trying to
    directly move a toast relation with REINDEX.  This results in an error
    if doing REINDEX on a single object.  REINDEX SCHEMA, DATABASE and
    SYSTEM skip system relations when TABLESPACE is used.
    
    Author: Alexey Kondratov, Michael Paquier, Justin Pryzby
    Reviewed-by: Álvaro Herrera, Michael Paquier
    Discussion: https://postgr.es/m/8a8f5f73-00d3-55f8-7583-1375ca8f6a91@postgrespro.ru
    c5b28604
tablespace.source 18.4 KB