Обсуждение: pgsql: Remove small inefficiency in ExecARDeleteTriggers/ExecARUpdateTr

Поиск
Список
Период
Сортировка

pgsql: Remove small inefficiency in ExecARDeleteTriggers/ExecARUpdateTr

От
Tom Lane
Дата:
Remove small inefficiency in ExecARDeleteTriggers/ExecARUpdateTriggers.

Whilst poking at nodeModifyTable.c, I chanced to notice that while
its calls to ExecBR*Triggers and ExecIR*Triggers are protected by
tests to see if there are any relevant triggers to fire, its calls
to ExecAR*Triggers are not; the latter functions do the equivalent
tests themselves.  This seems possibly reasonable given the more
complex conditions involved, but what's less reasonable is that
the ExecAR* functions aren't careful to do no work when there is
no work to be done.  ExecARInsertTriggers gets this right, but the
other two will both force creation of a slot that the query may
have no use for.  ExecARUpdateTriggers additionally performed a
usually-useless ExecClearTuple() on that slot.  This is probably
all pretty microscopic in real workloads, but a cycle shaved is a
cycle earned.

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/65158f497a7d7523ad438b2034d01a560fafe6bd

Modified Files
--------------
src/backend/commands/trigger.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)