Re: Weird behaviour with ALTER TABLE ... SET TABLESPACE ... statement

From: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Guillaume Lelarge <guillaume(at)lelarge(dot)info>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Weird behaviour with ALTER TABLE ... SET TABLESPACE ... statement
Date: 2008-10-07 11:16:06
Message-ID: 48EB44F6.8060009@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Tom Lane wrote:
> Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com> writes:
>> Yeah, seems like we need to allocate a new relfilenode in the new
>> tablespace.
>
> I looked into tablecmds.c and verified that ATExecSetTableSpace doesn't
> worry about selecting a new relfilenode. I'm also noticing a number of
> permissions-type checks that seem like they'd better be done in
> ATPrepSetTableSpace, because we don't go through ATExecSetTableSpace
> if the table requires rewriting for other reasons.

The same tests are performed in the rewriting code path in
ATRewriteTables() and in heap_create_with_catalog().

I fixed the relfilenode allocation in 8.1-HEAD. Doesn't seem worth
fixing in 8.0, because GetNewRelFileNode() didn't exist before 8.1, so
we couldn't check for collisions anyway.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2008-10-07 11:32:53 Re: Reducing some DDL Locks to ShareLock
Previous Message Simon Riggs 2008-10-07 08:17:25 Re: [PATCHES] Infrastructure changes for recovery