The following short function illustrates a problem I'm having with the plperlu module.
CREATE OR REPLACE FUNCTION doublezero () RETURNS VOID AS $$ use Encode qw/encode decode/; $pass = "double00"; elog( INFO, "$pass" ); $mspass = encode( 'UTF-16LE', qq("$pass") ); elog( INFO, "$mspass" ); $$ LANGUAGE plperlu STRICT;
# select * from doublezero(); INFO: double00 CONTEXT: PL/Perl function "doublezero" ERROR: invalid byte sequence for encoding "UTF8": 0x00 at line 8, <DATA> line 558. CONTEXT: PL/Perl function "doublezero"
I don't understand this. I need to pass $mspass to Active Directory, and it the encoding is exactly as it should be, which is to say, it works for strings that don't include two consecutive zeros. Is this a bug?