public inbox for [email protected]  
help / color / mirror / Atom feed
From: Josef Šimánek <[email protected]>
To: Laurenz Albe <[email protected]>
Cc: Daniel Gustafsson <[email protected]>
Cc: [email protected]
Cc: pgsql-docs <[email protected]>
Subject: Re: SQL command : ALTER DATABASE OWNER TO
Date: Sun, 2 Nov 2025 18:25:01 +0100
Message-ID: <CAFp7Qwo=FxcLS23-XkJ+sXmUECfnVZkXo96ru=X9JG+g_62J5A@mail.gmail.com> (raw)
In-Reply-To: <[email protected]>
References: <2023185982.281851219.1646733038464.JavaMail.root@zimbra15-e2.priv.proxad.net>
	<[email protected]>
	<[email protected]>
	<[email protected]>
	<[email protected]>

ne 2. 11. 2025 v 18:23 odesílatel Laurenz Albe
<[email protected]> napsal:
>
> On Wed, 2024-01-24 at 15:26 +0100, Daniel Gustafsson wrote:
> > > On 24 Jan 2024, at 15:23, Laurenz Albe <[email protected]> wrote:
> > >
> > > On Wed, 2024-01-24 at 11:08 +0100, [email protected] wrote:
> > > > for this "ALTER DATABASE" form, it should be mentioned that after execution of the command,
> > > > the old database owner loses all his privileges on it (even connection) although it might
> > > > still owns schemas or objects (tables, index,...) inside it.
> > > >
> > > > Thanks in advance to add this important precision.
> > >
> > > How about this:
> > >
> > > diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml
> > > index 4044f0908f..44042f863c 100644
> > > --- a/doc/src/sgml/ddl.sgml
> > > +++ b/doc/src/sgml/ddl.sgml
> > > @@ -1891,6 +1891,8 @@ ALTER TABLE <replaceable>table_name</replaceable> OWNER TO <replaceable>new_owne
> > >    Superusers can always do this; ordinary roles can only do it if they are
> > >    both the current owner of the object (or inherit the privileges of the
> > >    owning role) and able to <literal>SET ROLE</literal> to the new owning role.
> > > +   All object privileges of the old owner are transferred to the new owner
> > > +   along with the ownership.
> > >   </para>
> >
> > Doesn't seem unreasonable to me, it won't make the docs harder to read and use
> > for experienced users while it may make them easier to follow for new users.
>
> Here is a patch for this change.

Did a quick test: during review

retro=# CREATE USER josef;
CREATE DATABASE testdb OWNER josef;
GRANT ALL ON DATABASE testdb TO josef;
CREATE ROLE
CREATE DATABASE
GRANT
retro=# \l testdb
                                                  List of databases
  Name  | Owner | Encoding | Locale Provider |   Collate   |    Ctype
  | ICU Locale | ICU Rules | Access privileges
--------+-------+----------+-----------------+-------------+-------------+------------+-----------+-------------------
 testdb | josef | UTF8     | libc            | cs_CZ.UTF-8 |
cs_CZ.UTF-8 |            |           | =Tc/josef        +
        |       |          |                 |             |
  |            |           | josef=CTc/josef
(1 row)

retro=# ALTER DATABASE testdb OWNER TO retro;
ALTER DATABASE
retro=# \l testdb
                                                  List of databases
  Name  | Owner | Encoding | Locale Provider |   Collate   |    Ctype
  | ICU Locale | ICU Rules | Access privileges
--------+-------+----------+-----------------+-------------+-------------+------------+-----------+-------------------
 testdb | retro | UTF8     | libc            | cs_CZ.UTF-8 |
cs_CZ.UTF-8 |            |           | =Tc/retro        +
        |       |          |                 |             |
  |            |           | retro=CTc/retro
(1 row)

It works exactly as described in this patch. +1

> Yours,
> Laurenz Albe






reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected], [email protected]
  Subject: Re: SQL command : ALTER DATABASE OWNER TO
  In-Reply-To: <CAFp7Qwo=FxcLS23-XkJ+sXmUECfnVZkXo96ru=X9JG+g_62J5A@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox