Обсуждение: Remove deprecated role membership options from psql help for CREATE USER/GROUP

Поиск
Список
Период
Сортировка

Remove deprecated role membership options from psql help for CREATE USER/GROUP

От
Japin Li
Дата:
Hi,

When I review [1], I found commit 8e78f0a1 deprecated the IN GROUP and USER
clauses in CREATE ROLE, and also removed IN GROUP and USER from the psql \h
CREATE ROLE help output.

However, the psql help for the legacy synonyms CREATE USER and CREATE GROUP
still lists the deprecated options:

- IN GROUP role_name [, ...]
- USER role_name [, ...]

postgres=# \h create role
Command:     CREATE ROLE
Description: define a new database role
Syntax:
CREATE ROLE name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | SYSID uid

URL: https://www.postgresql.org/docs/devel/sql-createrole.html

postgres=# \h create user
Command:     CREATE USER
Description: define a new database role
Syntax:
CREATE USER name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

URL: https://www.postgresql.org/docs/devel/sql-createuser.html

postgres=# \h create group
Command:     CREATE GROUP
Description: define a new database role
Syntax:
CREATE GROUP name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

URL: https://www.postgresql.org/docs/devel/sql-creategroup.html

Since CREATE USER is documented as equivalent to CREATE ROLE WITH LOGIN, and
CREATE GROUP is equivalent to CREATE ROLE, their help syntax should remain
consistent with CREATE ROLE.

I propose removing the deprecated IN GROUP and USER lines from the help text
of both CREATE USER and CREATE GROUP. This would be a simple documentation
cleanup that aligns the psql help with current reality and avoids confusing
users with obsolete syntax.

[1] https://www.postgresql.org/message-id/4c5f895e-3281-48f8-b943-9228b7da6471%40gmail.com

-- 
Regards,
Japin Li
ChengDu WenWu Information Technology Co., Ltd.


Вложения

Re: Remove deprecated role membership options from psql help for CREATE USER/GROUP

От
Fujii Masao
Дата:
On Tue, Jan 6, 2026 at 7:16 PM Japin Li <japinli@hotmail.com> wrote:
>
>
> Hi,
>
> When I review [1], I found commit 8e78f0a1 deprecated the IN GROUP and USER
> clauses in CREATE ROLE, and also removed IN GROUP and USER from the psql \h
> CREATE ROLE help output.
>
> However, the psql help for the legacy synonyms CREATE USER and CREATE GROUP
> still lists the deprecated options:
>
> - IN GROUP role_name [, ...]
> - USER role_name [, ...]
>
> postgres=# \h create role
> Command:     CREATE ROLE
> Description: define a new database role
> Syntax:
> CREATE ROLE name [ [ WITH ] option [ ... ] ]
>
> where option can be:
>
>       SUPERUSER | NOSUPERUSER
>     | CREATEDB | NOCREATEDB
>     | CREATEROLE | NOCREATEROLE
>     | INHERIT | NOINHERIT
>     | LOGIN | NOLOGIN
>     | REPLICATION | NOREPLICATION
>     | BYPASSRLS | NOBYPASSRLS
>     | CONNECTION LIMIT connlimit
>     | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>     | VALID UNTIL 'timestamp'
>     | IN ROLE role_name [, ...]
>     | ROLE role_name [, ...]
>     | ADMIN role_name [, ...]
>     | SYSID uid
>
> URL: https://www.postgresql.org/docs/devel/sql-createrole.html
>
> postgres=# \h create user
> Command:     CREATE USER
> Description: define a new database role
> Syntax:
> CREATE USER name [ [ WITH ] option [ ... ] ]
>
> where option can be:
>
>       SUPERUSER | NOSUPERUSER
>     | CREATEDB | NOCREATEDB
>     | CREATEROLE | NOCREATEROLE
>     | INHERIT | NOINHERIT
>     | LOGIN | NOLOGIN
>     | REPLICATION | NOREPLICATION
>     | BYPASSRLS | NOBYPASSRLS
>     | CONNECTION LIMIT connlimit
>     | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>     | VALID UNTIL 'timestamp'
>     | IN ROLE role_name [, ...]
>     | IN GROUP role_name [, ...]
>     | ROLE role_name [, ...]
>     | ADMIN role_name [, ...]
>     | USER role_name [, ...]
>     | SYSID uid
>
> URL: https://www.postgresql.org/docs/devel/sql-createuser.html
>
> postgres=# \h create group
> Command:     CREATE GROUP
> Description: define a new database role
> Syntax:
> CREATE GROUP name [ [ WITH ] option [ ... ] ]
>
> where option can be:
>
>       SUPERUSER | NOSUPERUSER
>     | CREATEDB | NOCREATEDB
>     | CREATEROLE | NOCREATEROLE
>     | INHERIT | NOINHERIT
>     | LOGIN | NOLOGIN
>     | REPLICATION | NOREPLICATION
>     | BYPASSRLS | NOBYPASSRLS
>     | CONNECTION LIMIT connlimit
>     | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>     | VALID UNTIL 'timestamp'
>     | IN ROLE role_name [, ...]
>     | IN GROUP role_name [, ...]
>     | ROLE role_name [, ...]
>     | ADMIN role_name [, ...]
>     | USER role_name [, ...]
>     | SYSID uid
>
> URL: https://www.postgresql.org/docs/devel/sql-creategroup.html
>
> Since CREATE USER is documented as equivalent to CREATE ROLE WITH LOGIN, and
> CREATE GROUP is equivalent to CREATE ROLE, their help syntax should remain
> consistent with CREATE ROLE.
>
> I propose removing the deprecated IN GROUP and USER lines from the help text
> of both CREATE USER and CREATE GROUP. This would be a simple documentation
> cleanup that aligns the psql help with current reality and avoids confusing
> users with obsolete syntax.

