There is bad breakage in the DROP TABLESPACE command if the only thing "in" that tablespace is the default tablespaces for a schema:

test=# create tablespace myspace location '/home/chriskl/loc';
CREATE TABLESPACE
test=# create schema myschema tablespace myspace;
CREATE SCHEMA
test=# drop tablespace myspace;
DROP TABLESPACE
test=# select * from pg_namespace where nspname='myschema';
 nspname  | nspowner | nsptablespace | nspacl
----------+----------+---------------+--------
 myschema |        1 |         17228 |
(1 row)

test=# select * from pg_tablespace where oid=17228;
 spcname | spcowner | spclocation | spcacl
---------+----------+-------------+--------
(0 rows)

test=# create table myschema.blah (a int4);
ERROR: could not create directory "/home/chriskl/local/data/pg_tblspc/17228/17227": No such file or directory


This is probably pretty nasty because it means there's no way to check if dropping a tablespace is safe :(

Maybe the only solution is if nsptablespace is invalid when creating an object in the schema, then fix it and ignore it? Or fix it when first connecting to the database?

Chris

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to