Re: create tablespace fails silently, or succeeds improperly

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Bruce Momjian <bruce(at)momjian(dot)us>, Dave Cramer <pg(at)fastcrypt(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: create tablespace fails silently, or succeeds improperly
Date: 2010-10-18 19:29:20
Message-ID: AANLkTinmu-6Qa780q55fg0CML=MEq=S_T-z78_m9pXg4@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Oct 18, 2010 at 3:21 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Robert Haas <robertmhaas(at)gmail(dot)com> writes:
>> On Mon, Oct 18, 2010 at 3:05 PM, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
>>> Robert Haas wrote:
>>>> I haven't yet been convinced we need or want to relax the rule about
>>>> the directory being empty.
>>>
>>> Uh, how would pg_upgrade work then?  It would require renaming the
>>> top-level tablespace directory, which might require root permissions.
>
>> Huh?  Whether or not we choose to store our data files in a
>> subdirectory is an independent question from whether or not we verify
>> that the directory is empty before we start scribbling on it.
>
> No, you're missing the point.  If a pre-9.0 DB is told that tablespace T
> has location '/foo/bar', it'll start creating stuff right in /foo/bar.
> pg_upgrade will tell 9.0 to create the tablespace with location /foo/bar
> as well.  If 9.0 refuses because that directory contains stuff already,
> the upgrade will fail.  Instead, we make a version-numbered subdirectory
> and start creating 9.0's stuff there.
>
> Given the use of the version-numbered subdirectory, I see no real merit
> in insisting that the parent directory be empty anyway.  It'd be
> precisely analogous to "initdb -D /foo/bar/data" insisting that /foo/bar
> be empty, which we have never done and nobody's ever suggested would be
> a good idea.

There aren't a lot of sane use cases for storing other bits of data
inside either $PGDATA or one of your tablespace directories.
However... I guess you might have something like an empty lost+found
directory if you're creating the tablespace directly on top of a mount
point, and perhaps there's a good argument that that shouldn't
interfere. Or, I think I've run across NAS devices where every
directory on the system contains a subdirectory called .snapshot, or
something like that. So maybe insisting on empty isn't right after
all.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2010-10-18 19:31:34 Re: Creation of temporary tables on read-only standby servers
Previous Message Tom Lane 2010-10-18 19:26:38 Re: Creation of temporary tables on read-only standby servers