Thread

  1. Re: [PATCH] Add pg_get_role_ddl() functions for role recreation

    Bryan Green <dbryan.green@gmail.com> — 2025-11-06T16:20:44Z

    On 11/6/2025 1:20 AM, Quan Zongliang wrote:
    > 
    > 
    > On 10/25/25 4:03 AM, Bryan Green wrote:
    >> Attached is a patch adding two new functions for generating DDL to
    >> recreate roles: pg_get_role_ddl() and pg_get_role_ddl_statements().
    >>
    > It is no longer apply to the latest code. Could you rebase this?
    > 
    >> 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
    > 
    The rebased patch is attached.
    
    Thanks,
    
    -- 
    Bryan Green
    EDB: https://www.enterprisedb.com