• Alvaro Herrera's avatar
    Fix tablespace inheritance for partitioned rels · 87259588
    Alvaro Herrera authored
    Commit ca410302 left a few loose ends.  The most important one
    (broken pg_dump output) is already fixed by virtue of commit
    3b23552a, but some things remained:
    
    * When ALTER TABLE rewrites tables, the indexes must remain in the
      tablespace they were originally in.  This didn't work because
      index recreation during ALTER TABLE runs manufactured SQL (yuck),
      which runs afoul of default_tablespace in competition with the parent
      relation tablespace.  To fix, reset default_tablespace to the empty
      string temporarily, and add the TABLESPACE clause as appropriate.
    
    * Setting a partitioned rel's tablespace to the database default is
      confusing; if it worked, it would direct the partitions to that
      tablespace regardless of default_tablespace.  But in reality it does
      not work, and making it work is a larger project.  Therefore, throw
      an error when this condition is detected, to alert the unwary.
    
    Add some docs and tests, too.
    
    Author: Álvaro Herrera
    Discussion: https://postgr.es/m/CAKJS1f_1c260nOt_vBJ067AZ3JXptXVRohDVMLEBmudX1YEx-A@mail.gmail.com
    87259588
tablespace.h 1.93 KB