On 2019-10-12 05:05, Tom Lane wrote:
Andres Freund <and...@anarazel.de> writes:
On 2019-10-11 16:30:17 -0400, Robert Haas wrote:
But, if it does need to be changed, it seems like a terrible idea to
allow it to be done via SQL. Otherwise, the user can break the driver
by using SQL to set the list to something that the driver's not
expecting, and there's nothing the driver can do to prevent it.

Uhm. The driver can just ignore GUCs it's not interested in, like our
docs have told them for a long time?

Certainly it should do that; but the problematic case is where it
*doesn't* get told about something it's depending on knowing about.

Yeah, the problem I see here is this: Client 1 uses language driver A, client 2 uses language driver B. Connection pooling is in use, and they both connect to the same pool. Everyone is happy.

Now this feature gets introduced. Language driver A is updated to transparently ask for GUC "foo" to be reported, because it uses it internally. Now how it connection pooling supposed to work in this situation?

There either needs to be a way to change reported parameters during a session that this can be run when an existing backend connection is assigned to a pooler client. Or the connection pooler would need to be changed to create separate pools for each different setting of the to-be-reported list, just like it already creates separate pools for different users and databases, since you can't change those after session start either. Both of these options are not without problems. We should have a complete plan for this before implementing the feature in the server.

--
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Reply via email to