| CREATE EXTENSION bool_plperl CASCADE; |
| |
| --- test transforming from perl |
| |
| CREATE FUNCTION perl2int(int) RETURNS bool |
| LANGUAGE plperl |
| TRANSFORM FOR TYPE bool |
| AS $$ |
| return shift; |
| $$; |
| |
| CREATE FUNCTION perl2text(text) RETURNS bool |
| LANGUAGE plperl |
| TRANSFORM FOR TYPE bool |
| AS $$ |
| return shift; |
| $$; |
| |
| CREATE FUNCTION perl2undef() RETURNS bool |
| LANGUAGE plperl |
| TRANSFORM FOR TYPE bool |
| AS $$ |
| return undef; |
| $$; |
| |
| SELECT perl2int(1); |
| SELECT perl2int(0); |
| SELECT perl2text('foo'); |
| SELECT perl2text(''); |
| SELECT perl2undef() IS NULL AS p; |
| |
| --- test transforming to perl |
| |
| CREATE FUNCTION bool2perl(bool, bool, bool) RETURNS void |
| LANGUAGE plperl |
| TRANSFORM FOR TYPE bool, for type boolean -- duplicate to test ruleutils |
| AS $$ |
| my ($x, $y, $z) = @_; |
| |
| die("NULL mistransformed") if (defined($z)); |
| die("TRUE mistransformed to UNDEF") if (!defined($x)); |
| die("FALSE mistransformed to UNDEF") if (!defined($y)); |
| die("TRUE mistransformed") if (!$x); |
| die("FALSE mistransformed") if ($y); |
| $$; |
| |
| SELECT bool2perl (true, false, NULL); |
| |
| --- test ruleutils |
| |
| \sf bool2perl |
| |
| --- test selecting bool through SPI |
| |
| CREATE FUNCTION spi_test() RETURNS void |
| LANGUAGE plperl |
| TRANSFORM FOR TYPE bool |
| AS $$ |
| my $rv = spi_exec_query('SELECT true t, false f, NULL n')->{rows}->[0]; |
| |
| die("TRUE mistransformed to UNDEF in SPI") if (!defined ($rv->{t})); |
| die("FALSE mistransformed to UNDEF in SPI") if (!defined ($rv->{f})); |
| die("NULL mistransformed in SPI") if (defined ($rv->{n})); |
| die("TRUE mistransformed in SPI") if (!$rv->{t}); |
| die("FALSE mistransformed in SPI") if ($rv->{f}); |
| $$; |
| |
| SELECT spi_test(); |
| |
| DROP EXTENSION plperl CASCADE; |