On Monday, October 23, 2023, Laurenz Albe <laurenz.a...@cybertec.at> wrote:

> On Mon, 2023-10-23 at 11:37 -0700, David G. Johnston wrote:
> > > I didn't understand this completely.  You want default privileges
> displayed as
> > > "(default)", but are you for or against "\pset null" to have its
> normal effect on
> > > the output of backslash commands in all other cases?
> >
> > I haven’t inspected other cases but to my knowledge we don’t typically
> represent
> > non-unknown things using NULL so I’m not expecting other places to have
> this
> > representation problem.
>
> The first example that comes to my mind is the "ICU Locale" and the "ICU
> Rules"
> in the output of \l.  There are many others.


Both of those fall into “this null means there is no value for these
(because we aren’t using icu)”.  I have no qualms with leaving true nulls
represented as themselves.  Clean slate maybe I print “(not using icu)”
there instead of null but it isn’t worth the effort to change.

>
> > I won’t argue that exposing such NULLS is wrong, just it would
> preferable IME
> > to avoid doing so.  NULL means unknown or not applicable and default
> privileges
> > are neither of those things.  I get why our catalogs choose such an
> encoding and
> > agree with it, and users that find the need to consult the catalogs will
> need to
> > learn such details.  But we should strive for them to be able to survive
> with
> > psql meta-commands.
>
> Sure, it would be best to hide this implementation detail from the user.
> The correct way to do that would be to fake an ACL entry like
> "laurenz=arwdDxt/laurenz"
> if there is a NULL in the catalog, but that would add a ton of special-case
> code to psql, which does not look appealing at all.


More generically it would be “[PUBLIC=]/???/postgres” and
{OWNER}=???/postgres

It would ideally be a function call for psql and a system info function
usable for anyone.

David J.

Reply via email to