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)
| File | Size | Uploaded | |
|---|---|---|---|
| dbt_frostlake-0.3.0.tar.gz | 20.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|