+1
The patch looks good to me.

Regards,

--
Fujii Masao



+1,it need to be fix

On Tue, 6 Jan 2026 at 22:27, Fujii Masao <masao.fujii@gmail.com> wrote:
On Tue, Jan 6, 2026 at 7:16 PM Japin Li <japinli@hotmail.com> wrote:
>
>
> Hi,
>
> When I review [1], I found commit 8e78f0a1 deprecated the IN GROUP and USER
> clauses in CREATE ROLE, and also removed IN GROUP and USER from the psql \h
> CREATE ROLE help output.
>
> However, the psql help for the legacy synonyms CREATE USER and CREATE GROUP
> still lists the deprecated options:
>
> - IN GROUP role_name [, ...]
> - USER role_name [, ...]
>
> postgres=# \h create role
> Command:     CREATE ROLE
> Description: define a new database role
> Syntax:
> CREATE ROLE name [ [ WITH ] option [ ... ] ]
>
> where option can be:
>
>       SUPERUSER | NOSUPERUSER
>     | CREATEDB | NOCREATEDB
>     | CREATEROLE | NOCREATEROLE
>     | INHERIT | NOINHERIT
>     | LOGIN | NOLOGIN
>     | REPLICATION | NOREPLICATION
>     | BYPASSRLS | NOBYPASSRLS
>     | CONNECTION LIMIT connlimit
>     | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>     | VALID UNTIL 'timestamp'
>     | IN ROLE role_name [, ...]
>     | ROLE role_name [, ...]
>     | ADMIN role_name [, ...]
>     | SYSID uid
>
> URL: https://www.postgresql.org/docs/devel/sql-createrole.html
>
> postgres=# \h create user
> Command:     CREATE USER
> Description: define a new database role
> Syntax:
> CREATE USER name [ [ WITH ] option [ ... ] ]
>
> where option can be:
>
>       SUPERUSER | NOSUPERUSER
>     | CREATEDB | NOCREATEDB
>     | CREATEROLE | NOCREATEROLE
>     | INHERIT | NOINHERIT
>     | LOGIN | NOLOGIN
>     | REPLICATION | NOREPLICATION
>     | BYPASSRLS | NOBYPASSRLS
>     | CONNECTION LIMIT connlimit
>     | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>     | VALID UNTIL 'timestamp'
>     | IN ROLE role_name [, ...]
>     | IN GROUP role_name [, ...]
>     | ROLE role_name [, ...]
>     | ADMIN role_name [, ...]
>     | USER role_name [, ...]
>     | SYSID uid
>
> URL: https://www.postgresql.org/docs/devel/sql-createuser.html
>
> postgres=# \h create group
> Command:     CREATE GROUP
> Description: define a new database role
> Syntax:
> CREATE GROUP name [ [ WITH ] option [ ... ] ]
>
> where option can be:
>
>       SUPERUSER | NOSUPERUSER
>     | CREATEDB | NOCREATEDB
>     | CREATEROLE | NOCREATEROLE
>     | INHERIT | NOINHERIT
>     | LOGIN | NOLOGIN
>     | REPLICATION | NOREPLICATION
>     | BYPASSRLS | NOBYPASSRLS
>     | CONNECTION LIMIT connlimit
>     | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>     | VALID UNTIL 'timestamp'
>     | IN ROLE role_name [, ...]
>     | IN GROUP role_name [, ...]
>     | ROLE role_name [, ...]
>     | ADMIN role_name [, ...]
>     | USER role_name [, ...]
>     | SYSID uid
>
> URL: https://www.postgresql.org/docs/devel/sql-creategroup.html
>
> Since CREATE USER is documented as equivalent to CREATE ROLE WITH LOGIN, and
> CREATE GROUP is equivalent to CREATE ROLE, their help syntax should remain
> consistent with CREATE ROLE.
>
> I propose removing the deprecated IN GROUP and USER lines from the help text
> of both CREATE USER and CREATE GROUP. This would be a simple documentation
> cleanup that aligns the psql help with current reality and avoids confusing
> users with obsolete syntax.

+1
The patch looks good to me.

Regards,

--
Fujii Masao



> On Jan 6, 2026, at 18:16, Japin Li <japinli@hotmail.com> wrote:
>
>
> Hi,
>
> When I review [1], I found commit 8e78f0a1 deprecated the IN GROUP and USER
> clauses in CREATE ROLE, and also removed IN GROUP and USER from the psql \h
> CREATE ROLE help output.
>
> However, the psql help for the legacy synonyms CREATE USER and CREATE GROUP
> still lists the deprecated options:
>
> - IN GROUP role_name [, ...]
> - USER role_name [, ...]
>
> postgres=# \h create role
> Command:     CREATE ROLE
> Description: define a new database role
> Syntax:
> CREATE ROLE name [ [ WITH ] option [ ... ] ]
>
> where option can be:
>
>      SUPERUSER | NOSUPERUSER
>    | CREATEDB | NOCREATEDB
>    | CREATEROLE | NOCREATEROLE
>    | INHERIT | NOINHERIT
>    | LOGIN | NOLOGIN
>    | REPLICATION | NOREPLICATION
>    | BYPASSRLS | NOBYPASSRLS
>    | CONNECTION LIMIT connlimit
>    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>    | VALID UNTIL 'timestamp'
>    | IN ROLE role_name [, ...]
>    | ROLE role_name [, ...]
>    | ADMIN role_name [, ...]
>    | SYSID uid
>
> URL: https://www.postgresql.org/docs/devel/sql-createrole.html
>
> postgres=# \h create user
> Command:     CREATE USER
> Description: define a new database role
> Syntax:
> CREATE USER name [ [ WITH ] option [ ... ] ]
>
> where option can be:
>
>      SUPERUSER | NOSUPERUSER
>    | CREATEDB | NOCREATEDB
>    | CREATEROLE | NOCREATEROLE
>    | INHERIT | NOINHERIT
>    | LOGIN | NOLOGIN
>    | REPLICATION | NOREPLICATION
>    | BYPASSRLS | NOBYPASSRLS
>    | CONNECTION LIMIT connlimit
>    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>    | VALID UNTIL 'timestamp'
>    | IN ROLE role_name [, ...]
>    | IN GROUP role_name [, ...]
>    | ROLE role_name [, ...]
>    | ADMIN role_name [, ...]
>    | USER role_name [, ...]
>    | SYSID uid
>
> URL: https://www.postgresql.org/docs/devel/sql-createuser.html
>
> postgres=# \h create group
> Command:     CREATE GROUP
> Description: define a new database role
> Syntax:
> CREATE GROUP name [ [ WITH ] option [ ... ] ]
>
> where option can be:
>
>      SUPERUSER | NOSUPERUSER
>    | CREATEDB | NOCREATEDB
>    | CREATEROLE | NOCREATEROLE
>    | INHERIT | NOINHERIT
>    | LOGIN | NOLOGIN
>    | REPLICATION | NOREPLICATION
>    | BYPASSRLS | NOBYPASSRLS
>    | CONNECTION LIMIT connlimit
>    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>    | VALID UNTIL 'timestamp'
>    | IN ROLE role_name [, ...]
>    | IN GROUP role_name [, ...]
>    | ROLE role_name [, ...]
>    | ADMIN role_name [, ...]
>    | USER role_name [, ...]
>    | SYSID uid
>
> URL: https://www.postgresql.org/docs/devel/sql-creategroup.html
>
> Since CREATE USER is documented as equivalent to CREATE ROLE WITH LOGIN, and
> CREATE GROUP is equivalent to CREATE ROLE, their help syntax should remain
> consistent with CREATE ROLE.
>
> I propose removing the deprecated IN GROUP and USER lines from the help text
> of both CREATE USER and CREATE GROUP. This would be a simple documentation
> cleanup that aligns the psql help with current reality and avoids confusing
> users with obsolete syntax.
>
> [1] https://www.postgresql.org/message-id/4c5f895e-3281-48f8-b943-9228b7da6471%40gmail.com
>
> --
> Regards,
> Japin Li
> ChengDu WenWu Information Technology Co., Ltd.
>
> <v1-0001-Remove-deprecated-role-options-for-CREATE-USER-GR.patch>


```
This commit removes the deprecated IN GROUP and USER lines from the psql
help output for CREATE USER and CREATE GROUP.
```

The commit message claims to remove things from psql help output, but the change actually updated the SGML docs. Does
thepatch miss the change on psql? 

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/







