On Fri, Dec 17, 2021 at 11:43 AM Bryn Llewellyn <b...@yugabyte.com> wrote: > Modular design recommends exposing functionality through a purpose oriented > interface and hiding all implementation details from the API’s user. A > package achieves this with declarative syntax via the spec/body separation. > The body encapsulates as many (top-level) subprograms as you want. Each of > these is visible to all of its peers. But none is visible outside of the > package unless the spec declares that it should be. This is a simple opt-in > scheme.
I still don't get it. It sounds like you're mostly talking about encapsulation, or Information hiding, for stored procedures. I can certainly see how plpgsql doesn't do those things very well, but it still seems like there might be a lot of nuance that isn't getting across. The list of specific features that seem to be missing are not unreasonable, individually, and yet it feels like I cannot see some bigger picture that's apparent to you. Maybe you should explain your position by way of a motivating example, involving a real world use case. Something that makes the issues concrete. Are these items compelling because of how they allow an organization to deploy a program in a production environment, complete with version control? Does it have something to do with decoupling the mutable business data stored in tables from the programs contained/run in the same database? -- Peter Geoghegan