> I inserted perl reference support - hstore_plperl and json_plperl does it. > > +<->/* Dereference references recursively. */ > +<->while (SvROK(in)) > +<-><-->in = SvRV(in);
That code in hstore_plperl and json_plperl is only relevant because they deal with non-scalar values (hashes for hstore, and also arrays for json) which must be passed as references. The recursive nature of the dereferencing is questionable, and masked the bug fixed by commit 1731e3741cbbf8e0b4481665d7d523bc55117f63.
bytea_plperl only deals with scalars (specifically strings), so should not concern itself with references. In fact, this code breaks returning objects with overloaded stringification, for example:
CREATE FUNCTION plperlu_overload() RETURNS bytea LANGUAGE plperlu TRANSFORM FOR TYPE bytea AS $$ package StringOverload { use overload '""' => sub { "stuff" }; } return bless {}, "StringOverload"; $$;
This makes the server crash with an assertion failure from Perl because SvPVbyte() was passed a non-scalar value: