CREATE OR REPLACE FUNCTION md6_add(text) returns text language plperl as $$ use Digest::MD6; # document dependency explicitly my $md6 = $_SHARED{md6} ||= Digest::MD6->new; $md6->add(@_); return 1; $$; CREATE OR REPLACE FUNCTION md6_hex() returns text language plperl as $$ my $md6 = $_SHARED{md6} or die "md6_add has not been called"; return $md6->hexdigest; $$; SELECT count(md6_add(v::text)) from generate_series(1,100000) v; SELECT md6_hex(); DO 'DB::enable_profile()' language plperl; CREATE OR REPLACE FUNCTION call_via_spi() returns void language plperl as $$ $sql = "select count(md6_add(v::text)) from generate_series(1,100000) v"; spi_exec_query($sql); $$; SELECT call_via_spi();