exasol-udfs — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited exasol-udfs (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
UDFs extend SQL with custom logic that runs inside the Exasol cluster: per-row transforms, custom aggregation, ML inference against a model in BucketFS, external API calls, and DataFrame batch processing. They execute in a Script Language Container — a Docker-based runtime whose contents you can replace when the default packages are not enough.
SCALAR or SET?
| SCALAR | SET | |
|---|---|---|
| Input | One row at a time | Group of rows (via GROUP BY) |
| Output | RETURNS <type> (single value) | EMITS (col1 TYPE, ...) (zero or more rows) |
| Row iteration | Not needed | ctx.next() loop required |
| SQL usage | SELECT udf(col) FROM t | SELECT udf(col) FROM t GROUP BY key |
| Use case | Per-row transforms | Aggregation, ML batch predict, multi-row emit |
Which language?
| Language | Startup | Best For | Expandable via SLC? |
|---|---|---|---|
| Python 3 (3.10 or 3.12) | ~200ms | ML, data science, pandas, string processing | Yes |
| Java (11 or 17) | ~1s | Enterprise libs, type safety, Virtual Schema adapters | Yes |
| Lua 5.4 | <10ms | Low-latency transforms, row-level security | No (natively compiled into Exasol) |
| R (4.4) | ~200ms | Statistical modeling, R model deployment | Yes |
Choose the narrowest matching route. Several often apply — a Python UDF that reads a model needs routes 1 and 2 — so load all matching references.
CREATE SCRIPT, SCALAR, SET EMITS, RETURNS, variadic script, dynamic parameters, EMITS(...), default_output_columns, %scriptclass, %jar, R UDF, Lua UDFreferences/create-script-syntax.mdPython UDF, ctx.emit, ctx.next, get_dataframe, pandas, pickle, load model, udf-mock-python, dynamic import, memory limitreferences/udf-python.mdExaIterator, ExaMetadata, JARs, JVM options, adapters, Lua librariesJava UDF, ExaIterator, ExaMetadata, getString, %jar, JVM options, script imports, ADAPTER script, remote debugging, Lua contextreferences/udf-java-lua.mdSLC, Script Language Container, exaslct, exaslpm, packages.yml, custom packages, flavor, conda, CUDA, GPU UDF, SCRIPT_LANGUAGES, ALTER SESSION, ALTER SYSTEM, security-scanreferences/slc-reference.mdexecute script, Lua execute, pquery, in-database orchestration, iterative algorithm, multi-step SQL workflowreferences/lua-execute-scripts.mdRoute 5 is a genuine fork, not a variant of the others: use a Lua execute script rather than a UDF when the task is to orchestrate multi-step or iterative SQL workflows from within the database.
references/slc-reference.md.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.