Re: stable for each row before insert trigger

Поиск
Список
Период
Сортировка
От Олег Самойлов
Тема Re: stable for each row before insert trigger
Дата
Msg-id CDE5F13C-FF3E-4FA5-BEC7-4ABBBD62A768@ya.ru
обсуждение исходный текст
Ответ на Re: stable for each row before insert trigger  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: stable for each row before insert trigger
Список pgsql-general
Luca, I also read this section before ask the question.

> 18 окт. 2019 г., в 10:15, Tom Lane <tgl@sss.pgh.pa.us> написал(а):
>
> =?utf-8?B?0J7Qu9C10LMg0KHQsNC80L7QudC70L7Qsg==?= <splarv@ya.ru> writes:
>> According to documentation the words "VOLATILE, STABLE, IMMUTABLE" is somehow useful with trigger functions, for
instancementioned that the AFTER INSERT trigger should be VOLATILE. The question is how this words affect a for each
rowbefore insert trigger? Can be some optimisation here? 
>
> Where did you read that?  There's no optimization that considers the
> volatility of trigger functions --- they'll be called exactly when
> specified, no more or less.

Good to see this. :) But there is somehow optimisation for triggers, which is somehow mentioned in the documentation,
butnot clearly defined. 

https://www.postgresql.org/docs/current/sql-createfunction.html

> STABLE indicates .... (It is inappropriate for AFTER triggers that wish to query rows modified by the current
command.)

So, STABLE is inappropriate for such trigger, but is appropriate for BEFORE trigger?

Luca correctly pointed to:
https://www.postgresql.org/docs/current/trigger-datachanges.html

> If your trigger function is written in any of the standard procedural languages, then the above statements apply only
ifthe function is declared VOLATILE. Functions that are declared STABLE or IMMUTABLE will not see changes made by the
callingcommand in any case. 

So will be good put inside right section

https://www.postgresql.org/docs/current/xfunc-volatility.html

Exact definition how "VOLATILE, STABLE, IMMUTABLE" affect a trigger function.

For instance, I expect that the FOR EACH ROW BEFORE trigger marked as STABLE will be faster than VOLATILE without
importantnegative side effects. I observed 3% benefit. IMMUTABLE trigger is slightly slower then STABLE, but I am not
sure,too low difference. 





В списке pgsql-general по дате отправления:

Предыдущее
От: Ekaterina Amez
Дата:
Сообщение: Re: Sv: Conflict between autovacuum and backup restoration
Следующее
От: Luca Ferrari
Дата:
Сообщение: Re: Postgres Point in time Recovery (PITR),