>>> How does the driver figure it out? >> >> DBD::Pg parses pg_config --version, then passes the information >> to the C programs for directive fiddling. I certainly hope >> other drivers are doing the same, as libpq varies across >> major versions a good deal.
> I would imagine that most libpq wrapping drivers use libpq's > PQserverVersion(), which returns an integer that looks like 90000.
The real problem is that neither of these can be trusted to tell you the *library* version. PQserverVersion() is something else altogether, and I wouldn't want to assume that pg_config exactly matches the library you're linked to --- if it's even present at all.
We could add a PQlibpqVersion(), maybe, but it would be many years before client code could rely on that being present.