pgsql: Merge near-duplicate code in RI triggers. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Merge near-duplicate code in RI triggers.
Date
Msg-id E1eGAax-0007vA-3K@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Merge near-duplicate code in RI triggers.

Merge ri_restrict_del and ri_restrict_upd into one function ri_restrict.
Create a function ri_setnull that is the common implementation of
RI_FKey_setnull_del and RI_FKey_setnull_upd.  Likewise create a function
ri_setdefault that is the common implementation of RI_FKey_setdefault_del
and RI_FKey_setdefault_upd.  All of these pairs of functions were identical
except for needing to check for no-actual-key-change in the UPDATE cases;
the one extra if-test is a small price to pay for saving so much code.

Aside from removing about 400 lines of essentially duplicate code, this
allows us to recognize that we were uselessly caching two identical plans
whenever there were pairs of triggers using these duplicated functions
(which is likely very common).

Ildar Musin, reviewed by Ildus Kurbangaliev

Discussion: https://postgr.es/m/ca7064a7-6adc-6f22-ca47-8615ba9425a5@postgrespro.ru

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/4797f9b519995ceca5d6b8550b5caa2ff6d19347

Modified Files
--------------
src/backend/utils/adt/ri_triggers.c | 715 ++++++++----------------------------
1 file changed, 146 insertions(+), 569 deletions(-)


pgsql-committers by date:

Previous
From: Peter Eisentraut
Date:
Subject: pgsql: Consistently catch errors from Python _New() functions
Next
From: Tom Lane
Date:
Subject: pgsql: Fix compiler warning in rangetypes_spgist.c.