Re: inherit support for foreign tables
От | Kyotaro HORIGUCHI |
---|---|
Тема | Re: inherit support for foreign tables |
Дата | |
Msg-id | 20140218.192919.27127653.horiguchi.kyotaro@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: inherit support for foreign tables (Shigeru Hanada <shigeru.hanada@gmail.com>) |
Ответы |
Re: inherit support for foreign tables
(Tom Lane <tgl@sss.pgh.pa.us>)
Re: inherit support for foreign tables (Shigeru Hanada <shigeru.hanada@gmail.com>) |
Список | pgsql-hackers |
Hello, > 2014-02-10 21:00 GMT+09:00 Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>: > > (2014/02/07 21:31), Etsuro Fujita wrote: > >> So, I've modified the patch so > >> that we continue to disallow SET STORAGE on a foreign table *in the same > >> manner as before*, but, as your patch does, allow it on an inheritance > >> hierarchy that contains foreign tables, with the semantics that we > >> quietly ignore the foreign tables and apply the operation to the plain > >> tables, by modifying the ALTER TABLE simple recursion mechanism. > >> Attached is the updated version of the patch. > > I'm not sure that allowing ALTER TABLE against parent table affects > descendants even some of them are foreign table. I think the rule > should be simple enough to understand for users, of course it should > be also consistent and have backward compatibility. Could you guess any use cases in which we are happy with ALTER TABLE's inheritance tree walking? IMHO, ALTER FOREIGN TABLE always comes with some changes of the data source so implicitly invoking of such commands should be defaultly turned off. If the ALTER'ing the whole familiy is deadfully useful for certain cases, it might be explicitly turned on by some syntax added to CREATE FOREIGN TABLE or ALTER TABLE. It would looks like following, CREATE FOREIGN TABLE ft1 () INHERITS (pt1 ALLOW_INHERITED_ALTER, pt2); ALTER TABLE INCLUDE FOREIGN CHILDREN parent ADD COLUMN add1 integer; These looks quite bad :-( but also seem quite better than accidentially ALTER'ing foreign children. If foreign tables were allowed to ALTER'ed with 'ALTER TABLE', some reconstruction between 'ALTER TABLE' and 'ALTER FOREIGN TABLE' would be needed. > If foreign table can be modified through inheritance tree, this kind > of change can be done. > > 1) create foreign table as a child of a ordinary table > 2) run ALTER TABLE parent, the foreign table is also changed > 3) remove foreign table from the inheritance tree by ALTER TABLE child > NO INHERIT parent > 4) here we can't do same thing as 2), because it is not a child anymore. > > So IMO we should determine which ALTER TABLE features are allowed to > foreign tables, and allow them regardless of the recursivity. > > Comments? regards, -- Kyotaro Horiguchi NTT Open Source Software Center
В списке pgsql-hackers по дате отправления: