Re: TRUNCATE on foreign table
Fujii Masao <masao.fujii@oss.nttdata.com>
From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: Kazutaka Onishi <onishi@heterodb.com>
Cc: Amit Langote <amitlangote09@gmail.com>,
Ibrar Ahmed <ibrar.ahmad@gmail.com>, Kohei KaiGai <kaigai@heterodb.com>,
Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>,
Zhihong Yu <zyu@yugabyte.com>,
PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>,
Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Date: 2021-03-29T18:45:04Z
Lists: pgsql-hackers
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. Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION
Commits
-
doc: Review for "Allow TRUNCATE command to truncate foreign tables".
- 0c8f40863acb 14.0 landed
-
Don't pass "ONLY" options specified in TRUNCATE to foreign data wrapper.
- 8e9ea08bae93 14.0 landed
-
Support tab-complete for TRUNCATE on foreign tables.
- 81e094bdfdd6 14.0 landed
-
Allow TRUNCATE command to truncate foreign tables.
- 8ff1c94649f5 14.0 landed
-
Add support for asynchronous execution.
- 27e1f14563cf 14.0 cited