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
(“goo.gl/QvohfE
”):
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);
base36_encode
---------------
o6h
(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();
plcows_vaca
----------------------------
((----)) +
((oooo)) +
///-----\\\/// +
///||| ||| +
*** ||||||---||| +
^^^^^^ ^^^ +
where milkshakes come from
(1 row)
Documentation
PL/Swift documentation can be found here: pl-swift.github.io/docs/.
A small tutorial can be found over here: PL/Swift - PostgreSQL Functions in Swift.