I'm planning updates to a system that is currently running with 8.x server on Windows, 8.x client on Windows, and 8.x client on Linux. Obviously that seems like a bad choice of platform in a mixed environment, but the Linux machine has no persistent writable storage (as an anti-rootkit measure). I'm concerned with compatibility between versions right now.
Can a linux postgresql 9.0.x client connect to a Windows 8.x server? The server is using some third-party binary extensions, so upgrading it is a more involved task and will be done later.
If combining a 9.0.x client and 8.x server is discouraged, would latest 8.x clients be able to continue to connect if I did upgrade the server first?
META: What tag is appropriate for backward-compatibility questions?
If you're talking about clients in general, postgresql's client communication protocol is stable and hasn't changed since postgresql 7.4 (protocol version 3.0) according to the manual. Thus, any client can communicate with any server since then. Additionally, libpq can apparently connect to protocol 2.0 servers.
If you're talking about the
psql
commandline client, it can connect to old servers (it uses libpq) but the backslash commands (such as\d tablename
) query the database'spg_catalog
tables to return the information you're looking for. According to psql's documentation, the client knows how to execute the\d
commands on the previous versions of the database but other commands may or may not work if the catalog schema they use has changed. (The\d
commands are pretty much all of them so you shouldn't have any problems.)As an aside, you can use
\set ECHO_HIDDEN
to see what exactly psql is doing when you use the backslash commands.\unset ECHO_HIDDEN
to return the backslash commands to normal.