On Wed, Dec 9, 2020 at 10:11 AM Greg Nancarrow <gregn4...@gmail.com> wrote: > > On Wed, Dec 9, 2020 at 1:35 AM vignesh C <vignes...@gmail.com> wrote: > > > > Most of the code present in > > v9-0001-Enable-parallel-SELECT-for-INSERT-INTO-.-SELECT.patch is > > applicable for parallel copy patch also. The patch in this thread > > handles the check for PROPARALLEL_UNSAFE, we could slightly make it > > generic by handling like the comments below, that way this parallel > > safety checks can be used based on the value set in > > max_parallel_hazard_context. There is nothing wrong with the changes, > > I'm providing these comments so that this patch can be generalized for > > parallel checks and the same can also be used by parallel copy. > > Hi Vignesh, > > You are absolutely right in pointing that out, the code was taking > short-cuts knowing that for Parallel Insert, > "max_parallel_hazard_context.max_interesting" had been set to > PROPARALLEL_UNSAFE, which doesn't allow that code to be generically > re-used by other callers. >
In v10-0003-Enable-parallel-INSERT-and-or-SELECT-for-INSERT-INTO, --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -2049,10 +2049,6 @@ heap_prepare_insert(Relation relation, HeapTuple tup, TransactionId xid, * inserts in general except for the cases where inserts generate a new * CommandId (eg. inserts into a table having a foreign key column). */ - if (IsParallelWorker()) - ereport(ERROR, - (errcode(ERRCODE_INVALID_TRANSACTION_STATE), - errmsg("cannot insert tuples in a parallel worker"))); I think I have given a comment long back that here we can have an Assert to check if it is a parallel-worker and relation has a foreign-key and probably other conditions if possible. It is better to protect such cases from happening due to any bugs. Is there a reason you have not handled it? [1] - https://www.postgresql.org/message-id/CAA4eK1KyftVDgovvRQmdV1b%3DnN0R-KqdWZqiu7jZ1GYQ7SO9OA%40mail.gmail.com -- With Regards, Amit Kapila.