• Robert Haas's avatar
    libpq: Add target_session_attrs parameter. · 721f7bd3
    Robert Haas authored
    Commit 274bb2b3 made it possible to
    specify multiple IPs in a connection string, but that's not good
    enough for the case where you have a read-write master and a bunch of
    read-only standbys and want to connect to whichever server is the
    master at the current time.  This commit allows that, by making it
    possible to specify target_session_attrs=read-write as a connection
    parameter.
    
    There was extensive discussion of the best name for the connection
    parameter and its values as well as the best way to distinguish master
    and standbys.  For now, adopt the same solution as JDBC: if the user
    wants a read-write connection, issue 'show transaction_read_only' and
    rejection the connection if the result is 'on'.  In the future, we
    could add additional values of this new target_session_attrs parameter
    that issue different queries; or we might have some way of
    distinguishing the server type without resorting to an SQL query; but
    right now, we have this, and that's (hopefully) a good start.
    
    Victor Wagner and Mithun Cy.  Design review by Álvaro Herrera, Catalin
    Iacob, Takayuki Tsunakawa, and Craig Ringer; code review by me.  I
    changed Mithun's patch to skip all remaining IPs for a host if we
    reject a connection based on this new parameter, rewrote the
    documentation, and did some other cosmetic cleanup.
    
    Discussion: http://postgr.es/m/CAD__OuhqPRGpcsfwPHz_PDqAGkoqS1UvnUnOnAB-LBWBW=wu4A@mail.gmail.com
    721f7bd3
libpq-fe.h 21.5 KB