SELECT perl_zerob();
ERROR: invalid byte sequence for encoding "UTF8": 0x00
CONTEXT: PL/Perl function "perl_zerob"
-CREATE OR REPLACE FUNCTION perl_0x80_in(text) RETURNS BOOL AS $$
- return ($_[0] eq "abc\x80de" ? "true" : "false");
-$$ LANGUAGE plperl;
-SELECT perl_0x80_in(E'abc\x80de');
-ERROR: invalid byte sequence for encoding "UTF8": 0x80
-CREATE OR REPLACE FUNCTION perl_0x80_out() RETURNS TEXT AS $$
- return "abc\x80de";
-$$ LANGUAGE plperl;
-SELECT perl_0x80_out() = E'abc\x80de';
-ERROR: invalid byte sequence for encoding "UTF8": 0x80
-CREATE OR REPLACE FUNCTION perl_utf_inout(text) RETURNS TEXT AS $$
- $str = $_[0]; $code = "NotUTF8:"; $match = "ab\xe5\xb1\xb1cd";
- if (utf8::is_utf8($str)) {
- $code = "UTF8:"; utf8::decode($str); $match="ab\x{5c71}cd";
- }
- return ($str ne $match ? $code."DIFFER" : $code."ab\x{5ddd}cd");
-$$ LANGUAGE plperl;
-SELECT encode(perl_utf_inout(E'ab\xe5\xb1\xb1cd')::bytea, 'escape')
- encode
------------------------
- UTF8:ab\345\267\235cd
-(1 row)
-
SELECT perl_zerob();
ERROR: invalid byte sequence for encoding "SQL_ASCII": 0x00
CONTEXT: PL/Perl function "perl_zerob"
-CREATE OR REPLACE FUNCTION perl_0x80_in(text) RETURNS BOOL AS $$
- return ($_[0] eq "abc\x80de" ? "true" : "false");
-$$ LANGUAGE plperl;
-SELECT perl_0x80_in(E'abc\x80de');
- perl_0x80_in
---------------
- t
-(1 row)
-
-CREATE OR REPLACE FUNCTION perl_0x80_out() RETURNS TEXT AS $$
- return "abc\x80de";
-$$ LANGUAGE plperl;
-SELECT perl_0x80_out() = E'abc\x80de';
- ?column?
-----------
- t
-(1 row)
-
-CREATE OR REPLACE FUNCTION perl_utf_inout(text) RETURNS TEXT AS $$
- $str = $_[0]; $code = "NotUTF8:"; $match = "ab\xe5\xb1\xb1cd";
- if (utf8::is_utf8($str)) {
- $code = "UTF8:"; utf8::decode($str); $match="ab\x{5c71}cd";
- }
- return ($str ne $match ? $code."DIFFER" : $code."ab\x{5ddd}cd");
-$$ LANGUAGE plperl;
-SELECT encode(perl_utf_inout(E'ab\xe5\xb1\xb1cd')::bytea, 'escape')
- encode
---------------------------
- NotUTF8:ab\345\267\235cd
-(1 row)
-
return "abcd\0efg";
$$ LANGUAGE plperl;
SELECT perl_zerob();
-CREATE OR REPLACE FUNCTION perl_0x80_in(text) RETURNS BOOL AS $$
- return ($_[0] eq "abc\x80de" ? "true" : "false");
-$$ LANGUAGE plperl;
-SELECT perl_0x80_in(E'abc\x80de');
-CREATE OR REPLACE FUNCTION perl_0x80_out() RETURNS TEXT AS $$
- return "abc\x80de";
-$$ LANGUAGE plperl;
-SELECT perl_0x80_out() = E'abc\x80de';
-CREATE OR REPLACE FUNCTION perl_utf_inout(text) RETURNS TEXT AS $$
- $str = $_[0]; $code = "NotUTF8:"; $match = "ab\xe5\xb1\xb1cd";
- if (utf8::is_utf8($str)) {
- $code = "UTF8:"; utf8::decode($str); $match="ab\x{5c71}cd";
- }
- return ($str ne $match ? $code."DIFFER" : $code."ab\x{5ddd}cd");
-$$ LANGUAGE plperl;
-SELECT encode(perl_utf_inout(E'ab\xe5\xb1\xb1cd')::bytea, 'escape')