Re: TRUNCATE on foreign table

Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>

From: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
To: Kazutaka Onishi <onishi@heterodb.com>
Cc: Kohei KaiGai <kaigai@heterodb.com>, Zhihong Yu <zyu@yugabyte.com>, Fujii Masao <masao.fujii@oss.nttdata.com>, Amit Langote <amitlangote09@gmail.com>, Ibrar Ahmed <ibrar.ahmad@gmail.com>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Date: 2021-04-05T14:35:32Z
Lists: pgsql-hackers
On Mon, Apr 5, 2021 at 7:38 PM Kazutaka Onishi <onishi@heterodb.com> wrote:
> > 3) I think we need truncatable behaviour that is consistent with updatable.
>
> It's not correct. "truncatable" option works the same as "updatable".
> I've confirmed that the table can be truncated with the combination:
> truncatable on the server setting is false & truncatable on the table
> setting is true.
> I've also added to the test.

Yeah you are right! I was wrong in understanding.

> > 7) Did you try checking whether we reach hash_destroy code when a
> > failure happens on executing truncate on a remote table? Otherwise we
> > might want to do routine->ExecForeignTruncate inside PG_TRY block?
>
> I've added PG_TRY block.

Did you check that hash_destroy is not reachable when an error occurs
on the remote server while executing truncate command? If yes, then
only we will have PG_TRY block, otherwise not.

> > 9) It will be good if you can divide up your patch into 3 separate
> > patches - 0001 code, 0002 tests, 0003 documentation
>
> I'll do it when I send a patch in the future, please forgive me on this patch.

That's okay.

With Regards,
Bharath Rupireddy.
EnterpriseDB: http://www.enterprisedb.com



Commits

  1. doc: Review for "Allow TRUNCATE command to truncate foreign tables".

  2. Don't pass "ONLY" options specified in TRUNCATE to foreign data wrapper.

  3. Support tab-complete for TRUNCATE on foreign tables.

  4. Allow TRUNCATE command to truncate foreign tables.

  5. Add support for asynchronous execution.