script here, whatever engine you asked for. SQL only reaches Polars when you request it explicitly.
Modes
SQL query
Run a Polars SQL expression against one or more registered lake tables. This is the fastest way to explore data without writing Python.

Python script
Write a Python script using the Polars DataFrame API. oleander injects the runtime, auth, and catalog - your script only needs to assignresult.
The following are available in scope without any imports:
Organization environment variables are available through
os.environ.
Your script must assign its output to result - a Polars LazyFrame or DataFrame. oleander handles .collect() and distributed dispatch; do not call them in your script.
If your script builds a table name at runtime, such as scan(params["table"]), also declare it in tables so the query router can size the sandbox.
Runtime
Sandboxes run Polars 2.1. In Polars SQL, a decimal literal such as1.1 is a Decimal rather than a Float64. When a run writes to an existing table, columns are cast to the table’s types.
Polars SQL does not support INSERT, UPDATE, or some window frames. On engine: auto, the query router sends those queries to another engine.
Distributed execution
Distributed mode runs your workload across multiple workers instead of a single sandbox, for datasets that exceed sandbox memory. A distributed run always writes to a destination table and requires the Pro++ plan.
Distributed runs are billed as distributed compute from cluster startup until the run finishes. See pricing.
Saving results
Results can be written back to a table in your Iceberg catalog. Chooseoverwrite to replace the table or append to add rows to an existing one.
Lineage
Every Polars run, SQL or script, captures lineage, including column lineage, through openlineage-polars. Inputs are the tables the run read and the output is the table it wrote, in the same graph as the other engines.CLI & API
Polars workloads can also be triggered programmatically:- CLI:
oleander polars - API:
POST /api/v1/warehouse/polars