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.0.7
java -cp "<frostlake-db jar>:<its runtime deps>" dev.frostlake.http.DatabaseHttpServer 18082

Requires JDK 17 and a Frostlake engine 0.0.7 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.

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.2.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.2.0
File Size Uploaded
dbt_frostlake-0.2.0.tar.gz 20.4 kB Details

Built distribution (wheel)

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

Total release size: 35.3 kB

Release files / dbt_frostlake-0.2.0.tar.gz

Download URL dbt_frostlake-0.2.0.tar.gz
Size 20.4 kB
Tags Source
SHA-256 checksum
How to use checksums
98102c6abbe25296b20dfe4dc12a59e753ca6afa9164f0b45ce18f6036baf545
BLAKE2b-256 checksum
How to use checksums
20b2bda6557bdd4346716c95b14d933e7ab550d289b39ea2b32489e46668a3bf
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.2.0-py3-none-any.whl

Download URL dbt_frostlake-0.2.0-py3-none-any.whl
Size 15.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2bab5cf93d1b60f598ba74a1f061a2a0c42b50c94044602e614ff8d4284d839a
BLAKE2b-256 checksum
How to use checksums
18624c786200177abf6fa8905ac037c908f00de61f884db69efe0ae3b50a9206
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

0.3.0

2 release files

0.2.1

2 release files

This release

0.2.0 This release

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