| From: | Amul Sul <sulamul(at)gmail(dot)com> |
|---|---|
| To: | Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com> |
| Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: Avoid unnecessary table open/close for TRUNCATE foo, foo, foo; kind of commands |
| Date: | 2021-04-09 15:39:49 |
| Message-ID: | CAAJ_b94xdtt3LnPQf3q7iQNhtd0SP5Fi6hGHbsNG2pWDt-RiNQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Fri, Apr 9, 2021 at 8:51 PM Bharath Rupireddy
<bharath(dot)rupireddyforpostgres(at)gmail(dot)com> wrote:
>
> Hi,
>
> While checking the ExecuteTruncate code for the FOREIGN TRUNCATE
> feature, I saw that we filter out the duplicate relations specified in
> the TRUNCATE command. But before skipping the duplicates, we are just
> opening the relation, then if it is present in the already seen
> relids, then closing it and continuing further.
>
> I think we can just have the duplicate checking before table_open so
> that in cases like TRUNCATE foo, foo, foo, foo; we could save costs of
> table_open and table_close. Attaching a small patch. Thoughts?
>
> This is just like what we already do for child tables, see following
> in ExecuteTruncate:
> foreach(child, children)
> {
> Oid childrelid = lfirst_oid(child);
>
> if (list_member_oid(relids, childrelid))
> continue;
>
Well yes, the patch looks pretty much reasonable to be.
Regards,
Amul
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Fujii Masao | 2021-04-09 15:53:02 | Re: Avoid unnecessary table open/close for TRUNCATE foo, foo, foo; kind of commands |
| Previous Message | Bharath Rupireddy | 2021-04-09 15:21:30 | Avoid unnecessary table open/close for TRUNCATE foo, foo, foo; kind of commands |