Re: Omitting tablespace creation from pg_dumpall...

From: Chander Ganesan <chander(at)otg-nc(dot)com>
To: "Florian G(dot) Pflug" <fgp(at)phlo(dot)org>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Omitting tablespace creation from pg_dumpall...
Date: 2006-06-16 16:46:37
Message-ID: 4492E06D.7010206@otg-nc.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-patches

Florian G. Pflug wrote:
> Chander Ganesan wrote:
>> Tom Lane wrote:
>>> Chander Ganesan <chander(at)otg-nc(dot)com> writes:
>>>
>>>> I'd like to suggest that a feature be added to pg_dumpall to remove
>>>> tablespace definitions/creation from the output. While the
>>>> inclusion is important for backups - it's equally painful when
>>>> attempting to migrate data from a development to production
>>>> database. Since PostgreSQL won't create the directory that will
>>>> contain the tablespace, the tablespace creation will fail.
>>>> Following that, any objects that are to be created in that
>>>> tablespace will fail (since the tablespace doesn't exist).
>>>
>>> If the above statements were actually true, it'd be a problem, but they
>>> are not true. The dump only contains "SET default_tablespace = foo"
>>> commands, which may themselves fail, but they won't prevent subsequent
>>> CREATE TABLE commands from succeeding.
>>>
>>>
>> With PostgreSQL 8.1.4, if I do the following:
>>
>> create tablespace test location '/srv/tblspc';
>> create database test with tablespace = test;
>>
>> The pg_dumpall result will contain:
>> *****
>> CREATE TABLESPACE test OWNER postgres LOCATION '/srv/tblspc';
>> CREATE DATABASE test WITH TEMPLATE=template0 OWNER=postgres
>> ENCODING='utf8' TABLESPACE=test;
>
> Hm.. I guess pg_dumpall is meant to create a identical clone of a
> postgres "cluster" (Note that the term cluster refers to one
> postgres-instance serving multiple databases, and _not_ to a cluster
> in the high-availability sense). For moving a single database from one
> machine to another, pg_dump might suit you more. With pg_dump, you
> normally create the "new" database manually, and _afterwards_ restore
> your dump into this database.
>
> I'd say that pg_dumpall not supporting restoring into a different
> tablespace is compareable to not supporting database renaming. Think
> of pg_dumpall as equivalent to copying the data directory - only that
> it works while the database is online, and supports differing
> architectures on source and destination machine.
>
> greetings, Florian Pflug
I understand why it's doing what it's doing - and I'm not disputing the
usefulness of it. I just think it might be good to have a flag that
allows the omission of the alternate tablespace usage (or set the
default instead of including it in the create db statement), since I can
see how the failures might become problematic in some environments.

--
Chander Ganesan
The Open Technology Group
One Copley Parkway, Suite 210
Morrisville, NC 27560
Phone: 877-258-8987/919-463-0999
http://www.otg-nc.com

In response to

Browse pgsql-general by date

  From Date Subject
Next Message snacktime 2006-06-16 17:16:43 Re: minimizing downtime when upgrading
Previous Message LLC 2006-06-16 16:42:51 PL/Perl questions...

Browse pgsql-patches by date

  From Date Subject
Next Message Bruce Momjian 2006-06-16 17:44:58 Re: patch fixing the old RETURN NEXT bug
Previous Message Bruce Momjian 2006-06-16 16:24:03 Re: Test request for Stats collector performance improvement