bool_plperl
是一个提供布尔 转换 的 contrib 模块,用于 PL/Perl
。
bool_plperl
在 PostgreSQL 14 中引入。
模式
bool_plperl
将安装到当前模式,或使用 CREATE EXTENSION ... SCHEMA ...
指定的模式中。
更改历史记录
- PostgreSQL 14
- 添加 (提交 36058a3c)
示例
使用示例
postgres=# CREATE EXTENSION bool_plperl CASCADE; NOTICE: installing required extension "plperl" CREATE EXTENSION postgres=# CREATE FUNCTION hello_bool(bool) RETURNS TEXT TRANSFORM FOR TYPE bool LANGUAGE plperl AS $$ my $with_world = shift; elog(INFO, "with_world: '$with_world'");
return sprintf('hello%s', $with_world ? ' world' : ''); $$; CREATE FUNCTION postgres=# SELECT hello_bool(true), hello_bool(false);
INFO: with_world: '1'
INFO: with_world: '' hello_bool | hello_bool -------------+------------ hello world | hello (1 row)
不使用转换的等效函数会导致 FALSE 值作为文字 'f' 传递,除非函数明确转换,否则它不会以正常方式解释为布尔值。
postgres=# CREATE OR REPLACE FUNCTION hello_nobool(bool) RETURNS TEXT LANGUAGE plperl AS $$ my $with_world = shift; elog(INFO, "with_world: '$with_world'"); return sprintf('hello%s', $with_world ? ' world' : ''); $$; CREATE FUNCTION postgres=# SELECT hello_nobool(true), hello_nobool(false); INFO: with_world: 't' INFO: with_world: 'f' hello_nobool | hello_nobool --------------+-------------- hello world | hello world (1 row)
参考文献
- PostgreSQL 文档: PL/Perl 函数和参数