Skip to main content

dbt-frostlake

A dbt adapter for Frostlake, so a dbt project runs locally with zero warehouse cost.

It is a standalone adapter: built directly on dbt-adapters, with its own macros and dialect rules. No other adapter is installed or imported. The transport is frostlake-connector over frostlake, which speak Frostlake's HTTP protocol.

Install

pip install dbt-frostlake

That brings dbt-core, frostlake-connector and frostlake with it. No JVM is needed on the client.

Profile

my_project:
  target: dev
  outputs:
    dev:
      type: frostlake
      host: localhost      # Frostlake HTTP server
      port: 18082
      database: demo_db
      schema: public
      threads: 1

account, user and password are optional: they are accepted so a profile carried over from another warehouse still loads, and ignored — the server has no login.

Start a server for it

The engine is published to Maven Central, so no build is required:

mvn dependency:get -Dartifact=dev.frostlake:frostlake-db:0.2.0
java -cp "<frostlake-db jar>:<its runtime deps>" dev.frostlake.http.DatabaseHttpServer 18082

Requires JDK 17 and a Frostlake engine 0.2.0 or newer. Create the target database once it is up:

CREATE DATABASE IF NOT EXISTS demo_db;

Smoke-tested surface

Against a booted DatabaseHttpServer: dbt debug, dbt seed (typed CSV loads incl. DECIMAL), dbt run (view + table materializations), dbt test (unique, not_null), dbt build, dbt snapshot (check strategy, repeat runs), incremental models (first and subsequent runs), and dbt docs generate (information_schema catalog) — all green.

Dialect notes

Frostlake resolves unquoted identifiers uppercase, so the adapter turns dbt's default quoting off, and seed columns are unquoted unless a project sets quote_columns.

Two engine limitations are worked around in the macros: ALTER VIEW … RENAME TO rejects a qualified target (tables accept one), and CASCADE is accepted on DROP SCHEMA but not on DROP TABLE/DROP VIEW.

A runnable example project lives in frostlake-dbt-demo, a sibling repository: two seeds, two staging views, a table model and five data tests.

Tests

export JAVA_HOME=/path/to/jdk17
export FROSTLAKE_CLASSPATH="/path/to/frostlake-db.jar:<engine deps>"
python3 test/test_adapter.py

Covers the plugin wiring dbt reads on load (adapter and credentials classes, the empty plugin dependency list, the shipped include path), the credential surface and its unique_field connection key, and open() against a live server — handle usability, database/schema context, query tags, and reuse of an already-open connection. The plugin and credential tests need no server; the connection tests skip without FROSTLAKE_CLASSPATH.

Set FL_CORPUS to the engine's testkit directory (an absolute path) and the same run also replays the engine's language-neutral SQL corpus through the adapter's open() (testkit_runner.py); without it, that test skips:

FL_CORPUS=/path/to/frostlake/engine/src/test/resources/testkit python3 test/test_adapter.py

Still to do

Grind dbt's standard acceptance suite (dbt-tests-adapter) green; every failure is either a facade gap or a Frostlake SQL gap worth fixing.

Metadata

Release files for dbt-frostlake 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dbt-frostlake 0.3.0
File Size Uploaded
dbt_frostlake-0.3.0.tar.gz 20.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dbt-frostlake 0.3.0
File Interpreter ABI Platform
dbt_frostlake-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 36.0 kB

Release files / dbt_frostlake-0.3.0.tar.gz

Download URL dbt_frostlake-0.3.0.tar.gz
Size 20.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8e220f8b2ac9da73101a9ce4559b66cb8878f0f0f23adcaa7385b97ce295c104
BLAKE2b-256 checksum
How to use checksums
4c4763f04936f2bb2cd77f4c86574ebc19ec1336c4f4091d86105b6c0bb55d3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / dbt_frostlake-0.3.0-py3-none-any.whl

Download URL dbt_frostlake-0.3.0-py3-none-any.whl
Size 15.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8a55be1630f9bd10b0560bee4b3829fb7bd3cc68ca8feab8854de35f17c5287a
BLAKE2b-256 checksum
How to use checksums
47beee726cd96defccfbac01b8c31a7b745104907c93a23e28ce8f82b869fd17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page