Re: plperlu problem with utf8

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Oleg Bartunov <oleg@sai.msu.su>
Cc: Pgsql Hackers <pgsql-hackers@postgresql.org>
Date: 2010-12-08T16:07:48Z
Lists: pgsql-hackers

On 12/08/2010 10:13 AM, Oleg Bartunov wrote:
> Hi there,
>
> below is the problem, which I don't have when running in shell. The 
> database is in UTF-8 encoding.
>
> CREATE OR REPLACE FUNCTION url_decode(Vkw varchar) RETURNS varchar  AS $$
>     use strict;
>     use URI::Escape;
>     return uri_unescape($_[0]); $$ LANGUAGE plperlu;
> CREATE FUNCTION
> Time: 1.416 ms
> select url_decode('comment%20passer%20le%20r%C3%A9veillon');
>           url_decode ------------------------------
>  comment passer le rveillon
>                   ^
>                  non-printed


I get: (platform is Fedora 13, git tip, perl 5.10.1):

    andrew=# CREATE OR REPLACE FUNCTION url_decode(Vkw varchar) RETURNS
    varchar  AS $$
    andrew$#     use strict;
    andrew$#     use URI::Escape;
    andrew$#     return uri_unescape($_[0]); $$ LANGUAGE plperlu;
    CREATE FUNCTION
    andrew=# select url_decode('comment%20passer%20le%20r%C3%A9veillon');
               url_decode
    ------------------------------
      comment passer le réveillon
    (1 row)

    andrew=#

which makes it look like we might have some double escaping going on 
here, but at least I don't get nothing :-)

Further experimentation shows even more weirdness. There's definitely 
something odd about the utf8 handling. Will dig further.

cheers

andrew