Re: [HACKERS] foreign partition DDL regression tests - Mailing list pgsql-hackers
From | Ashutosh Bapat |
---|---|
Subject | Re: [HACKERS] foreign partition DDL regression tests |
Date | |
Msg-id | CAFjFpRdNds1cue0D2xmvxb1R1sxwHo6qdDBhL-sB7QjJA2RapQ@mail.gmail.com Whole thread Raw |
In response to | Re: [HACKERS] foreign partition DDL regression tests (Robert Haas <robertmhaas@gmail.com>) |
Responses |
Re: [HACKERS] foreign partition DDL regression tests
|
List | pgsql-hackers |
On Wed, Mar 8, 2017 at 7:36 AM, Robert Haas <robertmhaas@gmail.com> wrote: > On Tue, Mar 7, 2017 at 7:14 AM, Ashutosh Bapat > <ashutosh.bapat@enterprisedb.com> wrote: >> Hi Amit, >> Thanks for adding testcases. Overall the testcases look good. >> >> The testcase is using ALTER TABLE to modify foreign table schema. >> Though this works, I think a better option is to use ALTER FOREIGN >> TABLE. >> >> Something not related to this patch but >> -- no attach partition validation occurs for foreign tables >> ALTER TABLE pt2 ATTACH PARTITION pt2_1 FOR VALUES IN (1); >> >> I am wondering whether we can improve this. For local tables, if a >> valid constraint equivalent to the partitioning condition is not >> present on the table being attached, it scans the data to verify >> partition conditions. But for a foreign table, we don't want to do >> that since the constraint is not guaranteed to be valid after the >> initial check. For a normal foreign table a user can set a constraint >> if s/he knows that that constraint will be honoured on the foreign >> server. Thus instead of saying that we do not validate data, we can >> refuse to attach a partition if corresponding check constraint is >> absent on the foreign table being attached. A user will then be forced >> to add that constraint if s/he is sure that the constraint will be >> obeyed on the foreign server. > > I agree that we could do that, but what value would it have? It just > forces the user to spend two SQL commands doing what could otherwise > be done in one. I don't think it's going to be two commands always. A user who wants to attach a foreign table as a partition, "knows" that the data on the foreign server honours the partitioning bounds. If s/he knows that probably he added the constraint on the foreign table, so that planner could make use of it. Remember this is an existing foreign table. If s/he is not aware that the data on the foreign server doesn't honour partition bounds, adding that as a partition would be a problem. I think, this step gives the user a chance to make a conscious decision. > And the first command might not be that obvious. A hint with error reported would help. In fact, the hint might as well say "add constraint if you are sure that the foreign data honours partition bound specification" or something like that. I noticed that the documentation at https://www.postgresql.org/docs/devel/static/sql-altertable.html for ATTACH PARTITION does not have anything about foreign tables. May be we should add whatever is the current status. > I > think we should leave well enough alone. At least we need to update the documentation. -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company
pgsql-hackers by date: