From: | Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> |
---|---|
To: | Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com> |
Cc: | Kohei KaiGai <kaigai(at)heterodb(dot)com>, Kazutaka Onishi <onishi(at)heterodb(dot)com>, Zhihong Yu <zyu(at)yugabyte(dot)com>, Amit Langote <amitlangote09(at)gmail(dot)com>, Ibrar Ahmed <ibrar(dot)ahmad(at)gmail(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-04-21 15:01:35 |
Message-ID: | 94c99273-4b06-1b13-98da-a716e0454cac@oss.nttdata.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2021/04/16 15:13, Bharath Rupireddy wrote:
> On Fri, Apr 16, 2021 at 8:24 AM Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> wrote:
>> We are still discussing whether RESTRICT option should be pushed down to
>> a foreign data wrapper. But ISTM at least we could reach the consensus about
>> the drop of extra information for each foreign table. So what about applying
>> the attached patch and remove the extra information at first?
>
> Thanks for the patch, here are some comments:
Thanks for the review!
>
> 1) Maybe new empty lines would be better so that the code doesn't look
> cluttered:
> relids = lappend_oid(relids, myrelid); --> a new line after this.
> /* Log this relation only if needed for logical decoding */
> if (RelationIsLogicallyLogged(rel))
>
> relids = lappend_oid(relids, childrelid); --> a new line after this.
> /* Log this relation only if needed for logical decoding */
>
> relids = lappend_oid(relids, relid); --> a new line after this.
> /* Log this relation only if needed for logical decoding */
> if (RelationIsLogicallyLogged(rel))
Applied. Attached is the updated version of the patch
(truncate_foreign_table_dont_pass_only_clause_v2.patch).
This patch includes the patch that Horiguchi-san posted upthead.
I'm thinking to commit this patch at first.
> 2) Instead of
> on foreign tables. <literal>rels</literal> is the list of
> <structname>Relation</structname> data structure that indicates
> a foreign table to truncate.
>
> I think it is better with:
> on foreign tables. <literal>rels</literal> is the list of
> <structname>Relation</structname> data structures, where each
> entry indicates a foreign table to truncate.
Justin posted the patch that improves the documents including
this description. I think that we should revisit that patch.
Attached is the updated version of that patch.
(truncate_foreign_table_docs_v1.patch)
> 3) How about adding an extra para(after below para in
> postgres_fdw.sgml) on WHY we don't push "ONLY" to foreign tables while
> truncating? We could add to the same para for other options if at all
> we don't choose to push them.
> <command>DELETE</command>, or <command>TRUNCATE</command>.
> (Of course, the remote user you have specified in your user mapping must
> have privileges to do these things.)
I agree to document the behavior that ONLY option is always ignored
for foreign tables. But I'm not sure if we can document WHY.
Because I could not find the past discussion about why ONLY option is
ignored on SELECT, etc... Maybe it's enough to document the behavior?
> 4) Isn't it better to mention the "ONLY" option is not pushed to remote
> -- truncate with ONLY clause
> TRUNCATE ONLY tru_ftable_parent;
>
> TRUNCATE ONLY tru_ftable; -- truncate both parent and child
> SELECT count(*) FROM tru_ftable; -- 0
>
> 5) I may be missing something here, why is even after ONLY is ignored
> in the below truncate command, the sum is 126? Shouldn't it truncate
> both tru_ftable_parent and
> -- truncate with ONLY clause
> TRUNCATE ONLY tru_ftable_parent;
> SELECT sum(id) FROM tru_ftable_parent; -- 126
Because TRUNCATE ONLY command doesn't truncate tru_ftable_child talbe
that inehrits tru_ftable_parent. No?
Regards,
--
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION
Attachment | Content-Type | Size |
---|---|---|
truncate_foreign_table_dont_pass_only_clause_v2.patch | text/plain | 15.4 KB |
truncate_foreign_table_docs_v1.patch | text/plain | 4.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Tomas Vondra | 2021-04-21 15:02:05 | Re: RFE: Make statistics robust for unplanned events |
Previous Message | Justin Pryzby | 2021-04-21 14:53:38 | Re: track_planning causing performance regression |