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.