Move TablespaceCreateDbspace() call into smgrcreate(), which is where it
Tom Lane <tgl@sss.pgh.pa.us>
Move TablespaceCreateDbspace() call into smgrcreate(), which is where it probably should have been to begin with; this is to cover cases like needing to recreate the per-db directory during WAL replay. Also, fix heap_create to force pg_class.reltablespace to be zero instead of the database's default tablespace; this makes the world safe for CREATE DATABASE to handle all tables in the default tablespace alike, as per previous discussion. And force pg_class.reltablespace to zero when creating a relation without physical storage (eg, a view); this avoids possibly having dangling references in this column after a subsequent DROP TABLESPACE.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/heap.c | modified | +28 −29 |
| src/backend/commands/tablespace.c | modified | +12 −4 |
| src/backend/storage/smgr/smgr.c | modified | +15 −1 |
| src/include/catalog/heap.h | modified | +2 −4 |
| src/include/commands/tablespace.h | modified | +2 −2 |