[PATCH] Add pg_get_role_ddl() functions for role recreation

From: Bryan Green <dbryan(dot)green(at)gmail(dot)com>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: [PATCH] Add pg_get_role_ddl() functions for role recreation
Date: 2025-10-24 20:03:06
Message-ID: 4c5f895e-3281-48f8-b943-9228b7da6471@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Attached is a patch adding two new functions for generating DDL to
recreate roles: pg_get_role_ddl() and pg_get_role_ddl_statements().

These functions return the CREATE ROLE statement and any ALTER ROLE SET
configuration parameters needed to recreate a role. The former returns
everything as a single text string, while the latter returns each
statement as a separate row for easier programmatic processing.

The main use case is dumping role definitions for migration or backup
purposes without needing pg_dumpall. The functions handle all role
attributes (LOGIN, SUPERUSER, etc.) and both role-wide and
database-specific configuration parameters.

We intentionally don't include passwords, since we can only see the
hashed values. System roles (names starting with "pg_") are rejected
with an error, as users shouldn't be recreating those anyway.

To test:

CREATE ROLE testrole LOGIN CREATEDB CONNECTION LIMIT 5;
ALTER ROLE testrole SET work_mem TO '64MB';
SELECT pg_get_role_ddl('testrole');

Should produce:

CREATE ROLE testrole LOGIN NOSUPERUSER CREATEDB NOCREATEROLE INHERIT
NOREPLICATION NOBYPASSRLS CONNECTION LIMIT 5;
ALTER ROLE testrole SET work_mem TO '64MB';

The patch includes regression tests covering various role configurations.

Co-authored-by: Mario Gonzalez and Bryan Green.

Comments?

BG

Attachment Content-Type Size
v1-0001-Add-functions-to-generate-DDL-for-recreating-roles.patch text/plain 24.2 KB

Browse pgsql-hackers by date

  From Date Subject
Next Message Gregory Smith 2025-10-24 20:22:29 Re: PG18 GIN parallel index build crash - invalid memory alloc request size
Previous Message Dean Rasheed 2025-10-24 19:30:09 Re: Improving and extending int128.h to more of numeric.c