generating function default settings from pg_proc.dat
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2026-02-16T17:31:37Z
Lists: pgsql-hackers
Attachments
- 0001-Add-infrastructure-for-proargdflts-in-pg_proc.dat.patch (text/x-patch) patch 0001
- 0002-Move-function-defaults-from-system_functions.sql-to-.patch (text/x-patch) patch 0002
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. cheers andrew [1] https://www.postgresql.org/message-id/19409-e16cd2605e59a4af%40postgresql.org -- Andrew Dunstan EDB: https://www.enterprisedb.com
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