Re: Index file got removed
От | Julien Rouhaud |
---|---|
Тема | Re: Index file got removed |
Дата | |
Msg-id | 20161122193212.GD22157@nol.local обсуждение исходный текст |
Ответ на | Re: Index file got removed (Michael Paquier <michael.paquier@gmail.com>) |
Ответы |
Re: Index file got removed
|
Список | 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 по дате отправления: