A small tutorial can be found over here: PL/Swift - PostgreSQL Functions in Swift.
Despite the name it is not (currently) a language extension like say PL/Python, which allows you to directly embed Swift code in SQL. Instead it provides the infrastructure to create PostgreSQL dynamically loadable objects.
This project/sourcedir contains the
Xcode base configurations and module maps for the PostgreSQL server.
What is a PL/Swift Extension
A dynamically loadable PostgreSQL extension module consists of those files:
- the ext.control file, specifies the name and version of the extension
- the ext.sql file, hooks up the C function w/ PostgreSQL
(i.e. does the
- the actual ext.so shared library
Using the PL/Swift package
NOTE: This requires a PL/Swift installation. W/o it, it will fail to built CPLSwift!
If you setup a new module from scratch, use:
swift pl init
mkdir base36 && cd base36 swift pl init
Otherwise setup your Package.swift to include PLSwift:
import PackageDescription let package = Package( name: "MyTool", dependencies: [ .Package(url: "firstname.lastname@example.org:PL-Swift/PLSwift.git", from: "0.5.0"), ] )
Note: If you are using Swift older than 4.2, you need to use the
0.3.0 version tag).
Building a PL/Swift module
swift pl build
This wraps Swift Package Manager to build your package and then produces a proper module which can be loaded into PostgreSQL.
To install the module into the local PostgreSQL, call:
swift pl install
Use/load the extension
That is very simple, just do a:
CREATE EXTENSION helloswift;
If you rebuild the extension and need to reload, you probably need to
restart / reconnected
psql and do a
DROP EXTENSION xyz first.
Consider this a demo. Though it should work just fine.
- can we make it a real language module? i.e. embed Swift code in the SQL and compile it on demand? Why not, might be a bit heavy though.
- mod_swift, write Apache2 modules in Swift
- PostgreSQL Server Programming
- PostgreSQL C Language Functions
PL/Swift is brought to you by ZeeZide. We like feedback, GitHub stars, cool contract work, presumably any form of praise you can think of.