Re: TRUNCATE on foreign table

From: Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>
To: Kohei KaiGai <kaigai(at)heterodb(dot)com>
Cc: Kazutaka Onishi <onishi(at)heterodb(dot)com>, Amit Langote <amitlangote09(at)gmail(dot)com>, Ibrar Ahmed <ibrar(dot)ahmad(at)gmail(dot)com>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, Zhihong Yu <zyu(at)yugabyte(dot)com>, PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com>
Subject: Re: TRUNCATE on foreign table
Date: 2021-03-30 06:29:33
Message-ID: 083f82e6-818a-b758-162b-6152ffa9224e@oss.nttdata.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2021/03/30 10:11, Kohei KaiGai wrote:
> 2021年3月30日(火) 3:45 Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>:
>>
>> On 2021/03/28 2:37, Kazutaka Onishi wrote:
>>> Fujii-san,
>>>
>>> Thank you for your review!
>>> Now I prepare v5 patch and I'll answer to your each comment. please
>>> check this again.
>>> m(_ _)m
>>>
>>> 1. In postgres-fdw.sgml, "and truncatable" should be appended into the
>>> above first description?
>>> 2. truncate.sgml should be updated because, for example, it contains
>>> the above descriptions.
>>>
>>> Yeah, you're right. I've fixed it.
>>>
>>>
>>>
>>> 3. Don't we need to document the detail information about frels_extra?
>>>
>>> I've written about frels_extra into fdwhander.sgml.
>>>
>>>
>>>
>>> 4. postgres_fdw determines whether to specify ONLY or not by checking
>>> whether the passed extra value is zero or not.
>>>
>>> Please refer this:
>>> https://www.postgresql.org/message-id/CAOP8fzb-t3WVNLjGMC%2B4sV4AZa9S%3DMAQ7Q6pQoADMCf_1jp4ew%40mail.gmail.com
>>>> Negative value means that foreign-tables are not specified in the TRUNCATE
>>>> command, but truncated due to dependency (like partition's child leaf).
>>>
>>> I've added this information into fdwhandler.sgml.
>>
>> Even when a foreign table is specified explicitly in TRUNCATE command,
>> its extra value can be negative if it's found as an inherited children firstly
>> (i.e., in the case where the partitioned table having that foreign table as
>> its partition is specified explicitly in TRUNCATE command).
>> Isn't this a problem?
>>
>> Please imagine the following example;
>>
>> ----------------------------------
>> create extension postgres_fdw;
>> create server loopback foreign data wrapper postgres_fdw;
>> create user mapping for public server loopback;
>>
>> create table t (i int, j int) partition by hash (j);
>> create table t0 partition of t for values with (modulus 2, remainder 0);
>> create table t1 partition of t for values with (modulus 2, remainder 1);
>>
>> create table test (i int, j int) partition by hash (i);
>> create table test0 partition of test for values with (modulus 2, remainder 0);
>> create foreign table ft partition of test for values with (modulus 2, remainder 1) server loopback options (table_name 't');
>> ----------------------------------
>>
>> In this example, "truncate ft, test" works fine, but "truncate test, ft" causes
>> an error though they should work in the same way basically.
>>
> (Although it was originally designed by me...)
> If frels_extra would be a bit-masked value, we can avoid the problem.
>
> Please assume the three labels below:
> #define TRUNCATE_REL_CONTEXT__NORMAL 0x01
> #define TRUNCATE_REL_CONTEXT__ONLY 0x02
> #define TRUNCATE_REL_CONTEXT__CASCADED 0x04
>
> Then, assign these labels on the extra flag according to the context where
> the foreign-tables appeared in the truncate command.
> Even if it is specified multiple times in the different context, FDW extension
> can handle the best option according to the flags.
>
>> In this example, "truncate ft, test" works fine, but "truncate test, ft" causes
>
> In both cases, ExecForeignTruncate shall be invoked to "ft" with
> (NORMAL | CASCADED),
> thus, postgres_fdw can determine the remote truncate command shall be
> executed without "ONLY" clause.
>
> How about the idea?

This idea looks better to me.

Regards,

--
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Markus Wanner 2021-03-30 06:30:34 Re: [PATCH] add concurrent_abort callback for output plugin
Previous Message Bharath Rupireddy 2021-03-30 06:21:01 Re: Redundant errdetail prefix "The error was:" in some logical replication messages