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

From Bruce Momjian
Subject Re: Using ALTER TABLESPACE in pg_dump
Date
Msg-id 200410312342.i9VNgaU23479@candle.pha.pa.us
Whole thread Raw
In response to Re: Using ALTER TABLESPACE in pg_dump  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Using ALTER TABLESPACE in pg_dump
List pgsql-hackers
Tom Lane wrote:
> I wrote:
> > 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.
> 
> After further thought it seems to me that using a default_tablespace
> GUC variable doesn't eliminate all the open issues.  In particular
> it is no help for the problem of merging two different tablespaces
> during CREATE DATABASE, ie, creating a new DB with a dattablespace
> that is different from the template DB's default when the template
> DB already has some tables explicitly placed into that tablespace.
> In this situation we have the problem that the cloned DB would
> have pg_class rows with different references to the same tablespace
> (either zero for the database default, or the explicit OID of the
> tablespace).  Among other things this would make it impossible to
> use the cloned DB again as a template for CREATE DATABASE.

Right.  I would say 99% of people are using template1 as the template
for new databases, and if we clearly give an error message when they use
a database not in the default tablespace (which we do now), it seems
just fine.  Let's see how many people complain and make adjustments in
8.1 if needed.

> AFAICS this problem stems ultimately from the choice to have a
> special representation (zero) in pg_class for the database's default
> tablespace.  The only way to really get rid of it would be to eliminate
> that provision and say that pg_class.reltablespace is always the correct
> explicit OID.  What that would mean in turn is that we could not copy a
> database and move its tables into a different tablespace, at least not
> without very major work on CREATE DATABASE to make it alter pg_class
> on-the-fly while copying.

Agreed.  That is just too much work for so little gain.

> We might want to think about doing that eventually, but for now I'd
> say that the restriction on merging tablespaces is just something
> we have to live with.  It's less annoying than not being able to
> relocate a database, for sure.

One downside that came up yesterday in a discussion is that once shemas
don't have default tablespaces we can't easily have default tablespaces
for toast and temporary table system schemas.  Now we can't actually do
that now anyway because they are created by the system but it might
limit how we can control these in the future.  I am just throwing this
out as a point.

> Despite this, the default_tablespace GUC variable seems more attractive
> than what we have now.  Last call for objections ...

Sounds good.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Problems with pgxs
Next
From: Gaetano Mendola
Date:
Subject: Re: Suggestion: additional system views