PL Matrix

From PostgreSQL Wiki

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? 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.

Personal tools