aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plperl/expected/plperl_lc_1.out
blob: c454c4409ed47868afda3fc7c13c64ca4a531199 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
--
-- Make sure strings are validated
-- Should fail for all encodings, as nul bytes are never permitted.
--
CREATE OR REPLACE FUNCTION perl_zerob() RETURNS TEXT AS $$
  return "abcd\0efg";
$$ LANGUAGE plperl;
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)