Re: Index file got removed

From: Julien Rouhaud <julien(dot)rouhaud(at)dalibo(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Cc: sudalai <sudalait2(at)gmail(dot)com>, PostgreSQL mailing lists <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: Index file got removed
Date: 2016-11-17 21:31:59
Message-ID: e7f50e1e-afa2-a31a-7c40-a57e4c501485@dalibo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 16/11/2016 18:26, Tom Lane wrote:
> Michael Paquier <michael(dot)paquier(at)gmail(dot)com> writes:
>> On Wed, Nov 16, 2016 at 3:16 AM, sudalai <sudalait2(at)gmail(dot)com> wrote:
>>> I am creating a table test and index for that table on default tablespace.
>>> Then i'm changing default_tablespace to some other tablespace.
>>> After that altering one of the index column.
>>> This alter operation moves the index to new default_tablespace, but index
>>> file is missing in new tablespace.
>
>> I am just digging into it, instinctively that would be something in
>> tablecmds.c..
>
> I'm betting that where it reconstructs textual commands to create the new
> indexes, it's forgotten to do anything about tablespaces.

I looked at it, and IIUC the issue is that during AT_PASS_OLD_INDEX
pass, ATExecAddIndex defines a new index using the old heap in original
tablespace (stmt->oldNode is valid), and DefineIndex will create a new
cat entry using the current default tablespace instead of the existing
index one.

The only way I found to fix this is to save the original tablespace in
ATExecAddIndex() if the old heap is reused, see attached patch. I'm not
at all familiar with this part of code, but at least initdb and
regression tests don't fail.

--
Julien Rouhaud
http://dalibo.com - http://dalibo.org

Attachment Content-Type Size
fix_at_addindex.diff text/x-diff 837 bytes

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Julien Rouhaud 2016-11-17 22:01:14 Re: Index file got removed
Previous Message Greg Stark 2016-11-17 15:45:35 Re: Postgres 9.6.1 accepts connections from not allowed Ip addresses