> [email protected] wrote: > >> [email protected] 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?
I can certainly make up an example. I’ll do this over the weekend. However, I fear that it will be time wasted because at least some of the addressees here who’ve expressed strong opposition to the notion of PL/pgSQL packages must understand very well what they’re objecting to. For example, [email protected] <mailto:[email protected]> with his “schema variables, LET command” work. Anyway… I’ll give it my best shot. I’ll try to address your specific questions in my follow-up reply. Hang on for a couple of days, please.
