For the complete documentation index, see llms.txt. This page is also available as Markdown.

Firebolt

Connect & Ingest data from / to a Firebolt database

Firebolt is a high-performance analytical database. Sling connects directly to the HTTP query endpoint of a self-hosted Firebolt Core engine, so the Firebolt SDK is not required.

Setup

The following credentials keys are accepted:

  • host (required) -> The hostname / ip of the engine

  • port (optional) -> The port of the instance. Default is 3473.

  • database (optional) -> The database to run queries against. Default is firebolt.

  • schema (optional) -> The default schema Sling uses to resolve unqualified table names. Default is public.

  • secure (optional) -> whether to use HTTPS / TLS (true / false). Default is false.

  • skip_verify (optional) -> skip TLS certificate verification, for self-signed certificates (true / false). Default is false.

  • user (optional) -> Accepted for URL compatibility (alias: username). Firebolt Core does not authenticate, so it is not sent.

  • password (optional) -> Accepted for URL compatibility. Not sent.

Sling supports self-hosted Firebolt Core, which is unauthenticated: statements are posted to http://<host>:3473 and results are streamed back. Managed Firebolt (Cloud) uses OAuth token exchange plus engine discovery, which this connection does not implement.

schema is applied by Sling when resolving unqualified table names, e.g. mytable becomes public.mytable. Firebolt Core has no session-level schema setting, so qualify names yourself inside raw sql streams.

Using sling conns

Here are examples of setting a connection named FIREBOLT. We must provide the type=firebolt property:

$ sling conns set FIREBOLT type=firebolt host=<host> port=3473 database=firebolt

# With TLS (and a self-signed certificate)
$ sling conns set FIREBOLT type=firebolt host=<host> port=3473 database=firebolt \
    secure=true skip_verify=true

# OR use url
$ sling conns set FIREBOLT url="firebolt://:@host.ip:3473/firebolt?secure=false&skip_verify=false"

Environment Variable

See here to learn more about the .env.sling file.

Sling Env File YAML

See here to learn more about the sling env.yaml file.

Examples

Notes

  • No plain indexes — Firebolt's secondary indexes are specialized (FULL_TEXT, INVERTED_INDEX, HNSW, SKIP_INDEX) and are not declared through Sling's index: option. Use pre_sql / post_sql to create them.

  • Merge strategies — insert, update, update_insert (the default) and delete_insert are all supported, backed by MERGE INTO / INSERT ... SELECT.

  • Transactions — each load runs inside a Firebolt transaction, so a failed load does not leave a partially written table.

  • Text columns — Firebolt text is unbounded, so no length is enforced on writes; string columns are created as text.

  • Views — Firebolt views can be read as streams.

  • Loads are staged — a full-refresh load creates a <table>_tmp table, fills it, and only then moves the rows into the final object, so readers never see a half-loaded table.

If you are facing issues connecting, give sling assist a try, or reach out to us at support@slingdata.io, on discord or open a Github Issue here.

Last updated

Was this helpful?