On Wed, 07 Jan 2026 at 17:30, Chao Li <li.evan.chao@gmail.com> wrote:
>> On Jan 6, 2026, at 18:16, Japin Li <japinli@hotmail.com> wrote:
>> 
>> 
>> Hi,
>> 
>> When I review [1], I found commit 8e78f0a1 deprecated the IN GROUP and USER
>> clauses in CREATE ROLE, and also removed IN GROUP and USER from the psql \h
>> CREATE ROLE help output.
>> 
>> However, the psql help for the legacy synonyms CREATE USER and CREATE GROUP
>> still lists the deprecated options:
>> 
>> - IN GROUP role_name [, ...]
>> - USER role_name [, ...]
>> 
>> postgres=# \h create role
>> Command:     CREATE ROLE
>> Description: define a new database role
>> Syntax:
>> CREATE ROLE name [ [ WITH ] option [ ... ] ]
>> 
>> where option can be:
>> 
>>      SUPERUSER | NOSUPERUSER
>>    | CREATEDB | NOCREATEDB
>>    | CREATEROLE | NOCREATEROLE
>>    | INHERIT | NOINHERIT
>>    | LOGIN | NOLOGIN
>>    | REPLICATION | NOREPLICATION
>>    | BYPASSRLS | NOBYPASSRLS
>>    | CONNECTION LIMIT connlimit
>>    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>    | VALID UNTIL 'timestamp'
>>    | IN ROLE role_name [, ...]
>>    | ROLE role_name [, ...]
>>    | ADMIN role_name [, ...]
>>    | SYSID uid
>> 
>> URL: https://www.postgresql.org/docs/devel/sql-createrole.html
>> 
>> postgres=# \h create user
>> Command:     CREATE USER
>> Description: define a new database role
>> Syntax:
>> CREATE USER name [ [ WITH ] option [ ... ] ]
>> 
>> where option can be:
>> 
>>      SUPERUSER | NOSUPERUSER
>>    | CREATEDB | NOCREATEDB
>>    | CREATEROLE | NOCREATEROLE
>>    | INHERIT | NOINHERIT
>>    | LOGIN | NOLOGIN
>>    | REPLICATION | NOREPLICATION
>>    | BYPASSRLS | NOBYPASSRLS
>>    | CONNECTION LIMIT connlimit
>>    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>    | VALID UNTIL 'timestamp'
>>    | IN ROLE role_name [, ...]
>>    | IN GROUP role_name [, ...]
>>    | ROLE role_name [, ...]
>>    | ADMIN role_name [, ...]
>>    | USER role_name [, ...]
>>    | SYSID uid
>> 
>> URL: https://www.postgresql.org/docs/devel/sql-createuser.html
>> 
>> postgres=# \h create group
>> Command:     CREATE GROUP
>> Description: define a new database role
>> Syntax:
>> CREATE GROUP name [ [ WITH ] option [ ... ] ]
>> 
>> where option can be:
>> 
>>      SUPERUSER | NOSUPERUSER
>>    | CREATEDB | NOCREATEDB
>>    | CREATEROLE | NOCREATEROLE
>>    | INHERIT | NOINHERIT
>>    | LOGIN | NOLOGIN
>>    | REPLICATION | NOREPLICATION
>>    | BYPASSRLS | NOBYPASSRLS
>>    | CONNECTION LIMIT connlimit
>>    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>    | VALID UNTIL 'timestamp'
>>    | IN ROLE role_name [, ...]
>>    | IN GROUP role_name [, ...]
>>    | ROLE role_name [, ...]
>>    | ADMIN role_name [, ...]
>>    | USER role_name [, ...]
>>    | SYSID uid
>> 
>> URL: https://www.postgresql.org/docs/devel/sql-creategroup.html
>> 
>> Since CREATE USER is documented as equivalent to CREATE ROLE WITH LOGIN, and
>> CREATE GROUP is equivalent to CREATE ROLE, their help syntax should remain
>> consistent with CREATE ROLE.
>> 
>> I propose removing the deprecated IN GROUP and USER lines from the help text
>> of both CREATE USER and CREATE GROUP. This would be a simple documentation
>> cleanup that aligns the psql help with current reality and avoids confusing
>> users with obsolete syntax.
>> 
>> [1] https://www.postgresql.org/message-id/4c5f895e-3281-48f8-b943-9228b7da6471%40gmail.com
>> 
>> -- 
>> Regards,
>> Japin Li
>> ChengDu WenWu Information Technology Co., Ltd.
>> 
>> <v1-0001-Remove-deprecated-role-options-for-CREATE-USER-GR.patch>
>
>
> ```
> This commit removes the deprecated IN GROUP and USER lines from the psql
> help output for CREATE USER and CREATE GROUP.
> ```
>
> The commit message claims to remove things from psql help output, but the change actually updated the SGML docs. Does
thepatch miss the change on psql?
 

