Re: Mark all GUC variable as PGDLLIMPORT - Mailing list pgsql-hackers
From | Robert Haas |
---|---|
Subject | Re: Mark all GUC variable as PGDLLIMPORT |
Date | |
Msg-id | CA+TgmoZ3sAsVym6Pr16gk-WoQZ_TyqCge4yQVxt+sOHMM0X8=Q@mail.gmail.com Whole thread Raw |
In response to | Re: Mark all GUC variable as PGDLLIMPORT (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: Mark all GUC variable as PGDLLIMPORT
Re: Mark all GUC variable as PGDLLIMPORT Re: Mark all GUC variable as PGDLLIMPORT |
List | pgsql-hackers |
On Mon, Aug 23, 2021 at 10:15 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > And yes, I absolutely would prohibit extensions from accessing many > of them, if there were a reasonable way to do it. It would be a good > start towards establishing a defined API for extensions. Mostly, it would make extension development more difficult for no discernable benefit to the project. You've made this argument many times over the years ... but we're no closer to having an extension API than we ever were, and we continue to get complaints about breaking stuff on Windows on a pretty regular basis. Honestly, it seems unimaginable that an API is ever really going to be possible. It would be a ton of work to maintain, and we'd just end up breaking it every time we discover that there's a new feature we want to implement which doesn't fit into the defined API now. That's what we do *now* with functions that third-party extensions actually call, and with variables that they access, and it's not something that, in my experience, is any great problem in maintaining an extension. You're running code that is running inside somebody else's executable and sometimes you have to adjust it for upstream changes. That's life, and I don't think that complaints about that topic are nearly as frequent as complaints about extensions breaking on Windows because of missing PGDLLIMPORT markings. And more than that, I'm pretty sure that you've previously taken the view that we shouldn't document all the hook functions that only exist in the backend for the purpose of extension use. I think you would argue against a patch to go and document all the variables that are marked PGDLLIMPORT now. So it seems to me that you're for an API when it means that we don't have to change anything, and against an API when it means that we don't have to change anything, which doesn't really seem like a consistent position. I think we should be responding to the real, expressed needs of extension developers, and the lack of PGDLLIMPORT markings on various global variables is surely top of the list. It's also a bit unfair to say, well we have APIs for accessing GUC values. It's true that we do. But if the GUC variable is, say, a Boolean, you do not want your extension to call some function that does a bunch of shenanigans and returns a string so that you can then turn around and parse the string to recover the Boolean value. Even moreso if the value is an integer or a comma-separated list. You want to access the value as the system represents it internally, not duplicate the parsing logic in a way that is inefficient and bug-prone. In short, +1 from me for the original proposal of marking all GUCs as PGDLLIMPORT. And, heck, +1 for marking all the other global variables that way, too. We're not solving any problem here. We're just annoying people, mostly people who are loyal community members and steady contributors to the project. -- Robert Haas EDB: http://www.enterprisedb.com
pgsql-hackers by date: