Thread: Old-client/new-server...issues?

Old-client/new-server...issues?

From
Steve Crawford
Date:
I am working on my final 7.4 -> 9.0 upgrade. Data-type (auto-coalesce
and foreign-key), query and encoding issues are resolved. Dump/restore
is tested. But...

I have a few old client systems that are difficult/infeasible to update.
I know the recommended procedure is to update clients ahead of server
but what problems am I likely to encounter connecting to a 9.0 server
from a 7.4 client? The client software is primarily in C, Python, Perl,
Ruby and PHP with some Bash scripts using psql.

Note again - the database isn't using any data-types that didn't exist
in 7.4 and the queries themselves are tested OK with 9.0 so I'm more
interested in backend format and related issues.

Cheers,
Steve


Re: Old-client/new-server...issues?

From
Craig Ringer
Date:
On 7/06/2011 8:32 AM, Steve Crawford wrote:
> I am working on my final 7.4 -> 9.0 upgrade. Data-type (auto-coalesce
> and foreign-key), query and encoding issues are resolved. Dump/restore
> is tested. But...
>
> I have a few old client systems that are difficult/infeasible to update.
> I know the recommended procedure is to update clients ahead of server
> but what problems am I likely to encounter connecting to a 9.0 server
> from a 7.4 client?

Reliance on implicit casts to/from text in queries may be a problem.

You could also have issues if the clients rely on metadata obtained from
the database - for example, enumerating columns in a table or listing
tables. I know this has been an issue when using older JDBC drivers
against newer servers, and wouldn't be too surprised if similar issues
existed with libpq.

--
Craig Ringer

Tech-related writing at http://soapyfrogs.blogspot.com/

Re: Old-client/new-server...issues?

From
Tom Lane
Date:
Craig Ringer <craig@postnewspapers.com.au> writes:
> On 7/06/2011 8:32 AM, Steve Crawford wrote:
>> I am working on my final 7.4 -> 9.0 upgrade. Data-type (auto-coalesce
>> and foreign-key), query and encoding issues are resolved. Dump/restore
>> is tested. But...
>>
>> I have a few old client systems that are difficult/infeasible to update.
>> I know the recommended procedure is to update clients ahead of server
>> but what problems am I likely to encounter connecting to a 9.0 server
>> from a 7.4 client?

> Reliance on implicit casts to/from text in queries may be a problem.

> You could also have issues if the clients rely on metadata obtained from
> the database - for example, enumerating columns in a table or listing
> tables. I know this has been an issue when using older JDBC drivers
> against newer servers, and wouldn't be too surprised if similar issues
> existed with libpq.

libpq itself is pretty metadata-ignorant.  Higher-level stuff such as
python or perl DBI interfaces (or JDBC, as Craig says) would pose much
more risk.

At the same time, if you are sticking with a 7.4-era libpq, you're
missing literally years worth of bug fixes ... and I think the
compatibility risks associated with an update there are pretty minimal
compared to what you're already buying into with the server-side upgrade.

So my advice would be to try to relink all your old apps against more
modern versions of libpq as well as any higher-level client drivers you
are using.

            regards, tom lane