Gripe: bytea_output default => data corruption

From: ljb <ljb9832(at)pobox(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Gripe: bytea_output default => data corruption
Date: 2010-10-13 00:37:33
Message-ID: i92v0d$qfe$1@news.hub.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs pgsql-general

Defaulting bytea output from the backend to use hex mode encoding, which is
incompatible with pre-9.0 interfaces, wasn't a friendly thing to do. The
default should have been escape mode. Or else you needed a big warning in
HISTORY that we must either change bytea_output, or upgrade all clients
before servers. Because using a 9.0 server with a 8.x libpq-based client
results in undetected data corruption when selecting BYTEA objects.

By default, the 9.0 server encodes a bytea using hex mode, but an 8.x
libpq-based client will decode that using escape mode, with no error detected
on either end. For example, start with "A", encode to "\x40" decode to "x40".

There are good reasons to break backward compatibility, like security or
standards compliance, but not performance. Please think twice next time you
consider breaking stuff just because you think the new way should be faster.

Responses

Browse pgsql-docs by date

  From Date Subject
Next Message Josh Kupershmidt 2010-10-13 01:05:58 Re: Documenting removal of nonnullvalue() and friends
Previous Message Josh Kupershmidt 2010-10-12 17:03:30 Documenting removal of nonnullvalue() and friends

Browse pgsql-general by date

  From Date Subject
Next Message Satoshi Nagayasu 2010-10-13 03:11:42 Re: NoSQL -vs- SQL
Previous Message sunpeng 2010-10-12 22:51:17 Re: are there any method that "Update" command not affect other unrelated indices?