Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1x1dKK-005KYz-1m for pgsql-admin@arkaria.postgresql.org; Wed, 02 Sep 2026 05:16:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1x1dKJ-00AJTc-1t for pgsql-admin@arkaria.postgresql.org; Wed, 02 Sep 2026 05:15:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1x1dKJ-00AJTU-0c for pgsql-admin@lists.postgresql.org; Wed, 02 Sep 2026 05:15:59 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1x1dKG-00000002USN-458f for pgsql-admin@lists.postgresql.org; Wed, 02 Sep 2026 05:15:58 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-49cca4ffdcfso3852985e9.0 for ; Tue, 01 Sep 2026 22:15:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788326156; x=1788930956; darn=lists.postgresql.org; h=content-transfer-encoding:content-type:subject:from:to :content-language:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to:content-type; bh=bcJ9RlYfk/5l+452eAalo0goImk9os7VNBjNmVwEViU=; b=juMQZjkVmyeWxiPIzLc5UoN3dkCU3jNrnR1W6Os/AOUogQkXfVyKqiad17PBNH1vA0 KBajBoaXskpkCCEAW+JC01WfwkeKZMIgxbFA/oG8vypjsihuprvZf62oJM7IVot9v6A3 cbScM2zt9BL95aHWs4MK8pqwkfzTX9mowUhnenw1z5l2jZbgh7+Oen6/HPCEIlUpbMOg tMTC8qc+83yDcgwOlEzQyFw8Hl6gtQpOnght6tS/1uZSsYJRpn8kbPNP7VoFJx9S/NMD Jc4etmhH9EjNJziC4i37Ov6KG+TJtj08Ffuwjz4z6TYkrW22g+TmOW094p0cGP4oV0Yt lhsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788326156; x=1788930956; h=content-transfer-encoding:content-type:subject:from:to :content-language:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=bcJ9RlYfk/5l+452eAalo0goImk9os7VNBjNmVwEViU=; b=NgWhRZaL0Sdm0U3JGk4XhQEm8YHAHnB0eDegeu0u9W+hr3pSVSk5tH2a5EROqCPWfM 2PcmiNTGi+0S7X9bg4lvklnrRyo88AU4GZ+lPOkU2EvLqiNxDxs2P3Ypj3bG/I59FMXT Iz3RiEqDWYH7B4XnnNgAQ1oHVmIfYXsay7eWmgSS+acCOkRQCw1400iYdfSojx12vT9I r3NRCc27cFRkkZlqaJ062KQlz5SVmtwL1YHkwc7lQipA6RhjVV6f2xwAkMg/ai92iFQP h1pY9QvKHlUEmqbiPEL2EqaafCrPajPZ8pFGE41JUXClntVQMgRA+vg2fargXpWCzIvr tEQQ== X-Gm-Message-State: AFuF++mW9ou8AjAZXCihR97MQvYzKSjpOdkrjQi0edtLLZ7tG0AJztvk 7xXXhqk6GLmWtLzKFiaSU5o/SeGwhzJNom5DHYKZd33R29p2QNr1zmN8I1toeg== X-Gm-Gg: AR+sD133DXUuqkPI2ABK3PijPpK6uoASozjDACKjIeOUnP9STnhzZfrbSQ9azbIEpbS +xThUqfF4SzZG329tgLk0329L/bvQr2zOvnVPvwyrOTSlOg65mlkrnWvGGXKbz5o8I8kOXGzoux xzygJWkr2PFQVWJOT8pT52CxCDTAtECmz1kmSWWkjsEIWleh31BDZ9tpzgLIZ0BGcxznndYUp4l zTmUBRlbVYuE58mCYCErCDmo08Fai2HGceysdXqbl80XdAmzW3yv6Uwhyiadi03nT9DCwK2Tqpx WqwYy7OBwuAF4+jQDF9h8Ban2cwqk2qkzauthJGIWjFO0dFARp5ZGGFtP7v+2P6qa5NY430IXaj vWxqjAijjfmFjGgRTZ8go/k0fQ3pcVofZLsaCJ0IGZz0NIrlg64FiDDQlBZfQjzsNSrlorgwsJT DSZhASOCcEgvYpZQruxgo/bv8nBzOt4L8/XZEhS1lBRHqQkTg+ddkwWGvu0o0cYoU0pS6hzRrv/ ZTSexvu0BJmbB6NG8msWty81+zANXpQlq3ABOuswQ== X-Received: by 2002:a05:600c:46cc:b0:49c:cb6a:1687 with SMTP id 5b1f17b1804b1-49ce5812d7cmr33133565e9.4.1788326150805; Tue, 01 Sep 2026 22:15:50 -0700 (PDT) Received: from ?IPV6:2a01:e0a:bf8:b480:9741:22e7:8d7e:759e? ([2a01:e0a:bf8:b480:9741:22e7:8d7e:759e]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49ce831af89sm1122965e9.1.2026.09.01.22.15.50 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 01 Sep 2026 22:15:50 -0700 (PDT) Message-ID: Date: Wed, 2 Sep 2026 07:15:49 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-admin@lists.postgresql.org From: Pierre Forstmann Subject: what is the difference between ROLE clause and IN ROLE clause for CREATE USER statement ? Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hello, I don't understand the difference even after reading CREATE USER/CREATE ROLE documentation. Here is a scenario that shows a difference with PG 18.6 (built with pgenv): pierre=# create user ur role pg_maintain; CREATE ROLE pierre=# create user uri  in role pg_maintain; CREATE ROLE pierre=# \du                              List of roles  Role name |                         Attributes -----------+------------------------------------------------------------  pierre    | Superuser  postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS  ur        |  uri       | pierre=# \l                                                      List of databases    Name    |  Owner   | Encoding | Locale Provider |   Collate  |    Ctype    | Locale | ICU Rules |   Access privileges -----------+----------+----------+-----------------+-------------+-------------+--------+-----------+-----------------------  pierre    | pierre   | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |        |           |  postgres  | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |        |           |  template0 | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |        |           | =c/postgres          +            |          |          |                 |  |             |        |           | postgres=CTc/postgres  template1 | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |        |           | =c/postgres          +            |          |          |                 |  |             |        |           | postgres=CTc/postgres (4 rows) pierre@alma:~$ vacuumdb -U ur vacuumdb: vacuuming database "pierre" WARNING:  permission denied to vacuum "pg_proc", skipping it WARNING:  permission denied to vacuum "pg_attribute", skipping it WARNING:  permission denied to vacuum "pg_description", skipping it WARNING:  permission denied to vacuum "pg_collation", skipping it WARNING:  permission denied to vacuum "pg_statistic", skipping it WARNING:  permission denied to vacuum "pg_type", skipping it WARNING:  permission denied to vacuum "pg_class", skipping it WARNING:  permission denied to vacuum "pg_rewrite", skipping it WARNING:  permission denied to vacuum "pg_operator", skipping it WARNING:  permission denied to vacuum "pg_depend", skipping it WARNING:  permission denied to vacuum "sql_features", skipping it WARNING:  permission denied to vacuum "pg_amop", skipping it WARNING:  permission denied to vacuum "pg_constraint", skipping it WARNING:  permission denied to vacuum "pg_amproc", skipping it WARNING:  permission denied to vacuum "pg_ts_config_map", skipping it WARNING:  permission denied to vacuum "pg_index", skipping it WARNING:  permission denied to vacuum "pg_init_privs", skipping it WARNING:  permission denied to vacuum "pg_opclass", skipping it WARNING:  permission denied to vacuum "pg_aggregate", skipping it WARNING:  permission denied to vacuum "pg_cast", skipping it WARNING:  permission denied to vacuum "pg_opfamily", skipping it WARNING:  permission denied to vacuum "pg_conversion", skipping it WARNING:  permission denied to vacuum "pg_namespace", skipping it WARNING:  permission denied to vacuum "sql_implementation_info", skipping it WARNING:  permission denied to vacuum "pg_am", skipping it WARNING:  permission denied to vacuum "pg_language", skipping it WARNING:  permission denied to vacuum "pg_authid", skipping it WARNING:  permission denied to vacuum "pg_database", skipping it WARNING:  permission denied to vacuum "pg_tablespace", skipping it WARNING:  permission denied to vacuum "pg_auth_members", skipping it WARNING:  permission denied to vacuum "pg_shdescription", skipping it WARNING:  permission denied to vacuum "pg_ts_config", skipping it WARNING:  permission denied to vacuum "pg_ts_dict", skipping it WARNING:  permission denied to vacuum "pg_ts_parser", skipping it WARNING:  permission denied to vacuum "pg_ts_template", skipping it WARNING:  permission denied to vacuum "pg_extension", skipping it WARNING:  permission denied to vacuum "pg_range", skipping it WARNING:  permission denied to vacuum "sql_parts", skipping it WARNING:  permission denied to vacuum "sql_sizing", skipping it WARNING:  permission denied to vacuum "pg_shdepend", skipping it WARNING:  permission denied to vacuum "pg_transform", skipping it WARNING:  permission denied to vacuum "pg_sequence", skipping it WARNING:  permission denied to vacuum "pg_subscription", skipping it WARNING:  permission denied to vacuum "pg_publication", skipping it WARNING:  permission denied to vacuum "pg_publication_namespace", skipping it WARNING:  permission denied to vacuum "pg_publication_rel", skipping it WARNING:  permission denied to vacuum "pg_subscription_rel", skipping it WARNING:  permission denied to vacuum "pg_foreign_data_wrapper", skipping it WARNING:  permission denied to vacuum "pg_foreign_server", skipping it WARNING:  permission denied to vacuum "pg_policy", skipping it WARNING:  permission denied to vacuum "pg_replication_origin", skipping it WARNING:  permission denied to vacuum "pg_default_acl", skipping it WARNING:  permission denied to vacuum "pg_inherits", skipping it WARNING:  permission denied to vacuum "pg_seclabel", skipping it WARNING:  permission denied to vacuum "pg_shseclabel", skipping it WARNING:  permission denied to vacuum "pg_user_mapping", skipping it WARNING:  permission denied to vacuum "pg_trigger", skipping it WARNING:  permission denied to vacuum "pg_event_trigger", skipping it WARNING:  permission denied to vacuum "pg_statistic_ext_data", skipping it WARNING:  permission denied to vacuum "pg_statistic_ext", skipping it WARNING:  permission denied to vacuum "pg_enum", skipping it WARNING:  permission denied to vacuum "pg_attrdef", skipping it WARNING:  permission denied to vacuum "pg_largeobject_metadata", skipping it WARNING:  permission denied to vacuum "pg_foreign_table", skipping it WARNING:  permission denied to vacuum "pg_parameter_acl", skipping it WARNING:  permission denied to vacuum "pg_db_role_setting", skipping it WARNING:  permission denied to vacuum "pg_partitioned_table", skipping it WARNING:  permission denied to vacuum "pg_largeobject", skipping it pierre@alma:~$ vacuumdb -U uri vacuumdb: vacuuming database "pierre" pierre@alma:~$ Thanks.