DESCRIPTION

This module allows PL/Perl functions inside PostgreSQL database to be profiled with Devel::NYTProf.

LIMITATIONS

PL/Perl Function Names Are Missing

The names of functions defined using CREATE FUNCTION don't show up in NYTProf because they're compiled as anonymous subs using a string eval. There's no easy way to determine the PL/Perl function name because it's only known to the postgres internals.

(There might be a way using DynaLoader::dl_find_symbol(0, "error_context_stack") but I've not had time to dig sufficiently deeply into that yet.)

Explicit call to finish_profile needed

Postgres <= 8.4 doesn't execute END blocks when it shuts down, so NYTProf doesn't get a chance to terminate the profile cleanly. To get a usable profile you need to explicitly call finish_profile() in your plperl code.

I've submitted a bug report asking for END blocks to be run at shutdown: http://archives.postgresql.org/pgsql-bugs/2009-09/threads.php#00289 and I'm working on a patch to fix that and make other improvements to plperl.

Can't use plperl and plperlu at the same time

Postgres uses separate Perl interpreters for the plperl and plperlu languages. NYTProf is not multiplicity safe so if you call functions implemented in the plperl and plperlu languages in the same session, while using NYTProf, you're likely to get garbage or worse.

SEE ALSO

AUTHOR

COPYRIGHT AND LICENSE

Copyright (C) 2009 by Tim Bunce.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.

Module Install Instructions

To install Devel::NYTProf::PgPLPerl, simply copy and paste either of the commands in to your terminal