Hmm, psql's SQL help (\h) output is generated from SGML. See the generator
scripts: src/bin/psql/create_*_help.pl.

-- 
Regards,
Japin Li
ChengDu WenWu Information Technology Co., Ltd.



On Wed, 07 Jan 2026 at 18:52, Japin Li <japinli@hotmail.com> wrote:
> On Wed, 07 Jan 2026 at 17:30, Chao Li <li.evan.chao@gmail.com> wrote:
>>> On Jan 6, 2026, at 18:16, Japin Li <japinli@hotmail.com> wrote:
>>> 
>>> 
>>> Hi,
>>> 
>>> When I review [1], I found commit 8e78f0a1 deprecated the IN GROUP and USER
>>> clauses in CREATE ROLE, and also removed IN GROUP and USER from the psql \h
>>> CREATE ROLE help output.
>>> 
>>> However, the psql help for the legacy synonyms CREATE USER and CREATE GROUP
>>> still lists the deprecated options:
>>> 
>>> - IN GROUP role_name [, ...]
>>> - USER role_name [, ...]
>>> 
>>> postgres=# \h create role
>>> Command:     CREATE ROLE
>>> Description: define a new database role
>>> Syntax:
>>> CREATE ROLE name [ [ WITH ] option [ ... ] ]
>>> 
>>> where option can be:
>>> 
>>>      SUPERUSER | NOSUPERUSER
>>>    | CREATEDB | NOCREATEDB
>>>    | CREATEROLE | NOCREATEROLE
>>>    | INHERIT | NOINHERIT
>>>    | LOGIN | NOLOGIN
>>>    | REPLICATION | NOREPLICATION
>>>    | BYPASSRLS | NOBYPASSRLS
>>>    | CONNECTION LIMIT connlimit
>>>    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>>    | VALID UNTIL 'timestamp'
>>>    | IN ROLE role_name [, ...]
>>>    | ROLE role_name [, ...]
>>>    | ADMIN role_name [, ...]
>>>    | SYSID uid
>>> 
>>> URL: https://www.postgresql.org/docs/devel/sql-createrole.html
>>> 
>>> postgres=# \h create user
>>> Command:     CREATE USER
>>> Description: define a new database role
>>> Syntax:
>>> CREATE USER name [ [ WITH ] option [ ... ] ]
>>> 
>>> where option can be:
>>> 
>>>      SUPERUSER | NOSUPERUSER
>>>    | CREATEDB | NOCREATEDB
>>>    | CREATEROLE | NOCREATEROLE
>>>    | INHERIT | NOINHERIT
>>>    | LOGIN | NOLOGIN
>>>    | REPLICATION | NOREPLICATION
>>>    | BYPASSRLS | NOBYPASSRLS
>>>    | CONNECTION LIMIT connlimit
>>>    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>>    | VALID UNTIL 'timestamp'
>>>    | IN ROLE role_name [, ...]
>>>    | IN GROUP role_name [, ...]
>>>    | ROLE role_name [, ...]
>>>    | ADMIN role_name [, ...]
>>>    | USER role_name [, ...]
>>>    | SYSID uid
>>> 
>>> URL: https://www.postgresql.org/docs/devel/sql-createuser.html
>>> 
>>> postgres=# \h create group
>>> Command:     CREATE GROUP
>>> Description: define a new database role
>>> Syntax:
>>> CREATE GROUP name [ [ WITH ] option [ ... ] ]
>>> 
>>> where option can be:
>>> 
>>>      SUPERUSER | NOSUPERUSER
>>>    | CREATEDB | NOCREATEDB
>>>    | CREATEROLE | NOCREATEROLE
>>>    | INHERIT | NOINHERIT
>>>    | LOGIN | NOLOGIN
>>>    | REPLICATION | NOREPLICATION
>>>    | BYPASSRLS | NOBYPASSRLS
>>>    | CONNECTION LIMIT connlimit
>>>    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>>    | VALID UNTIL 'timestamp'
>>>    | IN ROLE role_name [, ...]
>>>    | IN GROUP role_name [, ...]
>>>    | ROLE role_name [, ...]
>>>    | ADMIN role_name [, ...]
>>>    | USER role_name [, ...]
>>>    | SYSID uid
>>> 
>>> URL: https://www.postgresql.org/docs/devel/sql-creategroup.html
>>> 
>>> Since CREATE USER is documented as equivalent to CREATE ROLE WITH LOGIN, and
>>> CREATE GROUP is equivalent to CREATE ROLE, their help syntax should remain
>>> consistent with CREATE ROLE.
>>> 
>>> I propose removing the deprecated IN GROUP and USER lines from the help text
>>> of both CREATE USER and CREATE GROUP. This would be a simple documentation
>>> cleanup that aligns the psql help with current reality and avoids confusing
>>> users with obsolete syntax.
>>> 
>>> [1] https://www.postgresql.org/message-id/4c5f895e-3281-48f8-b943-9228b7da6471%40gmail.com
>>> 
>>> -- 
>>> Regards,
>>> Japin Li
>>> ChengDu WenWu Information Technology Co., Ltd.
>>> 
>>> <v1-0001-Remove-deprecated-role-options-for-CREATE-USER-GR.patch>
>>
>>
>> ```
>> This commit removes the deprecated IN GROUP and USER lines from the psql
>> help output for CREATE USER and CREATE GROUP.
>> ```
>>
>> The commit message claims to remove things from psql help output, but the change actually updated the SGML docs.
Doesthe patch miss the change on psql?
 
>
> Hmm, psql's SQL help (\h) output is generated from SGML. See the generator
> scripts: src/bin/psql/create_*_help.pl.
>

Sorry, I made a typo, the script is src/bin/psql/create_help.pl.

-- 
Regards,
Japin Li
ChengDu WenWu Information Technology Co., Ltd.




> On Jan 7, 2026, at 19:06, Japin Li <japinli@hotmail.com> wrote:
>
> On Wed, 07 Jan 2026 at 18:52, Japin Li <japinli@hotmail.com> wrote:
>> On Wed, 07 Jan 2026 at 17:30, Chao Li <li.evan.chao@gmail.com> wrote:
>>>> On Jan 6, 2026, at 18:16, Japin Li <japinli@hotmail.com> wrote:
>>>>
>>>>
>>>> Hi,
>>>>
>>>> When I review [1], I found commit 8e78f0a1 deprecated the IN GROUP and USER
>>>> clauses in CREATE ROLE, and also removed IN GROUP and USER from the psql \h
>>>> CREATE ROLE help output.
>>>>
>>>> However, the psql help for the legacy synonyms CREATE USER and CREATE GROUP
>>>> still lists the deprecated options:
>>>>
>>>> - IN GROUP role_name [, ...]
>>>> - USER role_name [, ...]
>>>>
>>>> postgres=# \h create role
>>>> Command:     CREATE ROLE
>>>> Description: define a new database role
>>>> Syntax:
>>>> CREATE ROLE name [ [ WITH ] option [ ... ] ]
>>>>
>>>> where option can be:
>>>>
>>>>     SUPERUSER | NOSUPERUSER
>>>>   | CREATEDB | NOCREATEDB
>>>>   | CREATEROLE | NOCREATEROLE
>>>>   | INHERIT | NOINHERIT
>>>>   | LOGIN | NOLOGIN
>>>>   | REPLICATION | NOREPLICATION
>>>>   | BYPASSRLS | NOBYPASSRLS
>>>>   | CONNECTION LIMIT connlimit
>>>>   | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>>>   | VALID UNTIL 'timestamp'
>>>>   | IN ROLE role_name [, ...]
>>>>   | ROLE role_name [, ...]
>>>>   | ADMIN role_name [, ...]
>>>>   | SYSID uid
>>>>
>>>> URL: https://www.postgresql.org/docs/devel/sql-createrole.html
>>>>
>>>> postgres=# \h create user
>>>> Command:     CREATE USER
>>>> Description: define a new database role
>>>> Syntax:
>>>> CREATE USER name [ [ WITH ] option [ ... ] ]
>>>>
>>>> where option can be:
>>>>
>>>>     SUPERUSER | NOSUPERUSER
>>>>   | CREATEDB | NOCREATEDB
>>>>   | CREATEROLE | NOCREATEROLE
>>>>   | INHERIT | NOINHERIT
>>>>   | LOGIN | NOLOGIN
>>>>   | REPLICATION | NOREPLICATION
>>>>   | BYPASSRLS | NOBYPASSRLS
>>>>   | CONNECTION LIMIT connlimit
>>>>   | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>>>   | VALID UNTIL 'timestamp'
>>>>   | IN ROLE role_name [, ...]
>>>>   | IN GROUP role_name [, ...]
>>>>   | ROLE role_name [, ...]
>>>>   | ADMIN role_name [, ...]
>>>>   | USER role_name [, ...]
>>>>   | SYSID uid
>>>>
>>>> URL: https://www.postgresql.org/docs/devel/sql-createuser.html
>>>>
>>>> postgres=# \h create group
>>>> Command:     CREATE GROUP
>>>> Description: define a new database role
>>>> Syntax:
>>>> CREATE GROUP name [ [ WITH ] option [ ... ] ]
>>>>
>>>> where option can be:
>>>>
>>>>     SUPERUSER | NOSUPERUSER
>>>>   | CREATEDB | NOCREATEDB
>>>>   | CREATEROLE | NOCREATEROLE
>>>>   | INHERIT | NOINHERIT
>>>>   | LOGIN | NOLOGIN
>>>>   | REPLICATION | NOREPLICATION
>>>>   | BYPASSRLS | NOBYPASSRLS
>>>>   | CONNECTION LIMIT connlimit
>>>>   | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>>>   | VALID UNTIL 'timestamp'
>>>>   | IN ROLE role_name [, ...]
>>>>   | IN GROUP role_name [, ...]
>>>>   | ROLE role_name [, ...]
>>>>   | ADMIN role_name [, ...]
>>>>   | USER role_name [, ...]
>>>>   | SYSID uid
>>>>
>>>> URL: https://www.postgresql.org/docs/devel/sql-creategroup.html
>>>>
>>>> Since CREATE USER is documented as equivalent to CREATE ROLE WITH LOGIN, and
>>>> CREATE GROUP is equivalent to CREATE ROLE, their help syntax should remain
>>>> consistent with CREATE ROLE.
>>>>
>>>> I propose removing the deprecated IN GROUP and USER lines from the help text
>>>> of both CREATE USER and CREATE GROUP. This would be a simple documentation
>>>> cleanup that aligns the psql help with current reality and avoids confusing
>>>> users with obsolete syntax.
>>>>
>>>> [1] https://www.postgresql.org/message-id/4c5f895e-3281-48f8-b943-9228b7da6471%40gmail.com
>>>>
>>>> --
>>>> Regards,
>>>> Japin Li
>>>> ChengDu WenWu Information Technology Co., Ltd.
>>>>
>>>> <v1-0001-Remove-deprecated-role-options-for-CREATE-USER-GR.patch>
>>>
>>>
>>> ```
>>> This commit removes the deprecated IN GROUP and USER lines from the psql
>>> help output for CREATE USER and CREATE GROUP.
>>> ```
>>>
>>> The commit message claims to remove things from psql help output, but the change actually updated the SGML docs.
Doesthe patch miss the change on psql? 
>>
>> Hmm, psql's SQL help (\h) output is generated from SGML. See the generator
>> scripts: src/bin/psql/create_*_help.pl.
>>
>
> Sorry, I made a typo, the script is src/bin/psql/create_help.pl.
>
> --
> Regards,
> Japin Li
> ChengDu WenWu Information Technology Co., Ltd.

