Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas2022-09-28 13:45:27 +0000
committerRobert Haas2022-09-28 13:55:28 +0000
commita448e49bcbe40fb72e1ed85af910dd216d45bad8 (patch)
tree2815aed4f5e89bdea91cdd35ec89facaa846e438 /src/backend/commands
parent6af082723277eeca74f2da65e7759666bf7c7f9c (diff)
Revert 56-bit relfilenode change and follow-up commits.
There are still some alignment-related failures in the buildfarm, which might or might not be able to be fixed quickly, but I've also just realized that it increased the size of many WAL records by 4 bytes because a block reference contains a RelFileLocator. The effect of that hasn't been studied or discussed, so revert for now.
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/tablecmds.c12
-rw-r--r--src/backend/commands/tablespace.c2
2 files changed, 5 insertions, 9 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 1b8e6d57294..7d8a75d23c2 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -14375,14 +14375,10 @@ ATExecSetTableSpace(Oid tableOid, Oid newTableSpace, LOCKMODE lockmode)
}
/*
- * Generate a new relfilenumber. We cannot reuse the old relfilenumber
- * because of the possibility that that relation will be moved back to the
- * original tablespace before the next checkpoint. At that point, the
- * first segment of the main fork won't have been unlinked yet, and an
- * attempt to create new relation storage with that same relfilenumber
- * will fail.
- */
- newrelfilenumber = GetNewRelFileNumber(newTableSpace,
+ * Relfilenumbers are not unique in databases across tablespaces, so we
+ * need to allocate a new one in the new tablespace.
+ */
+ newrelfilenumber = GetNewRelFileNumber(newTableSpace, NULL,
rel->rd_rel->relpersistence);
/* Open old and new relation */
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index cdd7986dfc3..b69ff37dbbd 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -267,7 +267,7 @@ CreateTableSpace(CreateTableSpaceStmt *stmt)
* parts.
*/
if (strlen(location) + 1 + strlen(TABLESPACE_VERSION_DIRECTORY) + 1 +
- OIDCHARS + 1 + RELNUMBERCHARS + 1 + FORKNAMECHARS + 1 + OIDCHARS > MAXPGPATH)
+ OIDCHARS + 1 + OIDCHARS + 1 + FORKNAMECHARS + 1 + OIDCHARS > MAXPGPATH)
ereport(ERROR,
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
errmsg("tablespace location \"%s\" is too long",