Custom WASM user-defined functions
Seafowl uses Wasmtime and msgpack to support creating user-defined functions (UDFs). You can write a function in any language that can produce WASM bytecode and use it to extend Seafowl as long as it complies with Seafowl's UDF protocol.
Rust example UDF repository
We provide a Rust example UDF
which implements a very simple user-defined function, add_i64()
. By forking
the repository, this code can be used as a starting point to create more complex
UDFs.
Any data type supported by Seafowl may be used for the function's input or return values. The example repository contains code for decoding and -where necessary- encoding Seafowl data types.
The WASM UDF protocol
Seafowl doesn't care which language WASM UDFs are written in, as long as:
- The compiled wasm module exports an
alloc()
function for allocating WASM linear memory by Seafowl. - The compiled wasm module exports a
dealloc()
function for freeing previously allocated linear memory. - The WASM export implementing the UDF's functionality expects to receive and returns pointers to msgpack-serialized data. Input must be an array of values, output a msgpack-encoded Seafowl data type.
Creating the function in Seafowl
Once the WASM bytecode is ready, you can now create the UDF in Seafowl by
encoding it as Base64 and using the CREATE FUNCTION
statement. There's no need
to do it by hand, as the example UDF repository's
create_udf.sh
automates the process once the file has been edited to contain the correct
parameters.
The SQL for registering the example UDF is:
CREATE FUNCTION add_i64 AS '
{
"entrypoint": "add_i64",
"language": "wasmMessagePack",
"input_types": ["BIGINT", "BIGINT"],
"return_type": "BIGINT",
"data": "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AEG8mwJJBEAgACgCACICBEAgAhAqCyAAQQRqIQAMAQsLIwYoAgRBfHEhAANAIAAjB0cEQCABIAAoAgRBA3FHBEAgACAAKAIEQXxxIAFyNgIEIABBFGoQGgsgACgCBEF8cSEADAELCyMJIQAjByQJIAAkByABJAggACgCBEF8cSQGQQIkAwsjBA8LIwYiACMHRwRAIAAoAgQiAUF8cSQGIwhFIAFBA3FHBEAACyAAQbybAkkEQCAAQQA2AgQgAEEANgIIBSMBIAAoAgBBfHFBBGprJAEgAEEEahAHC0EKDwsjByIAIAA2AgQgACAANgIIQQAkAwtBAAu8AQECfyABQYACSQR/IAFBBHYFQR8gAUEBQRsgAWdrdGpBAWsgASABQf7///8BSRsiAWdrIgNBB2shAiABIANBBGt2QRBzCyIBQRBJIAJBF0lxRQRAAAsgACACQQJ0aigCBEF/IAF0cSIBBH8gACABaCACQQR0akECdGooAmAFIAAoAgBBfyACQQFqdHEiAQR/IAAgAWgiAUECdGooAgQiAkUEQAALIAAgAmggAUEEdGpBAnRqKAJgBUEACwsLrQIBA38gAUH8////A0sEQAALIABBDCABQRNqQXBxQQRrIAFBDE0bIgMQCSIBRQRAPwAiAUEEIAAoAqAMIAFBEHRBBGtHdCADQQFBGyADZ2t0QQFraiADIANB/v///wFJG2pB//8DakGAgHxxQRB2IgIgASACShtAAEEASARAIAJAAEEASARAAAsLIAAgAUEQdD8AQRB0EAUgACADEAkiAUUEQAALCyADIAEoAgBBfHFLBEAACyAAIAEQAyABKAIAIQQgA0EEakEPcQRAAAsgBEF8cSADayICQRBPBEAgASADIARBAnFyNgIAIAFBBGogA2oiAyACQQRrQQFyNgIAIAAgAxAEBSABIARBfnE2AgAgAUEEaiABKAIAQXxxaiIAIAAoAgBBfXE2AgALIAELzwEBAn8gAEHs////A08EQAALIwEjAk8EQAJAQYAQIQIDQCACEAhrIQIjA0UEQCMBrULIAX5C5ACAp0GACGokAgwCCyACQQBKDQALIwEiAiMCa0GACElBCnQgAmokAgsLIwpFBEAQBgsjCiAAQRBqEAoiAiABNgIMIAIgADYCECMJIgEoAgghAyACIAEjCHI2AgQgAiADNgIIIAMgAiAD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MgAzADIANAAyADUAMgA2ADIANwAyADgAMgA5ADMAMAAzADEAMwAyADMAMwAzADQAMwA1ADMANgAzADcAMwA4ADMAOQA0ADAANAAxADQAMgA0ADMANAA0ADQANQA0ADYANAA3ADQAOAA0ADkANQAwADUAMQA1ADIANQAzADUANAA1ADUANQA2ADUANwA1ADgANQA5ADYAMAA2ADEANgAyADYAMwA2ADQANgA1ADYANgA2ADcANgA4ADYAOQA3ADAANwAxADcAMgA3ADMANwA0ADcANQA3ADYANwA3ADcAOAA3ADkAOAAwADgAMQA4ADIAOAAzADgANAA4ADUAOAA2ADgANwA4ADgAOAA5ADkAMAA5ADEAOQAyADkAMwA5ADQAOQA1ADkANgA5ADcAOQA4ADkAOQBB3A8LAhwEAEHoDwuHCAEAAAAABAAAMAAwADAAMQAwADIAMAAzADAANAAwADUAMAA2ADAANwAwADgAMAA5ADAAYQAwAGIAMABjADAAZAAwAGUAMABmADEAMAAxADEAMQAyADEAMwAxADQAMQA1ADEANgAxADcAMQA4ADEAOQAxAGEAMQBiADEAYwAxAGQAMQBlADEAZgAyADAAMgAxADIAMgAyADMAMgA0ADIANQAyADYAMgA3ADIAOAAyADkAMgBhADIAYgAyAGMAMgBkADIAZQAyAGYAMwAwADMAMQAzADIAMwAzADMANAAzADUAMwA2ADMANwAzADgAMwA5ADMAYQAzAGIAMwBjADMAZAAzAGUAMwBmADQAMAA0ADEANAAyADQAMwA0ADQANAA1ADQANgA0ADcANAA4ADQAOQA0AGEANABiADQAYwA0AGQANABlADQAZgA1ADAANQAxADUAMgA1ADMANQA0ADUANQA1ADYANQA3ADUAOAA1ADkANQBhADUAYgA1AGMANQBkADUAZQA1AGYANgAwADYAMQA2ADIANgAzADYANAA2ADUANgA2ADYANwA2ADgANgA5ADYAYQA2AGIANgBjADYAZAA2AGUANgBmADcAMAA3ADEANwAyADcAMwA3ADQANwA1ADcANgA3ADcANwA4ADcAOQA3AGEANwBiADcAYwA3AGQANwBlADcAZgA4ADAAOAAxADgAMgA4ADMAOAA0ADgANQA4ADYAOAA3ADgAOAA4ADkAOABhADgAYgA4AGMAOABkADgAZQA4AGYAOQAwADkAMQA5ADIAOQAzADkANAA5ADUAOQA2ADkANwA5ADgAOQA5ADkAYQA5AGIAOQBjADkAZAA5AGUAOQBmAGEAMABhADEAYQAyAGEAMwBhADQAYQA1AGEANgBhADcAYQA4AGEAOQBhAGEAYQBiAGEAYwBhAGQAYQBlAGEAZgBiADAAYgAxAGIAMgBiADMAYgA0AGIANQBiADYAYgA3AGIAOABiADkAYgBhAGIAYgBiAGMAYgBkAGIAZQBiAGYAYwAwAGMAMQBjADIAYwAzAGMANABjADUAYwA2AGMANwBjADgAYwA5AGMAYQBjAGIAYwBjAGMAZABjAGUAYwBmAGQAMABkADEAZAAyAGQAMwBkADQAZAA1AGQANgBkADcAZAA4AGQAOQBkAGEAZABiAGQAYwBkAGQAZABlAGQAZgBlADAAZQAxAGUAMgBlADMAZQA0AGUANQBlADYAZQA3AGUAOABlADkAZQBhAGUAYgBlAGMAZQBkAGUAZQBlAGYAZgAwAGYAMQBmADIAZgAzAGYANABmADUAZgA2AGYANwBmADgAZgA5AGYAYQBmAGIAZgBjAGYAZABmAGUAZgBmAEH8FwsBXABBiBgLTwEAAABIAAAAMAAxADIAMwA0ADUANgA3ADgAOQBhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAQdwYCwEsAEHoGAsfAQAAABgAAAA7ACAAdAB5AHAAZQAgAD0AIABpADYANABBjBkLATwAQZgZCysBAAAAJAAAAGIAYQBkACAAcAByAGUAZgBpAHgAIABmAG8AcgAgAGkAbgB0AEHMGQsBHABB2BkLCRIAAAAIAAAABQBB7BkLASwAQfgZCyMBAAAAHAAAAEkAbgB2AGEAbABpAGQAIABsAGUAbgBnAHQAaABBoBoLDRMAAAAgAAAAAAAAACAAQewaCxEgAAAAAAAAAAJBAAAAAAAAIABBlBsLAgIJAEGkGwsCAgoAQbAbCwEGACQQc291cmNlTWFwcGluZ1VSTBIuL3JlbGVhc2Uud2FzbS5tYXA="
}';
Calling the function
Finally, you can call the function:
SELECT add_i64(1,2) AS result;
Dropping or replacing the function
As of August 2023, Seafowl supports standard SQL syntax for `DROP FUNCTION``:
-- Individual functions
DROP FUNCTION sintau
-- Separate >1 function with comma
DROP FUNCTION foo, bar
-- IF EXISTS support
DROP FUNCTION IF EXISTS baz
As well as REPLACE
:
CREATE OR REPLACE FUNCTION add_i64 AS '...'
Scalar-only limitation
- Only user-defined scalar functions are supported. Functions which maintain
state between invocations such as
LAG
or aggregation functions such asAVG
cannot be implemented at the present time.