Why untrusted?
PostgreSQL's ability to use an untrusted language is a powerful way to perform some non-traditional things from database functions. Creating these functions in a PL is a task of smaller magnitude than writing an extension function in C. For example, a function to look up a hostname for an IP address is only a few lines in PL/PythonU:
CREATE LANGUAGE plpythonu; CREATE FUNCTION gethostbyname(hostname text) RETURNS inet AS $$ import socket return socket.gethostbyname(hostname) $$ LANGUAGE plpythonu SECURITY DEFINER;
You can test it immediately after creating the function by using psql
:
hannu=# SELECT gethostbyname('www.postgresql.org'); gethostbyname ---------------- 98.129.198.126 (1 row)
Creating the same function in the most untrusted ...
Get PostgreSQL Server Programming - Second Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.