PostgreSQL's ability to use an untrusted language is a powerful way to perform some nontraditional things from database functions. Creating these functions in a PL is an order of magnitude smaller task 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 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
hannu=# select gethostbyname('www.postgresql.org'); gethostbyname ---------------- 184.108.40.206 (1 row)
Creating the same function in the most untrusted language, C, involves ...