Thread

  1. [PATCH v4 2/6] Handle pg_get_viewdef default args in system_functions.sql

    Mark Wong <markwkm@gmail.com> — 2025-12-09T17:33:21Z

    Modernize pg_get_viewdef to use proargdefaults to handle the optional
    pretty argument for both versions that use OID or view name.
    ---
     src/backend/utils/adt/ruleutils.c | 44 -------------------------------
     src/include/catalog/pg_proc.dat   | 13 +++------
     2 files changed, 4 insertions(+), 53 deletions(-)
    
    diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
    index 31e773fb32e..328f994547e 100644
    --- a/src/backend/utils/adt/ruleutils.c
    +++ b/src/backend/utils/adt/ruleutils.c
    @@ -659,25 +659,6 @@ pg_get_ruledef_worker(Oid ruleoid, int prettyFlags)
      */
     Datum
     pg_get_viewdef(PG_FUNCTION_ARGS)
    -{
    -	/* By OID */
    -	Oid			viewoid = PG_GETARG_OID(0);
    -	int			prettyFlags;
    -	char	   *res;
    -
    -	prettyFlags = PRETTYFLAG_INDENT;
    -
    -	res = pg_get_viewdef_worker(viewoid, prettyFlags, WRAP_COLUMN_DEFAULT);
    -
    -	if (res == NULL)
    -		PG_RETURN_NULL();
    -
    -	PG_RETURN_TEXT_P(string_to_text(res));
    -}
    -
    -
    -Datum
    -pg_get_viewdef_ext(PG_FUNCTION_ARGS)
     {
     	/* By OID */
     	Oid			viewoid = PG_GETARG_OID(0);
    @@ -717,31 +698,6 @@ pg_get_viewdef_wrap(PG_FUNCTION_ARGS)
     
     Datum
     pg_get_viewdef_name(PG_FUNCTION_ARGS)
    -{
    -	/* By qualified name */
    -	text	   *viewname = PG_GETARG_TEXT_PP(0);
    -	int			prettyFlags;
    -	RangeVar   *viewrel;
    -	Oid			viewoid;
    -	char	   *res;
    -
    -	prettyFlags = PRETTYFLAG_INDENT;
    -
    -	/* Look up view name.  Can't lock it - we might not have privileges. */
    -	viewrel = makeRangeVarFromNameList(textToQualifiedNameList(viewname));
    -	viewoid = RangeVarGetRelid(viewrel, NoLock, false);
    -
    -	res = pg_get_viewdef_worker(viewoid, prettyFlags, WRAP_COLUMN_DEFAULT);
    -
    -	if (res == NULL)
    -		PG_RETURN_NULL();
    -
    -	PG_RETURN_TEXT_P(string_to_text(res));
    -}
    -
    -
    -Datum
    -pg_get_viewdef_name_ext(PG_FUNCTION_ARGS)
     {
     	/* By qualified name */
     	text	   *viewname = PG_GETARG_TEXT_PP(0);
    diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
    index b935b6f14c0..166ae4b5645 100644
    --- a/src/include/catalog/pg_proc.dat
    +++ b/src/include/catalog/pg_proc.dat
    @@ -3962,13 +3962,6 @@
       proargtypes => 'oid oid', prosrc => 'oidge' },
     
     # System-view support functions
    -{ oid => '1640', descr => 'select statement of a view',
    -  proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r',
    -  prorettype => 'text', proargtypes => 'text',
    -  prosrc => 'pg_get_viewdef_name' },
    -{ oid => '1641', descr => 'select statement of a view',
    -  proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r',
    -  prorettype => 'text', proargtypes => 'oid', prosrc => 'pg_get_viewdef' },
     { oid => '1642', descr => 'role name by OID (with fallback)',
       proname => 'pg_get_userbyid', provolatile => 's', prorettype => 'name',
       proargtypes => 'oid', prosrc => 'pg_get_userbyid' },
    @@ -8519,12 +8512,14 @@
       descr => 'select statement of a view with pretty-print option',
       proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r',
       prorettype => 'text', proargtypes => 'text bool',
    -  prosrc => 'pg_get_viewdef_name_ext' },
    +  proargnames => '{view,pretty}', proargdefaults => '{false}',
    +  prosrc => 'pg_get_viewdef_name' },
     { oid => '2506',
       descr => 'select statement of a view with pretty-print option',
       proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r',
       prorettype => 'text', proargtypes => 'oid bool',
    -  prosrc => 'pg_get_viewdef_ext' },
    +  proargnames => '{view,pretty}', proargdefaults => '{false}',
    +  prosrc => 'pg_get_viewdef' },
     { oid => '3159',
       descr => 'select statement of a view with pretty-printing and specified line wrapping',
       proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r',
    -- 
    2.43.0
    
    
    --eEEy3EHc57lA8spa
    Content-Type: text/x-diff; charset=us-ascii
    Content-Disposition: attachment;
    	filename="v4-0003-Handle-pg_get_indexdef-default-args-in-system_fun.patch"