Hello,
Here's a patch I added against plperl, originally against beta5, now against rc1. It simply checks with GetDatabaseEncoding() if the current database is in UTF-8, and if so, sets the UTF-8 flag on the arguments that are passed to perl. This means that it isn't necessary to utf8::upgrade() every string, as perl has no way of knowing offhand that a string is UTF-8 -- but postgres does, because the database encoding is specified, so it makes sense to turn the flag on. You should also be able to properly manipulate UTF-8 strings now from plperl as opposed to plperlu, because otherwise you'd have to use encoding 'utf8' which was not allowed. It could also eliminate some unexpected bugs if you assume that perl knows the string is unicode. It is enabled only for perl 5.6 and higher, so earlier versions will not be affected.
I have been assured by crab that the patch is quite harmless and will not break anything. It would be great to see it in 8 final! :-)
Regards, Dave
plperl.c.diff
Description: application/text---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster