Re: Add Postgres module info
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Andrei Lepikhov <lepihov@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Yurii Rashkovskii <yrashk@omnigres.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2025-02-17T01:41:56Z
Lists: pgsql-hackers
Hi, Andrei! On Mon, Dec 16, 2024 at 7:02 AM Andrei Lepikhov <lepihov@gmail.com> wrote: >ly > On 12/13/24 10:17, Tom Lane wrote: > > Andrei Lepikhov <lepihov@gmail.com> writes: > >> On 12/12/24 21:02, Yurii Rashkovskii wrote: > >>> 2. Any reasons to dictate MAJ.MIN format? With semantic versioning > >>> abound, it's rather common to use MAJ.MIN.PATCH. > > > >> Okay, thanks; that's a good catch. I wonder how to follow these rules > >> with a static fixed-sized structure. I would like to read about any > >> suggestions and implementation examples. > > > > There's nothing stopping a field of the magic block from being > > a "const char *" pointer to a string literal. > Ok, See v.2 in attachment. Generally, the patch looks good to me. I have couple of questions. 1) Is it intended to switch all in-core libraries to use PG_MODULE_MAGIC_EXT()? 2) Once we have module version information, it looks natural to specify the required version for dependant objects, e.g. SQL-funcions implemented in shared libraries. For instance, CREATE FUNCTION ... AS 'MODULE_PATHNAME' LANGUAGE C module_version >= '1.0'; For this, and probably other purposes, it's desirable for version to be something comparable at SQL level. Should we add some builtin analogue of pg_text_semver? ------ Regards, Alexander Korotkov Supabase
Commits
-
Avoid mixing designated and non-designated field initializers.
- d66997dfe8fe 18.0 landed
-
Use PG_MODULE_MAGIC_EXT in our installable shared libraries.
- 55527368bd07 18.0 landed
-
Introduce PG_MODULE_MAGIC_EXT macro.
- 9324c8c58065 18.0 landed