Re: On login trigger: take three

Pavel Stehule <pavel.stehule@gmail.com>

From: Pavel Stehule <pavel.stehule@gmail.com>
To: Konstantin Knizhnik <k.knizhnik@postgrespro.ru>
Cc: Greg Nancarrow <gregn4422@gmail.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2020-12-17T06:31:45Z
Lists: pgsql-hackers
st 16. 12. 2020 v 20:38 odesílatel Pavel Stehule <pavel.stehule@gmail.com>
napsal:

> Attached please find new versoin of the patch based on
> on_connect_event_trigger_WITH_SUGGESTED_UPDATES.patch
>
>> So there is still only  "disable_client_connection_trigger" GUC? because
>> we need possibility to disable client connect triggers and there is no such
>> need for other event types.
>>
>> As you suggested  have added "dathaslogontriggers" flag which is set when
>> client connection trigger is created.
>> This flag is never cleaned (to avoid visibility issues mentioned in my
>> previous mail).
>>
>
> This is much better - I don't see any slowdown when logon trigger is not
> defined
>
> I did some benchmarks and looks so starting language handler is relatively
> expensive - it is about 25% and starting handler like event trigger has
> about 35%. But this problem can be solved later and elsewhere.
>
> I prefer the inverse form of disable_connection_trigger. Almost all GUC
> are in positive form - so enable_connection_triggger is better
>
> I don't think so current handling dathaslogontriggers is good for
> production usage. The protection against race condition can be solved by
> lock on pg_event_trigger
>

I thought about it, and probably the counter of connect triggers will be
better there. The implementation will be simpler and more robust.

Pavel


> Regards
>
> Pavel
>
>
>
>>
>>
>> --
>> Konstantin Knizhnik
>> Postgres Professional: http://www.postgrespro.com
>> The Russian Postgres Company
>>
>>

Commits

  1. Fix some typos in event trigger docs

  2. Use heap_inplace_update() to unset pg_database.dathasloginevt

  3. Remove the flaky check in event_trigger_login regression test

  4. Fix instable 006_login_trigger.pl test

  5. Add support event triggers on authenticated login

  6. Add GUC for temporarily disabling event triggers

  7. Fix typo in reference to __FreeBSD__.

  8. Restore robustness of TAP tests that wait for postmaster restart.

  9. Restore the portal-level snapshot after procedure COMMIT/ROLLBACK.