Skip to content

PL-Swift/PLSwift

Repository files navigation

PL/Swift

PostgreSQL Swift3 Swift4 Swift5 macOS tuxOS

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

Bringing Swift to the Backend of the Backend's Backend

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

PL/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 swift-pl tool, 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 CREATE FUNCTION)
  • 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

for example:

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: "git@github.com:PL-Swift/PLSwift.git", from: "0.5.0"),
  ]
)

Note: If you are using Swift older than 4.2, you need to use the swift3 branch (0.3.0 version tag).

Building a PL/Swift module

Simply invoke

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.

Status

Consider this a demo. Though it should work just fine.

Plans:

  • 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.

Links

Who

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.


ApacheExpress

mod_swift

ZeeQL
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy