Re: Parallel INSERT (INTO ... SELECT ...) - Mailing list pgsql-hackers

From Greg Nancarrow
Subject Re: Parallel INSERT (INTO ... SELECT ...)
Date
Msg-id CAJcOf-e3OXoJab27DrTXt5FHKyBtuPPWRxbsCaO2cxJLkGu91g@mail.gmail.com
Whole thread Raw
In response to Re: Parallel INSERT (INTO ... SELECT ...)  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
Responses Re: Parallel INSERT (INTO ... SELECT ...)
List pgsql-hackers
On Wed, Oct 7, 2020 at 12:40 AM Bharath Rupireddy
<bharath.rupireddyforpostgres@gmail.com> wrote:
> In parallel, we are not doing anything(due to the same reason
> explained in above comment) to find whether there is a foreign
> partition or not while deciding to go with parallel/non-parallel copy,
> we are just throwing an error during the first tuple insertion into
> the partition.
>
> errmsg("cannot perform PARALLEL COPY if partition has BEFORE/INSTEAD
> OF triggers, or if the partition is foreign partition"),
>                             errhint("Try COPY without PARALLEL option")));
>

I'm wondering whether code similar to the following can safely be used
to detect a foreign partition:

    if (rel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)
    {
        int i;
        PartitionDesc pd = RelationGetPartitionDesc(rel);
        for (i = 0; i < pd->nparts; i++)
        {
            if (get_rel_relkind(pd->oids[i]) == RELKIND_FOREIGN_TABLE)
            {
                table_close(rel, NoLock);
                return false;
            }
        }
    }

Thoughts?

Regards,
Greg Nancarrow
Fujitsu Australia



pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: [patch] Fix checksum verification in base backups for zero page headers
Next
From: Andy Fan
Date:
Subject: Re: Improve choose_custom_plan for initial partition prune case