Re: [PATCH] Implement motd for PostgreSQL

From: "Joel Jacobson" <joel(at)compiler(dot)org>
To: "Fabien COELHO" <coelho(at)cri(dot)ensmp(dot)fr>
Cc: "PostgreSQL Developers" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "Michael Paquier" <michael(at)paquier(dot)xyz>
Subject: Re: [PATCH] Implement motd for PostgreSQL
Date: 2021-04-04 07:25:31
Message-ID: c93c3212-0552-4f48-8925-4b0aff3459a7@www.fastmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sun, Apr 4, 2021, at 09:16, Fabien COELHO wrote:
> If other cases are indeed pointers. For pgbench, all direct "if (xxx &&"
> cases are simple booleans or integers, pointers seem to have "!= NULL".
> While looking quickly at the grep output, ISTM that most obvious pointers
> have "!= NULL" and other cases often look like booleans:
>
> catalog/pg_operator.c: if (isDelete && t->oprcom == baseId)
> catalog/toasting.c: if (check && lockmode != AccessExclusiveLock)
> commands/async.c: if (amRegisteredListener && listenChannels == NIL)
> commands/explain.c: if (es->analyze && es->timing)
> …
>
> I'm sure there are exceptions, but ISTM that the local style is "!= NULL".

Many thanks for explaining.

>
> >> I'm wondering whether it should be possible to designate (1) a file the
> >> content of which would be shown, or (2) a command, the output of which
> >> would be shown [ok, there might be security implications on this one].
> >
> > Can't we just do that via plpgsql and EXECUTE somehow?
>
> Hmmm.
>
> Should we want to execute forcibly some PL/pgSQL on any new connection?

Oh, of course, you want the command to be execute for each new connection.

My idea was to use PL/pgSQL to execute only when you wanted to update the stored motd value,
but of course, if you want a new value from the command for each new connection,
then that doesn't work (and it doesn't work anyway due to not being able to execute ALTER SYSTEM from functions).

> Not sure this is really desirable. I was thinking of something more
> trivial, like the "motd" directeve could designate a file instead of the
> message itself.
>
> There could be a hook system to execute some user code on new connections
> and other events. It could be a new kind of event trigger, eg with
> connection_start, connection_end… That could be nice for other purposes,
> i.e. auditing. Now, event triggers are not global, they work inside a
> database, which would suggest that if extended a new connection event
> would be fired per database connection, not just once per connection. Not
> sure it would be a bad thing.

Such a hook sounds like a good idea.
If we would have such a hook, then another possibility would be to implement motd as an extension, right?

/Joel

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Langote 2021-04-04 08:19:48 Re: simplifying foreign key/RI checks
Previous Message Kazutaka Onishi 2021-04-04 07:18:06 Re: TRUNCATE on foreign table