Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
up vote 3 down vote accepted

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's pg_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.

share|improve this answer
clients in general, the actual Linux client used is Perl DBD::Pg. – Ben Voigt Jan 17 '11 at 4:57

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.