Render functions in the MiniJinja DuckDB extension
Function category
Render
2 functionsRender Jinja2-compatible templates with JSON context. Supports variable substitution, filters, conditionals, for/while loops, and HTML autoescaping. The single-function surface — pass template + context, get rendered text.
Signature
minijinja_render(template: VARCHAR, varargs: ANY) → VARCHAR
Arguments (Positional)
| Argument | Type | Mode | Description |
|---|---|---|---|
Argument
template
|
Type
VARCHAR
|
Mode Positional | Description |
Argument
varargs
|
Type
ANY
|
Mode Positional | Description Varargs |
Description
Render a MiniJinja template without a JSON context. For context values, particularly columns or json_object built from columns, use minijinja_render_with_context. Optional named arguments must be constant expressions.
1
Render without context
SELECT minijinja_render('Hello World!');
Signature
minijinja_render_with_context(
template: VARCHAR,
context: JSON,
varargs: ANY
) → VARCHAR
Arguments (Positional)
| Argument | Type | Mode | Description |
|---|---|---|---|
Argument
template
|
Type
VARCHAR
|
Mode Positional | Description |
Argument
context
|
Type
JSON
|
Mode Positional | Description |
Argument
varargs
|
Type
ANY
|
Mode Positional | Description Varargs |
Description
Render a MiniJinja template with a JSON context, including contexts built from columns with json_object. Supports variables, filters, conditionals, for loops and autoescaping. Optional named arguments such as autoescape must be constant expressions.
1
Basic substitution
SELECT minijinja_render_with_context('{{ foo }}', '{"foo":"bar"}');
2
Nested fields
SELECT minijinja_render_with_context('Hello {{ user.name }}, {{ user.messages }} new', '{"user":{"name":"Alice","messages":5}}');
3
For loop with comma separator
SELECT minijinja_render_with_context('{% for x in xs %}{{ x }}{% if not loop.last %}, {% endif %}{% endfor %}', '{"xs":["A","B","C"]}');
4
Disable autoescape for raw text
SELECT minijinja_render_with_context('{{ v }}', '{"v":"B&O"}', autoescape := false);