public inbox for [email protected]  
help / color / mirror / Atom feed
From: Chao Li <[email protected]>
To: Mark Wong <[email protected]>
Cc: [email protected]
Subject: Re: updates for handling optional argument in system functions
Date: Wed, 21 Jan 2026 16:45:35 +0800
Message-ID: <[email protected]> (raw)
In-Reply-To: <aW_GMVYZqGnebYLE@o>
References: <aTiwu9o8vBkLreAL@ltdrgnflg2>
	<aW_GMVYZqGnebYLE@o>



> On Jan 21, 2026, at 02:15, Mark Wong <[email protected]> wrote:
> 
> Hi everyone,
> 
> On Tue, Dec 09, 2025 at 03:28:59PM -0800, Mark Wong wrote:
>> Hi everyone,
>> 
>> I noticed how it was preferred to define optional arguments with the
>> system functions in system_functions.sql instead of defining them in
>> pg_proc.dat.
>> 
>> I took a gross stab at updating the ones that ended in _ext, which
>> turned out to be 7 declarations across 6 system functions, and created a
>> patch per system function, hoping it would be easier to review.
>> 
>> Perhaps the most interesting thing to share is the total reduction of
>> the lines of code, although system_functions.sql only grows:
>> 
>> src/backend/catalog/system_functions.sql |  49 ++++++++
>> src/backend/utils/adt/ruleutils.c        | 130 ----------------------
>> src/include/catalog/pg_proc.dat          |  36 ++----
>> 3 files changed, 56 insertions(+), 159 deletions(-)
>> 
>> 
>> Is that something we want?
> 
> I fixed an error caught by the address sanitizer in CI [1] and am uploading a
> new patchset.  The only change is to 2 lines in
> v2-0005-Handle-pg_get_expr-default-args-in-system_functio.patch to update a
> call to pg_get_expr with the correct number of arguments in tablecmds.c.
> 
> Regards,
> Mark
> 
> [1] https://cirrus-ci.com/task/6109065824174080
> --
> Mark Wong <[email protected]>
> EDB https://enterprisedb.com
> <v2-0001-Handle-pg_get_ruledef-default-args-in-system_func.patch><v2-0002-Handle-pg_get_viewdef-default-args-in-system_func.patch><v2-0003-Handle-pg_get_indexdef-default-args-in-system_fun.patch><v2-0004-Handle-pg_get_constraintdef-default-args-in-syste.patch><v2-0005-Handle-pg_get_expr-default-args-in-system_functio.patch><v2-0006-Handle-pg_get_triggerdef-default-args-in-system_f.patch>

Hi Mark,

Thanks for the patch. After reviewing it, I have mixed feelings. From one side, it removes some redundant code, which is good. In the other side, I doubt if we should delete proc entries from pg_proc.c? Say, there is a view that uses a proc to be deleted, the proc OID is stored with the view, then after an upgrade, the view would be broken. From this perspective, should we retain the old proc entries and only point them to the new functions?

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/










view thread (3+ messages)

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: updates for handling optional argument in system functions
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox