]> granicus.if.org Git - postgresql/commit
Provide for forward compatibility with future minor protocol versions.
authorRobert Haas <rhaas@postgresql.org>
Tue, 21 Nov 2017 18:56:24 +0000 (13:56 -0500)
committerRobert Haas <rhaas@postgresql.org>
Tue, 21 Nov 2017 19:30:33 +0000 (14:30 -0500)
commit7c84bc0b3d709f59720fa913b0d5997754d2691f
tree97ab877af5f4b0d505b602727abc23c2e2d21656
parentfa9a69d3db69b3d65254987b43acf1ca977504c8
Provide for forward compatibility with future minor protocol versions.

Previously, any attempt to request a 3.x protocol version other than
3.0 would lead to a hard connection failure, which made the minor
protocol version really no different from the major protocol version
and precluded gentle protocol version breaks.  Instead, when the
client requests a 3.x protocol version where x is greater than 0, send
the new NegotiateProtocolVersion message to convey that we support
only 3.0.  This makes it possible to introduce new minor protocol
versions without requiring a connection retry when the server is
older.

In addition, if the startup packet includes name/value pairs where
the name starts with "_pq_.", assume that those are protocol options,
not GUCs.  Include those we don't support (i.e. all of them, at
present) in the NegotiateProtocolVersion message so that the client
knows they were not understood.  This makes it possible for the
client to request previously-unsupported features without bumping
the protocol version at all; the client can tell from the server's
response whether the option was understood.

It will take some time before servers that support these new
facilities become common in the wild; to speed things up and make
things easier for a future 3.1 protocol version, back-patch to all
supported releases.

Robert Haas and Badrul Chowdhury

Discussion: http://postgr.es/m/BN6PR21MB0772FFA0CBD298B76017744CD1730@BN6PR21MB0772.namprd21.prod.outlook.com
Discussion: http://postgr.es/m/30788.1498672033@sss.pgh.pa.us
doc/src/sgml/protocol.sgml
src/backend/postmaster/postmaster.c