Re: Using ALTER TABLESPACE in pg_dump - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Using ALTER TABLESPACE in pg_dump
Date
Msg-id 2174.1098746926@sss.pgh.pa.us
Whole thread Raw
In response to Re: Using ALTER TABLESPACE in pg_dump  (Philip Warner <pjw@rhyme.com.au>)
Responses Re: Using ALTER TABLESPACE in pg_dump
Re: Using ALTER TABLESPACE in pg_dump
Re: Using ALTER TABLESPACE in pg_dump
Re: Using ALTER TABLESPACE in pg_dump
List pgsql-hackers
Philip Warner <pjw@rhyme.com.au> writes:
> At 08:00 AM 26/10/2004, Tom Lane wrote:
>> I don't want a GUC variable that actively changes the default
>> tablespace; at least not unless you want to abandon the current
>> mechanisms for default tablespace choices entirely, and go over to
>> making the GUC variable be the sole arbiter.

> Something consistent with Schemas does sound good to me; a tablespace 
> search path (or just single default), and support for a TABLESPACE clause 
> on table and INDEX definitions would be good.

I can't see what a search path would be good for.

> For the three largest databases I work on, the namespace/schema that a 
> table resides in is irrelevant to the tablespace that it should be stored 
> in. So default tablespaces on the schema are a bit of a pointless feature. 
> The ability to have the features of schemas: default tablespace for given 
> users, a GUC variable, and ACLs on tablespaces would be far more valuable.

Another nice thing is that not having default tablespaces associated
with schemas eliminates that nasty issue about being able to drop such a
tablespace while the schema is still there.

It seems like we still need some notion of a database's schema, to put
the system catalogs in, but perhaps that need not be the same as the
default schema for user tables created in the database?

I'd be willing to jump this way if we can work out the
default-tablespace inconsistencies that Bruce has on the open items
list.  Does anyone want to draft a concrete proposal?  It seems like the
basic elements are:
* A GUC variable named something like default_tablespace thatcontrols which TS objects are created in when there'sno
explicitTABLESPACE clause.  The factory default for thiswould of course be pg_default.  Otherwise it's settable
justlikeany other GUC var.
 
* Get rid of TABLESPACE clause for CREATE SCHEMA, andpg_namespace.nsptablespace (ooops, another initdb).
* Need to define exactly what TABLESPACE clause for a databasecontrols; location of its catalogs of course, but
anythingelse?
 
* We could possibly say that a TABLESPACE clause attached toCREATE TABLE determines the default tablespace for
indexescreatedby the same command; I'm not sure if this is a goodidea, or if the indexes should go into
default_tablespaceabsenta TABLESPACE clause attached directly to their definingconstraints.  We certainly want
default_tablespaceto controlindexes created by separate commands, so there'd be someinconsistency if we do the former.
 
        regards, tom lane


pgsql-hackers by date:

Previous
From: Philip Warner
Date:
Subject: Re: Using ALTER TABLESPACE in pg_dump
Next
From: Philip Warner
Date:
Subject: Re: Using ALTER TABLESPACE in pg_dump