PostgreSQL 7.4.30 Documentation
Prev | Fast Backward | Chapter 39. PL/Perl - Perl Procedural Language | Fast Forward | Next

# 39.5. Missing Features

The following features are currently missing from PL/Perl, but they would make welcome contributions.

- PL/Perl functions cannot call each other directly (because they are anonymous subroutines inside Perl). There's presently no way for them to share global variables, either.

- PL/Perl cannot be used to write trigger functions.

- DBD::PgSPI or similar capability should be integrated into the standard PostgreSQL distribution.

For security reasons, PL/Perl executes functions called by any one SQL role in a separate Perl interpreter for that role. This prevents accidental or malicious interference by one user with the behavior of another user's PL/Perl functions. Each such interpreter has its own value of the `%_SHARED` variable and other global state. Thus, two PL/Perl functions will share the same value of `%_SHARED` if and only if they are executed by the same SQL role. In an application wherein a single session executes code under multiple SQL roles (via `SECURITY DEFINER` functions, use of `SET ROLE`, etc) you may need to take explicit steps to ensure that PL/Perl functions can share data via `%_SHARED`. To do that, make sure that functions that should communicate are owned by the same user, and mark them `SECURITY DEFINER`. You must of course take care that such functions can't be used to do anything unintended.

Prev | Home | Next
Trusted and Untrusted PL/Perl | Up | PL/Python - Python Procedural Language