Subject: minor tweak to catalogs.sgml pg_class.reltablespace

From: Alvaro Herrera <[email-masked]>
Date: Tue, 19 Mar 2024 11:34:15 +0100

While reviewing the patch for SET ACCESS METHOD[1] I noticed that
pg_class.relam is not documented fully for partitioned tables, so I
proposed the attached.  Also, I remove a comment that merely repeats
what was already said a few lines above.

This is intended for backpatch to 12.

[1] https://postgr.es/m/[email-masked]

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/
>From fe4d53f33c688ab3ff132964bf42ba5fc8cdaa6e Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <[email-masked]>
Date: Tue, 19 Mar 2024 09:49:46 +0100
Subject: [PATCH] Review for wording on tablespaces on partitioned tables

Remove a redundant comment, and document pg_class.relam in
catalogs.sgml.

After commits a36c84c3e4a9, 87259588d0ab and others.

Discussion: https://postgr.es/m/[email-masked]
---
 doc/src/sgml/catalogs.sgml       | 8 +++++---
 src/backend/commands/tablecmds.c | 4 ----
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml
index 2f091ad09d..183669272b 100644
--- a/doc/src/sgml/catalogs.sgml
+++ b/doc/src/sgml/catalogs.sgml
@@ -2011,9 +2011,11 @@ SCRAM-SHA-256$<replaceable>&lt;iteration count&gt;</replaceable>:<replaceable>&l
        (references <link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.<structfield>oid</structfield>)
       </para>
       <para>
-       The tablespace in which this relation is stored.  If zero,
-       the database's default tablespace is implied.  (Not meaningful
-       if the relation has no on-disk file.)
+       The tablespace in which this relation is stored; for partitioned
+       tables, the tablespace in which partitions are created
+       when one is not specified in the creation command.
+       If zero, the database's default tablespace is implied.
+       (Not meaningful if the relation has no on-disk file.)
       </para></entry>
      </row>
 
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 3ed0618b4e..6c0c899210 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -807,10 +807,6 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId,
 	}
 	else if (stmt->partbound)
 	{
-		/*
-		 * For partitions, when no other tablespace is specified, we default
-		 * the tablespace to the parent partitioned table's.
-		 */
 		Assert(list_length(inheritOids) == 1);
 		tablespaceId = get_rel_tablespace(linitial_oid(inheritOids));
 	}
-- 
2.39.2

---

From: Tom Lane <[email-masked]>
Date: Tue, 19 Mar 2024 09:34:57 -0400

Alvaro Herrera <[email-masked]> writes:
> proposed the attached.

The bit about "(Not meaningful if the relation has no on-disk file.)"
is not correct, and now it's adjacent to text that contradicts it.
Maybe more like

       The tablespace in which this relation is stored.
       If zero, the database's default tablespace is implied.
       Not meaningful if the relation has no on-disk file,
       except for partitioned tables, where this is the tablespace
       in which partitions will be created when one is not
       specified in the creation command.

			regards, tom lane