PL Matrix
From PostgreSQL Wiki
This page is an attempt to document all the available Procedural Language Handlers for PostgreSQL. WARNING: The information presented here is still very much experimental and guaranteed to be out-of-date ...
| Language | Status | Availability | Named Parameters? | OUT Parameters? | Notes |
|---|---|---|---|---|---|
| pl/pgsql | Production | in core | yes | yes | compiled by default |
| pl/sql | Production | in core | no | yes | available by default |
| pl/perl | Production | in core | no | no | trusted and untrusted flavors |
| pl/python | Production | in core | yes | supported in HEAD, but only for one OUT parameter | only an untrusted flavor available |
| pl/tcl | Production | in core | no | no | trusted and untrusted flavors |
| PL/sh | Production | PL/sh | no (not useful) | no | necessarily untrusted |
| pl/R | Production | pl/R | ? | ? | license incompatibility with R |
| pl/java | Production | pl/java | yes | yes | |
| pl/js | ? | pl/js | ? | ? | |
| pl/lolcode | ? | pl/lolcode | ? | ? | |
| pl/scheme | Production | pl/scheme | yes | yes | trusted and untrusted flavors |
| pl/php | ? | pl/php | ? | ? | |
| pl/ruby | ? | pl/ruby | ? | ? | |
| pl/j | ? | pl/j | ? | ? | |
| pl/lua | Alpha | pl/lua | yes | ? | trusted and untrusted flavors |
| pl/pgpsm | Beta | pl/pgpsm | yes | yes | SQL/PSM implementation based on pl/pgsql runtime |
Note: For all languages, it is allowed to place parameter names in the function parameter list declaration. What the Named Parameters column is about is whether the body of the function can refer to the parameters by those names, or whether it has to use some other notation, such as $1, $2, etc.
Note: All languages support parameters that are explicitly marked as IN parameters. Those that support OUT parameters also automatically handle INOUT parameters.
