Thread

  1. [PATCH v1 4/6] Handle pg_get_constraintdef default args in system_functions.sql

    Mark Wong <markwkm@gmail.com> — 2025-12-09T18:59:41Z

    Modernize pg_get_constraintdef to use CREATE OR REPLACE FUNCTION to
    handle the optional pretty argument.
    ---
     src/backend/catalog/system_functions.sql |  7 +++++++
     src/backend/utils/adt/ruleutils.c        | 17 -----------------
     src/include/catalog/pg_proc.dat          |  5 +----
     3 files changed, 8 insertions(+), 21 deletions(-)
    
    diff --git a/src/backend/catalog/system_functions.sql b/src/backend/catalog/system_functions.sql
    index f7b9d26089a..1f89dcc7908 100644
    --- a/src/backend/catalog/system_functions.sql
    +++ b/src/backend/catalog/system_functions.sql
    @@ -685,6 +685,13 @@ LANGUAGE INTERNAL
     PARALLEL SAFE
     AS 'pg_get_indexdef';
     
    +CREATE OR REPLACE FUNCTION
    +  pg_get_constraintdef("constraint" oid, pretty bool DEFAULT false)
    +RETURNS TEXT
    +LANGUAGE INTERNAL
    +PARALLEL SAFE
    +AS 'pg_get_constraintdef';
    +
     --
     -- The default permissions for functions mean that anyone can execute them.
     -- A number of functions shouldn't be executable by just anyone, but rather
    diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
    index 92e2f987074..416144c49f5 100644
    --- a/src/backend/utils/adt/ruleutils.c
    +++ b/src/backend/utils/adt/ruleutils.c
    @@ -2061,23 +2061,6 @@ pg_get_partconstrdef_string(Oid partitionId, char *aliasname)
      */
     Datum
     pg_get_constraintdef(PG_FUNCTION_ARGS)
    -{
    -	Oid			constraintId = PG_GETARG_OID(0);
    -	int			prettyFlags;
    -	char	   *res;
    -
    -	prettyFlags = PRETTYFLAG_INDENT;
    -
    -	res = pg_get_constraintdef_worker(constraintId, false, prettyFlags, true);
    -
    -	if (res == NULL)
    -		PG_RETURN_NULL();
    -
    -	PG_RETURN_TEXT_P(string_to_text(res));
    -}
    -
    -Datum
    -pg_get_constraintdef_ext(PG_FUNCTION_ARGS)
     {
     	Oid			constraintId = PG_GETARG_OID(0);
     	bool		pretty = PG_GETARG_BOOL(1);
    diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
    index 62b997a1653..a9431ea4037 100644
    --- a/src/include/catalog/pg_proc.dat
    +++ b/src/include/catalog/pg_proc.dat
    @@ -3977,9 +3977,6 @@
     { oid => '1662', descr => 'trigger description',
       proname => 'pg_get_triggerdef', provolatile => 's', prorettype => 'text',
       proargtypes => 'oid', prosrc => 'pg_get_triggerdef' },
    -{ oid => '1387', descr => 'constraint description',
    -  proname => 'pg_get_constraintdef', provolatile => 's', prorettype => 'text',
    -  proargtypes => 'oid', prosrc => 'pg_get_constraintdef' },
     { oid => '1716', descr => 'deparse an encoded expression',
       proname => 'pg_get_expr', provolatile => 's', prorettype => 'text',
       proargtypes => 'pg_node_tree oid', prosrc => 'pg_get_expr' },
    @@ -8501,7 +8498,7 @@
       proargtypes => 'oid int4 bool', prosrc => 'pg_get_indexdef' },
     { oid => '2508', descr => 'constraint description with pretty-print option',
       proname => 'pg_get_constraintdef', provolatile => 's', prorettype => 'text',
    -  proargtypes => 'oid bool', prosrc => 'pg_get_constraintdef_ext' },
    +  proargtypes => 'oid bool', prosrc => 'pg_get_constraintdef' },
     { oid => '2509',
       descr => 'deparse an encoded expression with pretty-print option',
       proname => 'pg_get_expr', provolatile => 's', prorettype => 'text',
    -- 
    2.51.2
    
    
    --IRGsBYp1UN8d6WrT
    Content-Type: text/plain; charset=us-ascii
    Content-Disposition: attachment;
    	filename=v1-0005-Handle-pg_get_expr-default-args-in-system_functio.patch