Skip to content

Commit 2be36f4

Browse files
committed
Project import generated by Copybara.
GitOrigin-RevId: ad7e3349e907abb85fe1d035dc9503e7f2c06ff3
1 parent be367d9 commit 2be36f4

File tree

80 files changed

+914
-205
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+914
-205
lines changed

.changes/README.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# CHANGELOG Automation
2+
3+
We use [changie](https://changie.dev/) to automate `CHANGELOG` generation. For installation and format/command specifics, see the documentation.
4+
5+
### Quick Tour
6+
7+
- All new change entries get generated under `/.changes/unreleased` as a yaml file
8+
- `header.tpl.md` contains the contents of the entire CHANGELOG file
9+
- `.changie.yaml` contains the fields in a change, the format of a single change, as well as the format of the Contributors section for each version.
10+
11+
### Workflow
12+
13+
#### Daily workflow
14+
Almost every code change we make associated with an issue will require a `CHANGELOG` entry. After you have created the PR in GitHub, run `changie new` and follow the command prompts to generate a yaml file with your change details. This only needs to be done once per PR.
15+
16+
The `changie new` command will ensure correct file format and file name. There is a one to one mapping of issues to changes. Multiple issues cannot be lumped into a single entry. If you make a mistake, the yaml file may be directly modified and saved as long as the format is preserved.
17+
18+
Note: If your PR has been cleared by the team as not needing a changelog entry, the `Skip Changelog - dbt-fusion` label may be put on the PR to bypass the GitHub action that blacks PRs from being merged when they are missing a `CHANGELOG` entry.
19+
20+
#### Prerelease Workflow
21+
These commands batch up changes in `/.changes/unreleased` to be included in this prerelease and move those files to a directory named for the release version. The `--move-dir` will be created if it does not exist and is created in `/.changes`.
22+
23+
```
24+
changie batch <version> --move-dir '<version>' --prerelease 'rc1'
25+
changie merge
26+
```
27+
28+
Example
29+
```
30+
changie batch 1.0.5 --move-dir '1.0.5' --prerelease 'rc1'
31+
changie merge
32+
```
33+
34+
#### Final Release Workflow
35+
These commands batch up changes in `/.changes/unreleased` as well as `/.changes/<version>` to be included in this final release and delete all prereleases. This rolls all prereleases up into a single final release. All `yaml` files in `/unreleased` and `<version>` will be deleted at this point.
36+
37+
```
38+
changie batch <version> --include '<version>' --remove-prereleases
39+
changie merge
40+
```
41+
42+
Example
43+
```
44+
changie batch 1.0.5 --include '1.0.5' --remove-prereleases
45+
changie merge
46+
```
47+
48+
### A Note on Manual Edits & Gotchas
49+
- Changie generates markdown files in the `.changes` directory that are parsed together with the `changie merge` command. Every time `changie merge` is run, it regenerates the entire file. For this reason, any changes made directly to `CHANGELOG.md` will be overwritten on the next run of `changie merge`.
50+
- If changes need to be made to the `CHANGELOG.md`, make the changes to the relevant `<version>.md` file located in the `/.changes` directory. You will then run `changie merge` to regenerate the `CHANGELOG.MD`.
51+
- Do not run `changie batch` again on released versions. Our final release workflow deletes all of the yaml files associated with individual changes. If for some reason modifications to the `CHANGELOG.md` are required after we've generated the final release `CHANGELOG.md`, the modifications need to be done manually to the `<version>.md` file in the `/.changes` directory.
52+
- changie can modify, create and delete files depending on the command you run. This is expected. Be sure to commit everything that has been modified and deleted.

.changes/header.tpl.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# dbt Fusion Changelog
2+
All notable changes to this project will be documented in this file.
3+
4+
- This file provides a full account of all changes to `dbt-fusion`
5+
- Changes are listed under the (pre)release in which they first appear. Subsequent releases include changes from previous releases.
6+
- "Breaking changes" listed under a version may require action from end users or external maintainers when upgrading to that version.
7+
- Do not edit this file directly. This file is auto-generated using [changie](https://github.com/miniscruff/changie). For details on how to document a change, see [the contributing guide](../CONTRIBUTING.md#adding-a-changelog-entry)

.changes/unreleased/.gitkeep

Whitespace-only changes.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kind: Under the Hood
2+
body: Bump databricks driver to 0.18.0+dbt0.0.4
3+
time: 2025-05-30T11:13:15.721996-07:00

.changie.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
changesDir: .changes
2+
unreleasedDir: unreleased
3+
headerPath: header.tpl.md
4+
versionHeaderPath: ""
5+
changelogPath: CHANGELOG.md
6+
versionExt: md
7+
versionFormat: '## dbt-fusion {{.Version}} - {{.Time.Format "January 02, 2006"}}'
8+
kindFormat: "### {{.Kind}}"
9+
changeFormat: |-
10+
- {{.Body}}
11+
12+
kinds:
13+
- label: Breaking Changes
14+
- label: Features
15+
- label: Fixes
16+
- label: Under the Hood
17+
- label: Dependencies
18+
- label: Security
19+
20+
newlines:
21+
afterChangelogHeader: 1
22+
afterKind: 1
23+
afterChangelogVersion: 1
24+
beforeKind: 1
25+
endOfVersion: 1

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# dbt Fusion Changelog
2+
All notable changes to this project will be documented in this file.
3+
4+
- This file provides a full account of all changes to `dbt-fusion`
5+
- Changes are listed under the (pre)release in which they first appear. Subsequent releases include changes from previous releases.
6+
- "Breaking changes" listed under a version may require action from end users or external maintainers when upgrading to that version.
7+
- Do not edit this file directly. This file is auto-generated using [changie](https://github.com/miniscruff/changie). For details on how to document a change, see [the contributing guide](../CONTRIBUTING.md#adding-a-changelog-entry)
8+

CONTRIBUTING.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,20 @@ Code can be merged into the current development branch main by opening a pull re
3333

3434
Automated tests run via GitHub Actions. If you're a first-time contributor, all tests (including code checks and unit tests) will require a maintainer to approve. Changes in the dbt-fusion repository trigger integration tests against Postgres. dbt Labs also provides CI environments in which to test changes to other adapters, triggered by PRs in those adapters' repositories, as well as periodic maintenance checks of each adapter in concert with the latest dbt-fusion code changes.
3535

36-
Once all tests are passing and your PR has been approved, a dbt-fusion maintainer will merge your changes into the active development branch. And that's it! Happy developing 🎉
36+
Once all tests are passing and your PR has been approved, a dbt-fusion maintainer will merge your changes into the active development branch. And that's it! Happy developing 🎉
37+
38+
## Adding a CHANGELOG Entry
39+
40+
We use [changie](https://changie.dev) to generate `CHANGELOG` entries. **Note:** Do not edit the `CHANGELOG.md` directly. Your modifications will be lost.
41+
42+
Follow the steps to [install `changie`](https://changie.dev/guide/installation/) for your system.
43+
44+
Once changie is installed and your PR is created for a new feature, simply run the following command and changie will walk you through the process of creating a changelog entry:
45+
46+
```shell
47+
changie new
48+
```
49+
50+
Commit the file that's created and your changelog entry is complete!
51+
52+
You don't need to worry about which `dbt-fusion` version your change will go into. Just create the changelog entry with `changie`, and open your PR against the `main` branch. All merged changes will be included in the next release of `dbt-fusion`. If a changelog is not required, a maintainer can add the label `Skip Changelog - dbt-fusion` to bypass this requirement.

Cargo.toml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
members = [
44

55
# Source Available
6+
"crates/dbt-agate",
67
"crates/dbt-common",
78
"crates/dbt-frontend-common",
89
"crates/dbt-frontend-schemas",
@@ -35,7 +36,7 @@ homepage = "https://getdbt.com"
3536
keywords = ["sql", "parquet", "json", "csv", "dbt"]
3637
license = "<>"
3738
repository = "https://github.com/dbt-labs/dbt-fusion"
38-
version = "2.0.0-beta.5"
39+
version = "2.0.0-beta.12"
3940

4041
# We currently need a fork of apache/arrow-datafusion with a few patches.
4142
# However, note that we declare dependencies in our crates with the same version
@@ -122,6 +123,7 @@ opt-level = 3
122123

123124
# fs source available dependencies
124125
dbt-adapter-proc-macros = { path = "crates/dbt-adapter-proc-macros" }
126+
dbt-agate = { path = "crates/dbt-agate" }
125127
dbt-common = { path = "crates/dbt-common" }
126128
dbt-dag = { path = "crates/dbt-dag" }
127129
dbt-deps = { path = "crates/dbt-deps" }
@@ -342,10 +344,15 @@ anyhow = { version = "1.0.74" }
342344
# logging
343345
log = { version = "0.4.27", features = ["kv_serde"] }
344346

345-
# tracing
347+
# tracing (observability)
346348
tracing = "0.1.41"
347349
tracing-subscriber = { version = "0.3.19", features = ["env-filter", "json"] }
348350

351+
# tracing (local profiling)
352+
# Compile with --features "tracy-client/enable" to enable integration with the
353+
# Tracy profiler: https://github.com/wolfpld/tracy
354+
tracy-client = { version = "0.18.0", default-features = false }
355+
349356
[workspace.lints.rust]
350357
# When updating these lints mind that some crates may not inherit form workspace
351358
# Use only "warn" in this section. CI run will turn these into deny,

LICENSES.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# LICENSES
1+
# DESCRIPTION
22

3-
The `dbt-fusion` repository uses multiple licenses, shown below.
3+
The dbt Fusion Monorepo uses multiple licenses, shown below.
44

55
Unless otherwise specified, every folder and file in this repository is licensed under the Elastic License 2.0 (ELv2).
66

@@ -12,7 +12,7 @@ Unless otherwise specified, every folder and file in this repository is licensed
1212

1313

1414
---
15-
# Elastic License 2.0
15+
Elastic License 2.0
1616

1717
## Acceptance
1818

@@ -295,7 +295,7 @@ these terms.
295295
same "printed page" as the copyright notice for easier
296296
identification within third-party archives.
297297

298-
Copyright 2025 dbt Labs, Inc.
298+
Copyright 2019 Elastic and contributors
299299

300300
Licensed under the Apache License, Version 2.0 (the "License");
301301
you may not use this file except in compliance with the License.

README.md

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,34 @@
88

99
This repo hosts components of the dbt Fusion engine, the foundation for future innovation in `dbt`. The dbt Fusion engine is written in Rust and is designed for speed, correctness, and has a native understanding of SQL across multiple data warehouse SQL dialects.
1010

11-
> [!IMPORTANT]
11+
> [!IMPORTANT]
1212
> **Note: the dbt Fusion Engine is in Beta!**
13-
Bugs and missing functionality compared to dbt Core will be resolved continuously in the lead-up to a final release (see [this post](https://docs.getdbt.com/blog/dbt-fusion-engine-path-to-ga) for more details).
13+
Bugs and missing functionality compared to dbt Core will be resolved continuously in the leadup to a final release (see [this post](https://docs.getdbt.com/blog/fusion-path-to-ga) for more details).
1414

15-
The dbt Fusion engine is a ground-up, first principles rewrite of the dbt Core execution engine, built to be interoperable with the standard dbt authoring layer. Fusion enforces some ambiguous areas of the authoring spec more strictly than dbt Core to ensure correctness (for example, dbt Core does not proactively validate most YAML configurations). Many of these discrepancies can be fixed automatically with the [dbt Autofix](https://github.com/dbt-labs/dbt-autofix) tool.
15+
The dbt Fusion engine is a ground up, first principles rewrite of the dbt Core execution engine, built to be interoperable with the standard dbt authoring layer. Fusion enforces some ambiguous areas of the authoring spec more strictly than dbt Core to ensure correctness (for example, dbt Core does not proactively validate most YAML configurations). Many of these discrepancies can be fixed automatically with the [dbt Autofix](https://github.com/dbt-labs/dbt-autofix) tool.
1616

1717
Beyond conformance with dbt Core, Fusion also contains new SQL Comprehension capabilities, a language server, modern ADBC drivers for warehouse connections, and more. While dbt Core was written in Python, the dbt Fusion engine is written in Rust, and compiled to a single application binary.
1818

19-
You can install dbt-fusion onto your local machine, a docker container, or a machine in the cloud. It is designed for flexible installation, with no dependencies on other libraries. The only libraries that dbt Fusion will load are its corresponding database drivers.
19+
You can install dbt-fusion onto your local machine, a docker container, or a machine in the cloud. It is designed for flexible installation, with no dependencies on other libraries. The only libraries that dbt Fusion will load are it's corresponding database drivers.
2020

2121
The dbt Fusion engine is being released to this repository incrementally, so, until this note is removed this repository contains only a subset of the crates that make the core of the engine work. These crates are published incrementally starting on May 28.
2222

2323
## Getting Started with the dbt Fusion engine
2424

25-
> [!TIP]
26-
> You don't have to build this project from source to use the new dbt! We recommend using the precompiled binary with additional capabilities:
25+
> [!TIP]
26+
> You don't have to build this project from source to use the new dbt! We recommend using the precompiled binary with additional capabilities:
2727
28-
There are several ways to get started with Fusion (for more, see dbt Fusion's quickstart documentation [here](https://docs.getdbt.com/guides/fusion?step=1)):
29-
1. **Download the dbt VS Code extension** - For most people the best experience. This will install the dbt fusion CLI and Language Server on your system - see the install guide [here](https://docs.getdbt.com/docs/install-dbt-extension).
30-
2. **Install Fusion Directly** - Install just the fusion CLI with the command below or see dbt's documentation [here](https://docs.getdbt.com/docs/fusion/install-fusion)
28+
There are several ways to get started with Fusion (for more, see dbt Fusion's quickstart documentation [here](https://docs.getdbt.com/guides/fusion?step=1))
29+
1. **Download dbt the vs-code extension** - For most people the best experience. This will install the dbt fusion CLI and Language Server on your system - see the install guide [here](https://docs.getdbt.com/docs/install-dbt-extension).
30+
2. **Install Fusion Directly** Install just the fusion CLI with the command below or see dbt's documentation [here](https://docs.getdbt.com/docs/fusion/install-fusion)
3131
``` bash
3232
curl -fsSL https://public.cdn.getdbt.com/fs/install/install.sh | sh -s -- --update
3333
```
3434
3. **Build Fusion from Source** - See the *Compiling from Source* section below
3535

3636

3737
### Supported Operating Systems and CPU Microarchitectures
38-
Fusion & associated drivers are compiled for each CPU microarchitecture and operating system independently. This allows for hardware-level optimization.
38+
Fusion & associated drivers are compiled for each CPU microarchitecture and operating system independently. This allows for hardware level optimization.
3939

4040
Legend:
4141
* 🟢 - Supported today
@@ -62,12 +62,12 @@ Legend:
6262
### Top Level Components Released to Date
6363
Releases of various Fusion components will be iterative as each component reaches maturity & readiness for contribution.
6464

65-
- [x] `dbt-jinja` - A Rust extension of mini-jinja to support dbt's jinja functions & other capabilities
65+
- [x] `dbt-jinja` - All Rust extension of mini-jinja to support dbt's jinja functions & other capabilities
6666
- [x] `dbt-parser` - Rust parser for dbt projects
6767
- [x] `dbt-snowflake` - database driver
6868
- [x] `dbt-schemas` - complete, correct, machine generated json schemas for dbt's authoring surface
6969
- [ ] `dbt-sql` - ANTLR grammars and generated parsers
70-
- [ ] snowflake.g4
70+
- [ ] snowflake.g4
7171
- [ ] bigquery.g4
7272
- [ ] redshift.g4
7373
- [ ] databricks.g4
@@ -76,33 +76,31 @@ Releases of various Fusion components will be iterative as each component reache
7676
## FAQ
7777

7878
<details>
79-
<summary><i>Can I contribute to the dbt Fusion engine?</i></summary>
79+
<summary><i>Can I con contribute to the dbt Fusion engine?</i></summary>
8080

81-
Yes, absolutely! Please see our contribution guidelines [here](CONTRIBUTING.md)
81+
Yes absolutely!. Please see our contribution guidelines [here](CONTRIBUTING.md)
8282
</details>
8383

8484
<details>
8585
<summary><i>How is dbt Fusion different from dbt Core?</i></summary>
86-
8786
The dbt Fusion engine is a ground-up rewrite of dbt Core, with many additional capabilities.
88-
8987
*Things that are the same:*
9088
* The YML authoring format including profiles, configuration, seeds, data tests, and unit tests
9189
* The materialization libraries
92-
* dbt's library management system (although `dbt deps` are installed automatically)
90+
* dbt's library managemenet system (although `dbt deps` are installed automatically)
9391

9492
*Additional capabilities provided by Fusion:*
9593
* All new Arrow Database Connector (ADBC) drivers for faster data transfers and unified connection handling
9694
* A language server and corresponding VS-Code extension (compatible with Cursor) for ease of development
9795
* Multi-dialect SQL compilation, validation, & static analysis
98-
* Standalone distribution. No JVM, or Python required.
96+
* Standalone distribution. No JVM, or python required.
9997
* Automatic installation of dependencies, whether that's a dbt package, or database driver
10098
* dbt code-signed & secure distributions
10199
</details>
102100

103101
<details>
104102
<summary><i>This repo doesn't have all of dbt's functionality, when will the rest come?</i></summary>
105-
dbt Fusion's source code is being published as components are finalized. Please see the Timeline section above.
103+
dbt Fusion's source code is being published as components are finalized. Please see the Timeline section above
106104
</details>
107105

108106
<details>
@@ -119,7 +117,7 @@ Releases of various Fusion components will be iterative as each component reache
119117

120118
## Compiling from Source
121119

122-
The primary CLI in this repository is the `dbt-sa-cli`. To compile the CLI, you need the Rust toolchain.
120+
The primary CLI in this repository is the `dbt-sa-cli`. To compile the CLI, you need the Rust toolchain.
123121

124122
Let's start with Rust, run the following command to install Rust on your machine:
125123

@@ -153,9 +151,9 @@ Options:
153151
...
154152
```
155153

156-
Cargo is Rust's build system and package manager. If you're familiar with Python, pip would be a sufficient comparison. We'll use cargo to run commands to build the local `dbt-sa-cli` binary and run helper scripts via `cargo xtask`. More on that later.
154+
Cargo is Rust's build system and package manager. If you're familiar with Python, pip would be a sufficient comparison. We'll use cargo to run command to build the local `dbt-sa-cli` binary and run helper scripts via `cargo xtask`. More on that later.
157155

158-
To build the binary locally, `cd` to this repo's directory and run:
156+
To build the binary locally, `cd` to the this repo's directory and run:
159157

160158
```shell
161159
cargo build
@@ -190,14 +188,14 @@ cd target/debug && pwd
190188
To run tests, increase the stack size and use nextest.
191189

192190
```
193-
RUST_MIN_STACK=8388608 cargo nextest run --no-fail-fast
191+
RUST_MIN_STACK=8388608 cargo nextest run --no-fail-fast
194192
```
195193

196194
# License
197-
The dbt Fusion engine is a monorepo and contains more than one license. Most code is licensed under ELv2. For more, please see our [licenses](LICENSES.md) section.
195+
The dbt Fusion engine is a monorepo and contains more than one License. Most code is licensed under ELv2. For more, please see our [licenses](LICENSES.md) section.
198196

199197
# Acknowledgments
200-
*To the dbt community:* dbt the tool & dbt Labs the company would not be here without the incredible community of authors, contributors, practitioners, and enthusiasts. dbt Fusion is an evolution of that work & stands on the shoulders of what has come before.
198+
*To the dbt community:* dbt the tool & dbt Labs the company would not be here without the incredible community of authors, contributors, practitioners, and enthusiasts. dbt Fusion is an evolution of that work & stands on the shoulders of what has come before.
201199

202200
*To the Arrow Community:* dbt Labs is committing fully to the Arrow ecosystem. Fusion exclusively uses the Arrow type system from drivers through adapters into the internals of the compiler & runtime.
203201

0 commit comments

Comments
 (0)