]> granicus.if.org Git - postgresql/commitdiff
Don't allow partitioned indexes in pg_global tablespace
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 23 Nov 2018 11:44:15 +0000 (08:44 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 23 Nov 2018 11:48:20 +0000 (08:48 -0300)
Missing in dfa608141982.

Author: David Rowley
Discussion: https://postgr.es/m/CAKJS1f-M3NMTCpv=vDfkoqHbMPFf=3-Z1ud=+1DHH00tC+zLaQ@mail.gmail.com

src/backend/commands/tablecmds.c
src/test/regress/input/tablespace.source
src/test/regress/output/tablespace.source

index a1137a3bf09a30098042bb1c4b4b99161e47bb8e..843ed48aa76bba8373f56ee065fc6b3704becafc 100644 (file)
@@ -10939,6 +10939,12 @@ ATExecPartedIdxSetTableSpace(Relation rel, Oid newTableSpace)
 
        Assert(rel->rd_rel->relkind == RELKIND_PARTITIONED_INDEX);
 
+       /* Can't allow a non-shared relation in pg_global */
+       if (newTableSpace == GLOBALTABLESPACE_OID)
+               ereport(ERROR,
+               (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+                       errmsg("only shared relations can be placed in pg_global tablespace")));
+
        /*
         * No work if no change in tablespace.
         */
index 60c87261db8913ae3e72f213e31072fc754ace7a..2ac757cfab247b7873acdf36328cb6fd9f085e0d 100644 (file)
@@ -101,6 +101,7 @@ CREATE UNIQUE INDEX anindex ON testschema.atable(column1);
 
 ALTER TABLE testschema.atable SET TABLESPACE regress_tblspace;
 ALTER INDEX testschema.anindex SET TABLESPACE regress_tblspace;
+ALTER INDEX testschema.part_a_idx SET TABLESPACE pg_global;
 ALTER INDEX testschema.part_a_idx SET TABLESPACE pg_default;
 ALTER INDEX testschema.part_a_idx SET TABLESPACE regress_tblspace;
 
index 43962e6f0131de20cc9dfd4c6b18e265450b91b9..2e78e5ece689155526105a72b070374fe0b4f01f 100644 (file)
@@ -214,6 +214,8 @@ CREATE TABLE testschema.atable AS VALUES (1), (2);
 CREATE UNIQUE INDEX anindex ON testschema.atable(column1);
 ALTER TABLE testschema.atable SET TABLESPACE regress_tblspace;
 ALTER INDEX testschema.anindex SET TABLESPACE regress_tblspace;
+ALTER INDEX testschema.part_a_idx SET TABLESPACE pg_global;
+ERROR:  only shared relations can be placed in pg_global tablespace
 ALTER INDEX testschema.part_a_idx SET TABLESPACE pg_default;
 ALTER INDEX testschema.part_a_idx SET TABLESPACE regress_tblspace;
 INSERT INTO testschema.atable VALUES(3);       -- ok