1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-27 07:42:10 +03:00

Improve FK trigger parallel-safety check added by 05c8482f7f.

Commit 05c8482f7f added special logic related to parallel-safety of FK
triggers. This is a bit of a hack and should have instead been done by
simply setting appropriate proparallel values on those trigger functions
themselves.

Suggested-by: Tom Lane
Author: Greg Nancarrow
Reviewed-by: Amit Kapila
Discussion: https://postgr.es/m/2309260.1615485644@sss.pgh.pa.us
This commit is contained in:
Amit Kapila
2021-03-13 09:13:21 +05:30
parent b9164eab20
commit c5be48f092
3 changed files with 5 additions and 19 deletions

View File

@@ -971,24 +971,10 @@ target_rel_trigger_max_parallel_hazard(Relation rel,
*/
for (i = 0; i < rel->trigdesc->numtriggers; i++)
{
int trigtype;
Oid tgfoid = rel->trigdesc->triggers[i].tgfoid;
if (max_parallel_hazard_test(func_parallel(tgfoid), context))
return true;
/*
* If the trigger type is RI_TRIGGER_FK, this indicates a FK exists in
* the relation, and this would result in creation of new CommandIds
* on insert/update and this isn't supported in a parallel worker (but
* is safe in the parallel leader).
*/
trigtype = RI_FKey_trigger_type(tgfoid);
if (trigtype == RI_TRIGGER_FK)
{
if (max_parallel_hazard_test(PROPARALLEL_RESTRICTED, context))
return true;
}
}
return false;