Good to know. I wasn’t aware of that. Maybe it deserves to mention that in the commit message.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/







Re: Remove deprecated role membership options from psql help for CREATE USER/GROUP

От
Fujii Masao
Дата:
On Tue, Jan 6, 2026 at 11:27 PM Fujii Masao <masao.fujii@gmail.com> wrote:
> > I propose removing the deprecated IN GROUP and USER lines from the help text
> > of both CREATE USER and CREATE GROUP. This would be a simple documentation
> > cleanup that aligns the psql help with current reality and avoids confusing
> > users with obsolete syntax.
>
> +1
> The patch looks good to me.

I've pushed the patch. Thanks!

Regards,

--
Fujii Masao




> On Jan 7, 2026, at 19:06, Japin Li <japinli@hotmail.com> wrote:
>
> On Wed, 07 Jan 2026 at 18:52, Japin Li <japinli@hotmail.com> wrote:
>> On Wed, 07 Jan 2026 at 17:30, Chao Li <li.evan.chao@gmail.com> wrote:
>>>> On Jan 6, 2026, at 18:16, Japin Li <japinli@hotmail.com> wrote:
>>>>
>>>>
>>>> Hi,
>>>>
>>>> When I review [1], I found commit 8e78f0a1 deprecated the IN GROUP and USER
>>>> clauses in CREATE ROLE, and also removed IN GROUP and USER from the psql \h
>>>> CREATE ROLE help output.
>>>>
>>>> However, the psql help for the legacy synonyms CREATE USER and CREATE GROUP
>>>> still lists the deprecated options:
>>>>
>>>> - IN GROUP role_name [, ...]
>>>> - USER role_name [, ...]
>>>>
>>>> postgres=# \h create role
>>>> Command:     CREATE ROLE
>>>> Description: define a new database role
>>>> Syntax:
>>>> CREATE ROLE name [ [ WITH ] option [ ... ] ]
>>>>
>>>> where option can be:
>>>>
>>>>    SUPERUSER | NOSUPERUSER
>>>>  | CREATEDB | NOCREATEDB
>>>>  | CREATEROLE | NOCREATEROLE
>>>>  | INHERIT | NOINHERIT
>>>>  | LOGIN | NOLOGIN
>>>>  | REPLICATION | NOREPLICATION
>>>>  | BYPASSRLS | NOBYPASSRLS
>>>>  | CONNECTION LIMIT connlimit
>>>>  | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>>>  | VALID UNTIL 'timestamp'
>>>>  | IN ROLE role_name [, ...]
>>>>  | ROLE role_name [, ...]
>>>>  | ADMIN role_name [, ...]
>>>>  | SYSID uid
>>>>
>>>> URL: https://www.postgresql.org/docs/devel/sql-createrole.html
>>>>
>>>> postgres=# \h create user
>>>> Command:     CREATE USER
>>>> Description: define a new database role
>>>> Syntax:
>>>> CREATE USER name [ [ WITH ] option [ ... ] ]
>>>>
>>>> where option can be:
>>>>
>>>>    SUPERUSER | NOSUPERUSER
>>>>  | CREATEDB | NOCREATEDB
>>>>  | CREATEROLE | NOCREATEROLE
>>>>  | INHERIT | NOINHERIT
>>>>  | LOGIN | NOLOGIN
>>>>  | REPLICATION | NOREPLICATION
>>>>  | BYPASSRLS | NOBYPASSRLS
>>>>  | CONNECTION LIMIT connlimit
>>>>  | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>>>  | VALID UNTIL 'timestamp'
>>>>  | IN ROLE role_name [, ...]
>>>>  | IN GROUP role_name [, ...]
>>>>  | ROLE role_name [, ...]
>>>>  | ADMIN role_name [, ...]
>>>>  | USER role_name [, ...]
>>>>  | SYSID uid
>>>>
>>>> URL: https://www.postgresql.org/docs/devel/sql-createuser.html
>>>>
>>>> postgres=# \h create group
>>>> Command:     CREATE GROUP
>>>> Description: define a new database role
>>>> Syntax:
>>>> CREATE GROUP name [ [ WITH ] option [ ... ] ]
>>>>
>>>> where option can be:
>>>>
>>>>    SUPERUSER | NOSUPERUSER
>>>>  | CREATEDB | NOCREATEDB
>>>>  | CREATEROLE | NOCREATEROLE
>>>>  | INHERIT | NOINHERIT
>>>>  | LOGIN | NOLOGIN
>>>>  | REPLICATION | NOREPLICATION
>>>>  | BYPASSRLS | NOBYPASSRLS
>>>>  | CONNECTION LIMIT connlimit
>>>>  | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
>>>>  | VALID UNTIL 'timestamp'
>>>>  | IN ROLE role_name [, ...]
>>>>  | IN GROUP role_name [, ...]
>>>>  | ROLE role_name [, ...]
>>>>  | ADMIN role_name [, ...]
>>>>  | USER role_name [, ...]
>>>>  | SYSID uid
>>>>
>>>> URL: https://www.postgresql.org/docs/devel/sql-creategroup.html
>>>>
>>>> Since CREATE USER is documented as equivalent to CREATE ROLE WITH LOGIN, and
>>>> CREATE GROUP is equivalent to CREATE ROLE, their help syntax should remain
>>>> consistent with CREATE ROLE.
>>>>
>>>> I propose removing the deprecated IN GROUP and USER lines from the help text
>>>> of both CREATE USER and CREATE GROUP. This would be a simple documentation
>>>> cleanup that aligns the psql help with current reality and avoids confusing
>>>> users with obsolete syntax.
>>>>
>>>> [1] https://www.postgresql.org/message-id/4c5f895e-3281-48f8-b943-9228b7da6471%40gmail.com
>>>>
>>>> --
>>>> Regards,
>>>> Japin Li
>>>> ChengDu WenWu Information Technology Co., Ltd.
>>>>
>>>> <v1-0001-Remove-deprecated-role-options-for-CREATE-USER-GR.patch>
>>>
>>>
>>> ```
>>> This commit removes the deprecated IN GROUP and USER lines from the psql
>>> help output for CREATE USER and CREATE GROUP.
>>> ```
>>>
>>> The commit message claims to remove things from psql help output, but the change actually updated the SGML docs.
Doesthe patch miss the change on psql? 
>>
>> Hmm, psql's SQL help (\h) output is generated from SGML. See the generator
>> scripts: src/bin/psql/create_*_help.pl.
>>
>
> Sorry, I made a typo, the script is src/bin/psql/create_help.pl.
>
> --
> Regards,
> Japin Li
> ChengDu WenWu Information Technology Co., Ltd.

Good to know. I wasn’t aware of that. Maybe it deserves to mention that in the commit message.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/







On Thu, 08 Jan 2026 at 01:14, Fujii Masao <masao.fujii@gmail.com> wrote:
> On Tue, Jan 6, 2026 at 11:27 PM Fujii Masao <masao.fujii@gmail.com> wrote:
>> > I propose removing the deprecated IN GROUP and USER lines from the help text
>> > of both CREATE USER and CREATE GROUP. This would be a simple documentation
>> > cleanup that aligns the psql help with current reality and avoids confusing
>> > users with obsolete syntax.
>>
>> +1
>> The patch looks good to me.
>
> I've pushed the patch. Thanks!
>
> Regards,
>

Thanks!

--
Regards,
Japin Li
ChengDu WenWu Information Technology Co., Ltd.