> Andrew - Supernews <[EMAIL PROTECTED]> writes:
> > Thinking about this made me realize that there's another, ahem, elephant
> > in the room here: convert().
> > By definition convert() returns text strings which are not valid in the
> > server encoding. How can this be addressed?
> 
> Remove convert().  Or at least redefine it as dealing in bytea not text.

That would break some important use cases. 

1) A user have UTF-8 database which contains various language
   data. Each language has its own table. He wants to sort a SELECT
   result by using ORDER BY. Since locale cannot handle multiple
   languages, he uses C locale and do the SELECT something like this:

   SELECT * FROM french_table ORDER BY convert(t, 'LATIN1');
   SELECT * FROM japanese_table ORDER BY convert(t, 'EUC_JP');

2) A user has a UTF-8 database but unfortunately his OS's UTF-8 locale
   is broken. He decided to use C locale and want to sort the result
   from SELECT like this.

   SELECT * FROM japanese_table ORDER BY convert(t, 'EUC_JP');

   Note that sorting by UTF-8 physical order would produce random
   results. So following would not help him in this case:

   SELECT * FROM japanese_table ORDER BY t;

Also I don't understand what this is different to the problem when we
have a message catalogue which does not match the encoding.
--
Tatsuo Ishii
SRA OSS, Inc. Japan

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Reply via email to