Re: let's make the list of reportable GUCs configurable (was Re: Add%r substitution for psql prompts to show recovery status) - Mailing list pgsql-hackers
From | Robert Haas |
---|---|
Subject | Re: let's make the list of reportable GUCs configurable (was Re: Add%r substitution for psql prompts to show recovery status) |
Date | |
Msg-id | CA+TgmobSXsy0KFR_vDQQOXJxQAFNESFXF_-dArNE+QHhqCwrAA@mail.gmail.com Whole thread Raw |
In response to | Re: let's make the list of reportable GUCs configurable (was Re: Add %r substitution for psql prompts to show recovery status) (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: let's make the list of reportable GUCs configurable (was Re: Add %r substitution for psql prompts to show recovery status)
Re: let's make the list of reportable GUCs configurable (was Re: Add%r substitution for psql prompts to show recovery status) |
List | pgsql-hackers |
On Wed, Jan 10, 2018 at 12:36 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > I don't care at all if J. Random Developer's homegrown code only works > with the PG version he's using. The concern I have is that unwanted > server version dependencies will sneak into widely used code, like > psql, or libpq, or jdbc. Or another way of putting it: Robert's proposal > is a protocol version break, just like most stuff at this level. Trying > to pretend it isn't doesn't make it not one. Your argument here sounds suspiciously like "If we add a new feature and people use it in a stupid way then it may cause their stuff not to work". Everything that worked before adding an option like _pq_.report continues to work afterward. Granted, if they try to use the option, it will only work on versions that support that option, but that is true of any new feature. Furthermore, they will easily be able to tell based on the reported server version whether or not their request for different behavior was accepted by the server. Therefore, if they write their code well, there should be no danger of a client thinking that they are getting behavior A while actually getting behavior B. If we suppose that they write their code poorly, then there could well be a problem, but drivers that contain bad code are fairly serious problem with or without this feature. It's not like checking the server version to see whether it's new enough to know about _pq_.report is rocket science. I agree that my follow-on proposal of dropping GUC_REPORT for some GUCs IS a protocol version break, and that may be a good reason to reject that part of the proposal, or postpone it until we bump to 3.1 for some other reason. Note that commit ae65f6066dc3d19a55f4fdcd3b30003c5ad8dbed contemplates a specific scheme for making servers that speak 3.1 and later backward-compatible with existing clients that want 3.0, so any client that requests 3.1 can be assumed to be comfortable with all 3.1 behaviors. Of course, it's not like we've always been similarly careful in the past: you yourself committed patches adding GUC_REPORT reporting to various GUCs over the years, and if you worried about what impact that would have on naive clients, the commit log does not record it, and we certainly didn't bump the protocol version to account for it. If you want an example of a much more serious protocol version break, you don't have to look any further than the major features section of the v10 release notes. With SCRAM, we don't have to fall back on weak arguments like "driver authors might use it wrong!" to see how things get broken. They're just wildly broken, and we don't care, because SCRAM is a good feature. v10 also broke the replication sub-protocol both by adding facilities for logical replication (which is arguably a backward-compatible change) and by changing the format of hot standby feedback messages (which isn't, unless we think clients ought to ignore differences in the message length and just look at the initial bytes, but I'm not sure we're particularly careful about extending replication messages only at the end, so that sounds like a risky strategy). -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
pgsql-hackers by date: