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

From Julien Rouhaud
Subject Re: Index file got removed
Date
Msg-id 20161122193212.GD22157@nol.local
Whole thread Raw
In response to Re: Index file got removed  (Michael Paquier <michael.paquier@gmail.com>)
Responses Re: Index file got removed
List pgsql-bugs
On Tue, Nov 22, 2016 at 09:57:29PM +0900, Michael Paquier wrote:
>=20
> So I have explored in the code what would be the best way to fix the prob=
lem:
> 1) Append the correct tablespace to the SQL string of CREATE INDEX.
> Those command strings are stored in changedIndexDefs in tablecmds.c,
> and those get generated by pg_get_indexdef_string(), which can append
> a tablespace if it is *not* a default. Appending *pg_default* to it
> would be dangerous and it would have user-visible changes. OK _string
> is not directly SQL callable but any caller of this function would be
> impacted.
> 2) Take advantage of is_alter_table in DefineIndex(), and do some
> extra processing when assigning the tablespace of an index. In short,
> if IndexStmt->tablespace is NULL and DefineIndex() is used for an
> ALTER TABLE, ignore default_tablespace and assign pg_default. This
> way, the current tablespace of an index is protected all the time,
> even if the tablespace of an index is not the default.
>=20
> 2) is more solid, and is far less invasive than 1), and has no impact
> on existing routines of ruleutils.c, so I have implemented it with a
> set of regression tests. I am adding that to the next CF so as we
> don't forget about it. Thoughts are welcome.

I agree that 2nd solution looks better.  I reviewed your patch and everythi=
ng
works as intended, same for new regression tests which seem to cover all
possible cases.  I mark it as ready for committers.

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

pgsql-bugs by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Index file got removed
Next
From: Tom Lane
Date:
Subject: Re: Index file got removed