| From: | Pavel Golub <pavel(at)microolap(dot)com> |
|---|---|
| To: | Sebastien FLAESCH <sf(at)4js(dot)com> |
| Cc: | pgsql-interfaces(at)postgresql(dot)org |
| Subject: | Re: libpq compatibility policy across versions |
| Date: | 2013-10-01 12:28:20 |
| Message-ID: | 113082781.20131001152820@gf.microolap.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-interfaces |
Hello, Sebastien.
You wrote:
SF> Hi all,
SF> We have a libpq client application written in C.
SF> We want to deliver the software so that can it be used with different
SF> PostgreSQL client versions, from 8.3 to 9.3 (and future versions).
SF> So far, we build (compile and link) a binary with each major version
SF> of PostgreSQL (8.3, 8.4, 9.0, 9.1, 9.2, 9.3) - in fact we have shared
SF> libraries (database driver) for each PostgreSQL version.
SF> Is this the proper way, or could we just compile/link with a given
SF> version (9.3) and assume that it's backward compatible with any
SF> prior version such as 8.3 ?
Yes, you should use the latest client library. It's compatible with
all prior versions.
SF> Assuming that we could dynamically load the libpq.so client, search
SF> for existing API symbols and only use them if present?
SF> Is this risky? Do the C headers define C structures that are compatible
SF> between newer and older versions?
SF> I would expect some note about libpq compatibility policy here:
SF> http://www.postgresql.org/docs/9.3/static/libpq-build.html
SF> I can see that the lib version number of libpq.so.x.y changes
SF> for each major version:
SF> /opt3/dbs/pgs/9.2/lib/libpq.so -> libpq.so.5.5
SF> /opt3/dbs/pgs/9.2/lib/libpq.so.5 -> libpq.so.5.5
SF> /opt3/dbs/pgs/9.2/lib/libpq.so.5.5
SF> /opt3/dbs/pgs/9.3.0/lib/libpq.so -> libpq.so.5.6
SF> /opt3/dbs/pgs/9.3.0/lib/libpq.so.5 -> libpq.so.5.6
SF> /opt3/dbs/pgs/9.3.0/lib/libpq.so.5.6
SF> The binaries are dependent from libpq.so.5:
SF> $ ldd -r dbmpgs92x.so
SF> ...
SF> libpq.so.5 => /opt3/dbs/pgs/9.2.3/lib/libpq.so.5 (0xb77bb000)
SF> ...
SF> What does this mean?
SF> Theoritically, a binary linked in a 9.3 env can use le libpq.so version
SF> of a prior version down to 8.2 ... (8.1 has libpq.so.4)
SF> The main question is about C header compatibility:
SF> - Compile + link with PostgreSQL client version X.Y.?
SF> - What PostgreSQL client version can be used at runtime?
SF> Thanks.
SF> Seb
--
With best wishes,
Pavel mailto:pavel(at)gf(dot)microolap(dot)com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Sebastien FLAESCH | 2013-10-01 13:04:16 | Re: libpq compatibility policy across versions |
| Previous Message | Alvaro Aguilera | 2013-10-01 07:45:36 | Querying Arrays using libpq-fe |