Re: invalidly encoded strings

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Jeff Davis <pgsql(at)j-davis(dot)com>
Cc: Tatsuo Ishii <ishii(at)postgresql(dot)org>, andrew(at)dunslane(dot)net, laurenz(dot)albe(at)wien(dot)gv(dot)at, pgsql-hackers(at)postgresql(dot)org
Subject: Re: invalidly encoded strings
Date: 2007-09-11 18:48:54
Message-ID: 16292.1189536534@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches

Jeff Davis <pgsql(at)j-davis(dot)com> writes:
> On Mon, 2007-09-10 at 23:20 -0400, Tom Lane wrote:
>> It might work the way you are expecting if the database uses SQL_ASCII
>> encoding and C locale --- and I'd be fine with allowing convert() only
>> when the database encoding is SQL_ASCII.

> I prefer this option.

I think really the technically cleanest solution would be to make
convert() return bytea instead of text; then we'd not have to put
restrictions on what encoding or locale it's working inside of.
However, it's not clear to me whether there are valid usages that
that would foreclose. Tatsuo mentioned length() but bytea has that.

What I think we'd need to have a complete solution is

convert(text, name) returns bytea
-- convert from DB encoding to arbitrary encoding

convert(bytea, name, name) returns bytea
-- convert between any two encodings

convert(bytea, name) returns text
-- convert from arbitrary encoding to DB encoding

The second and third would need to do a verify step before
converting, of course.

Comments?

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jeff Davis 2007-09-11 19:07:45 Re: invalidly encoded strings
Previous Message Florian G. Pflug 2007-09-11 17:32:11 Re: Final Thoughts for 8.3 on LWLocking and Scalability

Browse pgsql-patches by date

  From Date Subject
Next Message Jeff Davis 2007-09-11 19:07:45 Re: invalidly encoded strings
Previous Message Heikki Linnakangas 2007-09-11 18:21:18 Re: pgsql: Remove QueryOperand->istrue flag, it was used only in cover