Re: generating function default settings from pg_proc.dat
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2026-02-16T18:08:23Z
Lists: pgsql-hackers
Andrew Dunstan <andrew@dunslane.net> writes: > Motivated by Bug 19409 [1] I decided to do something about a wart that > has bugged me for a while, namely the requirement to write stuff in > system_views.sql if you need to specify default values for function > arguments. Here's my attempt. The first patch here sets up the required > infrastructure. genbki.pl creates a file called function_defaults.sql > which is run by initdb at the appropriate time. There are two new fields > in pg_proc.dat entries: proargdflts,and provariadicdflt. These are > parsed and the appropriate CREATE OR REPLACE statement is generated and > placed in function_defaults.sql. The second patch applies this treatment > to 37 function definitions and removes the corresponding statements from > system_views.sql. This gets us closer to having pg_proc.dat as a single > source of truth. Nice! I'll review this in more detail later, but it seems like a great idea. One nitpick is that it's not clear how someone would discover the existence of this feature. We could of course add info to bki.sgml, but I wish it were more organic. Is there a way that we could have these entries appear in "proargdefaults" so that there's an obvious connection to the actual catalog field? regards, tom lane
Commits
-
Simplify creation of built-in functions with non-default ACLs.
- f95d73ed4332 19 (unreleased) landed
-
Be more wary of false matches in initdb's replace_token().
- 7664319ccb02 19 (unreleased) landed
-
Simplify creation of built-in functions with default arguments.
- 759b03b24ce9 19 (unreleased) landed