PL Matrix

From PostgreSQL wiki
Jump to navigationJump to search

This page provides a list of known Procedural Language handlers for PostgreSQL.


Language Handler Status Availability Named Parameters? OUT Parameters? (Un)Trusted Notes
Haskell PL/Haskell Production PL/Haskell ? ? Trusted and Untrusted
Java PL/Java Production PL/Java yes partial (no INOUT) Trusted and Untrusted, both configurable install with CREATE EXTENSION
JavaScript PL/v8 Production pl/v8js yes yes Trusted install with CREATE EXTENSION
Julia PL/Julia ? pl/julia ? ? Untrusted install with CREATE EXTENSION
LOLCODE PL/lolcode Alpha pl/lolcode yes ? ?
Lua pl/lua (ng) Production pl/lua (ng) yes yes Trusted and Untrusted install with CREATE EXTENSION
Perl PL/Perl Production in core no no Trusted and Untrusted
PHP PL/PHP Beta pl/php Yes ? ?
PL/pgSQL PL/pgSQL Production in core yes yes Trusted compiled by default
Python PL/Python Production in core yes support for one OUT parameter from 8.4, multiple from 9.1 Untrusted
R PL/R Production PL/R yes no Untrusted
Ruby PL/Ruby ? pl/ruby ? ? ?
Rust PL/Rust Production PL/Rust yes no Trusted and Untrusted install with CREATE EXTENSION
Scheme PL/scheme ? pl/scheme yes yes Trusted and Untrusted
Shell PL/sh Production PL/sh no (not useful) no Untrusted necessarily
SQL None Production in core yes (version 9.2+) yes Trusted available by default
Tcl PL/Tcl Production in core no no Trusted and Untrusted
XSLT PL/XSLT Alpha pl/xslt yes no Untrusted install with CREATE EXTENSION

Note: All languages are allowed to use parameter names in the function parameter list declaration. The Named Parameters column indicates if the body of the function can refer to the parameters by those names, or whether it has to use a notation such as $1, $2, etc.

Note: All languages support parameters that are explicitly marked as IN parameters. Unless otherwise specified, languages that support OUT parameters also support INOUT parameters.