PL/Swift allows you to write custom SQL functions and types for the PostgreSQL database server in the Swift programming language.

It does what? Assume you have a Swift function which turns an integer into a base36 encoded String, to replicate the trick used by URL shorteners (“”):

func base36_encode(_ v: Int) -> String {
  return String(v, radix: 36)

and now you would like to use that in a SQL query, like so:

helge=# SELECT base36_encode(31337);
(1 row)

This is what PL/Swift does. It helps you expose your Swift functions to PostgreSQL.

Does this make sense? Very likely not, it depends, as usual. But no. It doesn’t. Consider this a neat demo, not something you should do in the real world.

Another useful example?

import cows

func plcows_vaca() -> String {
  return cows.vaca() // returns a random ASCII cow
helge=# SELECT plcows_vaca();
              ((----))     +
              ((oooo))     +
       ///-----\\\///      +
     ///|||    |||         +
   *** ||||||---|||        +
       ^^^^^^    ^^^       +
 where milkshakes come from
(1 row)


PL/Swift documentation can be found here:

A small tutorial can be found over here: PL/Swift - PostgreSQL Functions in Swift.