Обсуждение: Re: [COMMITTERS] pgsql: Force strings passed to and from plperl to be in UTF8 encoding.

Поиск
Список
Период
Сортировка

Re: [COMMITTERS] pgsql: Force strings passed to and from plperl to be in UTF8 encoding.

От
Andrew Dunstan
Дата:




On 02/06/2011 05:31 PM, Andrew Dunstan wrote:
> Force strings passed to and from plperl to be in UTF8 encoding.
>
> String are converted to UTF8 on the way into perl and to the
> database encoding on the way back. This avoids a number of
> observed anomalies, and ensures Perl a consistent view of the
> world.
>
> Some minor code cleanups are also accomplished.
>
> Alex Hunsaker, reviewed by Andy Colson.


This has broken the buildfarm :-(

perl ppport.h reports:
   *** WARNING: Uses HeUTF8, which may not be portable below perl   5.11.0, even with 'ppport.h'


Experimentation on a CentOS machine suggests we can cure it with this:
   #ifndef HeUTF8   #define HeUTF8(he)             ((HeKLEN(he) == HEf_SVKEY) ?            \
       SvUTF8(HeKEY_sv(he))   :                 \                                    (U32)HeKUTF8(he))   #endif
 


cheers

andrew


Re: [COMMITTERS] pgsql: Force strings passed to and from plperl to be in UTF8 encoding.

От
Alex Hunsaker
Дата:
On Sun, Feb 6, 2011 at 18:02, Andrew Dunstan <andrew@dunslane.net> wrote:
>
>
>
>
>
> On 02/06/2011 05:31 PM, Andrew Dunstan wrote:
>>
>> Force strings passed to and from plperl to be in UTF8 encoding.
>>
>> String are converted to UTF8 on the way into perl and to the
>> database encoding on the way back. This avoids a number of
>> observed anomalies, and ensures Perl a consistent view of the
>> world.
>>
>> Some minor code cleanups are also accomplished.
>>
>> Alex Hunsaker, reviewed by Andy Colson.
>
>
> This has broken the buildfarm :-(

Drat.

> perl ppport.h reports:
>
>   *** WARNING: Uses HeUTF8, which may not be portable below perl
>   5.11.0, even with 'ppport.h'
> Experimentation on a CentOS machine suggests we can cure it with this:
>
>   #ifndef HeUTF8
>   #define HeUTF8(he)             ((HeKLEN(he) == HEf_SVKEY) ?            \
>                                    SvUTF8(HeKEY_sv(he))
>   :                 \
>                                    (U32)HeKUTF8(he))
>   #endif

Yeah, that should work. BTW I would have loved to add some regression
tests for some of this (like the example hek2cstr states). Is there
any way to do that?


Re: [COMMITTERS] pgsql: Force strings passed to and from plperl to be in UTF8 encoding.

От
Andrew Dunstan
Дата:

On 02/06/2011 09:13 PM, Alex Hunsaker wrote:
> I would have loved to add some regression
> tests for some of this (like the example hek2cstr states). Is there
> any way to do that?
>

I can't think of an obvious way. Anyone else?

cheers

ndrew