mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
Fix default_tablespace usage for partitioned tables
In commit 87259588d0
I (Álvaro) tried to rationalize the determination
of tablespace to use for partitioned tables, but failed to handle the
default_tablespace case. Repair and add proper tests.
Author: Amit Langote, Rushabh Lathia
Reported-by: Rushabh Lathia
Reviewed-by: Amit Langote, Álvaro Herrera
Discussion: https://postgr.es/m/CAGPqQf0cYjm1=rjxk_6gU0SjUS70=yFUAdCJLwWzh9bhNJnyVg@mail.gmail.com
This commit is contained in:
@ -660,8 +660,8 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId,
|
||||
}
|
||||
|
||||
/*
|
||||
* Select tablespace to use. If not specified, use default tablespace
|
||||
* (which may in turn default to database's default).
|
||||
* Select tablespace to use: an explicitly indicated one, or (in the case
|
||||
* of a partitioned table) the parent's, if it has one.
|
||||
*/
|
||||
if (stmt->tablespacename)
|
||||
{
|
||||
@ -682,6 +682,10 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId,
|
||||
tablespaceId = get_rel_tablespace(linitial_oid(inheritOids));
|
||||
}
|
||||
else
|
||||
tablespaceId = InvalidOid;
|
||||
|
||||
/* still nothing? use the default */
|
||||
if (!OidIsValid(tablespaceId))
|
||||
tablespaceId = GetDefaultTablespace(stmt->relation->relpersistence,
|
||||
partitioned);
|
||||
|
||||
|
Reference in New Issue
Block a user