When producing a forked version of PostgreSQL, there is no
straightforward way to enforce that users don't accidentally load
modules built for the non-forked (standard, community) version. You can
only distinguish by PostgreSQL major version and a few compile-time
settings. (see internal_load_library(), Pg_magic_struct) Depending on
the details, mixing and matching might even work, until it doesn't, so
this is a bad experience.
I'm thinking about adding two more int fields to Pg_magic_struct: a
product or vendor magic number, and an ABI version that can be used
freely within a product/vendor.
Would anyone else have use for this? Any thoughts?