exasol-udfslisted
Install: claude install-skill exasol-labs/exasol-agent-skills
# Exasol UDFs & Script Language Containers
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.
## Two Decisions Before Any Route
**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 |
## Routing Algorithm
Choose the narrowest matching route. Several often apply — a Python UDF that
reads a model need