From 5e45211a64149b3c659b90ff2de6fa982a5a93ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 14:17:33 +0200 Subject: Adding upstream version 15.5. Signed-off-by: Daniel Baumann --- contrib/bool_plperl/sql/bool_plperlu.sql | 70 ++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 contrib/bool_plperl/sql/bool_plperlu.sql (limited to 'contrib/bool_plperl/sql/bool_plperlu.sql') diff --git a/contrib/bool_plperl/sql/bool_plperlu.sql b/contrib/bool_plperl/sql/bool_plperlu.sql new file mode 100644 index 0000000..1480a04 --- /dev/null +++ b/contrib/bool_plperl/sql/bool_plperlu.sql @@ -0,0 +1,70 @@ +CREATE EXTENSION bool_plperlu CASCADE; + +--- test transforming from perl + +CREATE FUNCTION perl2int(int) RETURNS bool +LANGUAGE plperlu +TRANSFORM FOR TYPE bool +AS $$ +return shift; +$$; + +CREATE FUNCTION perl2text(text) RETURNS bool +LANGUAGE plperlu +TRANSFORM FOR TYPE bool +AS $$ +return shift; +$$; + +CREATE FUNCTION perl2undef() RETURNS bool +LANGUAGE plperlu +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 plperlu +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 plperlu +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 plperlu CASCADE; -- cgit v1.2.3