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  (Robert Haas <robertmhaas@gmail.com>)
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:

Previous
From: David Steele
Date:
Subject: Re: [HACKERS] SQL/JSON in PostgreSQL
Next
From: Andres Freund
Date:
Subject: Re: [HACKERS] Need a builtin way to run all tests faster manner