Re: Index file got removed - Mailing list pgsql-bugs

From Julien Rouhaud
Subject Re: Index file got removed
Date
Msg-id bc019d06-5928-d814-3193-7669c802d71c@dalibo.com
Whole thread Raw
In response to Re: Index file got removed  (Julien Rouhaud <julien.rouhaud@dalibo.com>)
Responses Re: Index file got removed
List pgsql-bugs
On 17/11/2016 22:31, Julien Rouhaud wrote:
> On 16/11/2016 18:26, Tom Lane wrote:
>> Michael Paquier <michael.paquier@gmail.com> writes:
>>> On Wed, Nov 16, 2016 at 3:16 AM, sudalai <sudalait2@gmail.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.

After some more thoughts, this is probably broken if a single command
recreates a mix of indexes that should be and should not be rebuilt.
The original tablespace information could be saved and restored around
DefineIndex(), but since it looks like an ugly hack I prefer to wait if
there's a better fix for this.

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

pgsql-bugs by date:

Previous
From: Julien Rouhaud
Date:
Subject: Re: Index file got removed
Next
From: vbochkov@eastwind.ru
Date:
Subject: BUG #14428: decode function don't return correct value when executed from agent's job or external program