PL Matrix

From PostgreSQL wiki
Revision as of 20:03, 1 March 2020 by Dfetter (talk | contribs)
Jump to: navigation, search

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? (Un)Trusted Notes
pl/pgsql Production in core yes yes Trusted compiled by default
sql Production in core yes (version 9.2+) yes Trusted available by default
pl/perl Production in core no no Trusted and Untrusted
pl/python Production in core yes support for one OUT parameter from 8.4, multiple from 9.1 Untrusted
pl/tcl Production in core no no Trusted and Untrusted
PL/sh Production PL/sh no (not useful) no Untrusted necessarily
PL/R Production PL/R yes no Untrusted
pl/java Production pl/java yes yes ?
pl/lolcode Alpha pl/lolcode yes ? ?
pl/scheme ? pl/scheme yes yes Trusted and Untrusted
pl/php Beta pl/php Yes ? ?
pl/ruby ? pl/ruby ? ? ?
pl/lua (ng) Production pl/lua (ng) yes yes Trusted and Untrusted install with CREATE EXTENSION
pl/pgpsm Beta pl/pgpsm yes yes ? SQL/PSM implementation based on pl/pgsql runtime
pl/v8 Production pl/v8js yes yes Trusted install with CREATE EXTENSION
PL/XSLT Alpha pl/xslt yes no Untrusted install with CREATE EXTENSION
PL/Julia ? pl/julia ? ? Untrusted install with CREATE EXTENSION

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.