Files
Baradb/docs/en/udf.md
T
dimgigov e1bae0c7a0 Add comprehensive documentation with i18n support (EN/BG)
- Add docs/ folder with English (en/) and Bulgarian (bg/) documentation
- Create index.md with language switching and links
- English docs: installation, quickstart, architecture, baraql, storage,
  schema, lsm, btree, vector, graph, fts, columnar, transactions,
  distributed, protocol, udf, api-binary, api-http, api-websocket
- Bulgarian docs: installation, quickstart, architecture, baraql,
  schema, lsm, btree, vector, graph, fts, transactions, distributed
- Update README license to BSD 3-Clause
- Add LICENSE file with BSD 3-Clause text
2026-05-06 16:51:14 +03:00

1.5 KiB

User Defined Functions

Extend BaraQL with custom functions.

Usage

import barabadb/query/udf

var reg = newUDFRegistry()

# Register standard library
reg.registerStdlib()  # abs, sqrt, pow, lower, upper, len, trim, substr, toString, toInt

# Custom function
reg.register("greet", @[UDFParam(name: "name", typeName: "str")],
  "str", proc(args: seq[Value]): Value =
    return Value(kind: vkString, strVal: "Hello, " & args[0].strVal & "!"))

Standard Library Functions

Function Description Example
abs(n) Absolute value abs(-5) → 5
sqrt(n) Square root sqrt(16) → 4
pow(n, e) Power pow(2, 3) → 8
lower(s) Lowercase lower('ABC') → 'abc'
upper(s) Uppercase upper('abc') → 'ABC'
len(s) Length len('hello') → 5
trim(s) Trim whitespace trim(' hello ') → 'hello'
substr(s, start, len) Substring substr('hello', 0, 3) → 'hel'
toString(n) Convert to string toString(123) → '123'
toInt(s) Convert to integer toInt('123') → 123

Function Registration

reg.register(
  name: "my_function",
  params: @[
    UDFParam(name: "arg1", typeName: "str"),
    UDFParam(name: "arg2", typeName: "int32")
  ],
  returnType: "str",
  body: proc(args: seq[Value]): Value =
    # Implementation
    result = Value(kind: vkString, strVal: "")
)

Using UDFs in Queries

SELECT greet(name) FROM users;