Breaking Changes
- Remove adapter.get_compiler interface ([9148](https://github.com/dbt-labs/dbt-core/issues/9148))
- Move AdapterLogger to adapters folder ([9151](https://github.com/dbt-labs/dbt-core/issues/9151))
- Rm --dry-run flag from 'dbt deps --add-package', in favor of just 'dbt deps --lock' ([9100](https://github.com/dbt-labs/dbt-core/issues/9100))
- move event manager setup back to core, remove ref to global EVENT_MANAGER and clean up event manager functions ([9150](https://github.com/dbt-labs/dbt-core/issues/9150))
- Remove dbt-tests-adapter and dbt-postgres packages from dbt-core ([9455](https://github.com/dbt-labs/dbt-core/issues/9455))
Features
- Initial implementation of unit testing ([8287](https://github.com/dbt-labs/dbt-core/issues/8287))
- Unit test manifest artifacts and selection ([8295](https://github.com/dbt-labs/dbt-core/issues/8295))
- Support config with tags & meta for unit tests ([8294](https://github.com/dbt-labs/dbt-core/issues/8294))
- Allow adapters to include package logs in dbt standard logging ([7859](https://github.com/dbt-labs/dbt-core/issues/7859))
- Enable inline csv fixtures in unit tests ([8626](https://github.com/dbt-labs/dbt-core/issues/8626))
- Add drop_schema_named macro ([8025](https://github.com/dbt-labs/dbt-core/issues/8025))
- migrate utils to common and adapters folders ([8924](https://github.com/dbt-labs/dbt-core/issues/8924))
- Move Agate helper client into common ([8926](https://github.com/dbt-labs/dbt-core/issues/8926))
- remove usage of dbt.config.PartialProject from dbt/adapters ([8928](https://github.com/dbt-labs/dbt-core/issues/8928))
- Add exports to SavedQuery spec ([8892](https://github.com/dbt-labs/dbt-core/issues/8892))
- Support unit testing incremental models ([8422](https://github.com/dbt-labs/dbt-core/issues/8422))
- Add support of csv file fixtures to unit testing ([8290](https://github.com/dbt-labs/dbt-core/issues/8290))
- Remove legacy logger ([8027](https://github.com/dbt-labs/dbt-core/issues/8027))
- Unit tests support --defer and state:modified ([8517](https://github.com/dbt-labs/dbt-core/issues/8517))
- Support setting export configs hierarchically via saved query and project configs ([8956](https://github.com/dbt-labs/dbt-core/issues/8956))
- Support source inputs in unit tests ([8507](https://github.com/dbt-labs/dbt-core/issues/8507))
- Use daff to render diff displayed in stdout when unit test fails ([8558](https://github.com/dbt-labs/dbt-core/issues/8558))
- Move unit testing to test command ([8979](https://github.com/dbt-labs/dbt-core/issues/8979))
- Support --empty flag for schema-only dry runs ([8971](https://github.com/dbt-labs/dbt-core/issues/8971))
- Support unit tests in non-root packages ([8285](https://github.com/dbt-labs/dbt-core/issues/8285))
- Convert the `tests` config to `data_tests` in both dbt_project.yml and schema files. in schema files. ([8699](https://github.com/dbt-labs/dbt-core/issues/8699))
- Make fixture files full-fledged parts of the manifest and enable partial parsing ([9067](https://github.com/dbt-labs/dbt-core/issues/9067))
- Adds support for parsing conversion metric related properties for the semantic layer. ([9203](https://github.com/dbt-labs/dbt-core/issues/9203))
- In build command run unit tests before models ([9128](https://github.com/dbt-labs/dbt-core/issues/9128))
- Move flags from UserConfig in profiles.yml to flags in dbt_project.yml ([9183](https://github.com/dbt-labs/dbt-core/issues/9183))
- Added hook support for `dbt source freshness` ([5609](https://github.com/dbt-labs/dbt-core/issues/5609))
- Align with order of unit test output when `actual` differs from `expected` ([9370](https://github.com/dbt-labs/dbt-core/issues/9370))
- Added support for external nodes in unit test nodes ([8944](https://github.com/dbt-labs/dbt-core/issues/8944))
- Enable unit testing versioned models ([9344](https://github.com/dbt-labs/dbt-core/issues/9344))
- Enable list command for unit tests ([8508](https://github.com/dbt-labs/dbt-core/issues/8508))
- Integration Test Optimizations ([9498](https://github.com/dbt-labs/dbt-core/issues/9498))
- Accelerate integration tests with caching. ([9498](https://github.com/dbt-labs/dbt-core/issues/9498))
- Cache environment variables ([9489](https://github.com/dbt-labs/dbt-core/issues/9489))
- Support meta at the config level for Metric nodes ([9441](https://github.com/dbt-labs/dbt-core/issues/9441))
- Add cache to SavedQuery config ([9540](https://github.com/dbt-labs/dbt-core/issues/9540))
Fixes
- For packages installed with tarball method, fetch metadata to resolve nested dependencies ([8621](https://github.com/dbt-labs/dbt-core/issues/8621))
- Fix partial parsing not working for semantic model change ([8859](https://github.com/dbt-labs/dbt-core/issues/8859))
- Handle unknown `type_code` for model contracts ([8877](https://github.com/dbt-labs/dbt-core/issues/8877), [#8353](https://github.com/dbt-labs/dbt-core/issues/8353))
- Rework get_catalog implementation to retain previous adapter interface semantics ([8846](https://github.com/dbt-labs/dbt-core/issues/8846))
- Add back contract enforcement for temporary tables on postgres ([8857](https://github.com/dbt-labs/dbt-core/issues/8857))
- Add version to fqn when version==0 ([8836](https://github.com/dbt-labs/dbt-core/issues/8836))
- Fix cased comparison in catalog-retrieval function. ([8939](https://github.com/dbt-labs/dbt-core/issues/8939))
- Catalog queries now assign the correct type to materialized views ([8864](https://github.com/dbt-labs/dbt-core/issues/8864))
- Fix compilation exception running empty seed file and support new Integer agate data_type ([8895](https://github.com/dbt-labs/dbt-core/issues/8895))
- Make relation filtering None-tolerant for maximal flexibility across adapters. ([8974](https://github.com/dbt-labs/dbt-core/issues/8974))
- Update run_results.json from previous versions of dbt to support deferral and rerun from failure ([9010](https://github.com/dbt-labs/dbt-core/issues/9010))
- Use MANIFEST.in to recursively include all jinja templates; fixes issue where some templates were not included in the distribution ([9016](https://github.com/dbt-labs/dbt-core/issues/9016))
- Fix git repository with subdirectory for Deps ([9000](https://github.com/dbt-labs/dbt-core/issues/9000))
- Use seed file from disk for unit testing if rows not specified in YAML config ([8652](https://github.com/dbt-labs/dbt-core/issues/8652))
- Fix formatting of tarball information in packages-lock.yml ([9062](https://github.com/dbt-labs/dbt-core/issues/9062))
- deps: Lock git packages to commit SHA during resolution ([9050](https://github.com/dbt-labs/dbt-core/issues/9050))
- deps: Use PackageRenderer to read package-lock.json ([9127](https://github.com/dbt-labs/dbt-core/issues/9127))
- Ensure we produce valid jsonschema schemas for manifest, catalog, run-results, and sources ([8991](https://github.com/dbt-labs/dbt-core/issues/8991))
- Get sources working again in dbt docs generate ([9119](https://github.com/dbt-labs/dbt-core/issues/9119))
- Fix parsing f-strings in python models ([6976](https://github.com/dbt-labs/dbt-core/issues/6976))
- Preserve the value of vars and the --full-refresh flags when using retry. ([9112](https://github.com/dbt-labs/dbt-core/issues/9112))
- Support reasonably long unit test names ([9015](https://github.com/dbt-labs/dbt-core/issues/9015))
- Fix back-compat parsing for model-level 'tests', source table-level 'tests', and 'tests' defined on model versions ([9411](https://github.com/dbt-labs/dbt-core/issues/9411))
- Fix retry command run from CLI ([9444](https://github.com/dbt-labs/dbt-core/issues/9444))
- Fix seed and source selection in `dbt docs generate` ([9161](https://github.com/dbt-labs/dbt-core/issues/9161))
- Add TestGenerateCatalogWithExternalNodes, include empty nodes in node selection during docs generate ([9456](https://github.com/dbt-labs/dbt-core/issues/9456))
- Fix node type plurals in FoundStats log message ([9464](https://github.com/dbt-labs/dbt-core/issues/9464))
- Run manifest upgrade preprocessing on any older manifest version, including v11 ([9487](https://github.com/dbt-labs/dbt-core/issues/9487))
- Update 'compiled_code' context member logic to route based on command ('clone' or not). Reimplement 'sql' context member as wrapper of 'compiled_code'. ([9502](https://github.com/dbt-labs/dbt-core/issues/9502))
- Fix bug where Semantic Layer filter strings are parsed into lists. ([9507](https://github.com/dbt-labs/dbt-core/issues/9507))
- Initialize invocation context before test fixtures are built. ([9489](https://github.com/dbt-labs/dbt-core/issues/#9489))
- When patching versioned models, set constraints after config ([9364](https://github.com/dbt-labs/dbt-core/issues/9364))
- only include unmodified semantic mdodels in state:modified selection ([9548](https://github.com/dbt-labs/dbt-core/issues/9548))
- Set query headers when manifest is passed in to dbtRunner ([9546](https://github.com/dbt-labs/dbt-core/issues/9546))
- Store node_info in node associated logging events ([9557](https://github.com/dbt-labs/dbt-core/issues/9557))
- Fix Semantic Model Compare node relations ([9548](https://github.com/dbt-labs/dbt-core/issues/9548))
- Clearer no-op logging in stubbed SavedQueryRunner ([9533](https://github.com/dbt-labs/dbt-core/issues/9533))
- Fix node_info contextvar handling so incorrect node_info doesn't persist ([8866](https://github.com/dbt-labs/dbt-core/issues/8866))
- Add target-path to retry ([8948](https://github.com/dbt-labs/dbt-core/issues/8948))
Docs
- fix get_custom_database docstring ([dbt-docs/9003](https://github.com/dbt-labs/dbt-docs/issues/9003))
Under the Hood
- Added more type annotations. ([8537](https://github.com/dbt-labs/dbt-core/issues/8537))
- Add unit testing functional tests ([8512](https://github.com/dbt-labs/dbt-core/issues/8512))
- Remove usage of dbt.include.global_project in dbt/adapters ([8925](https://github.com/dbt-labs/dbt-core/issues/8925))
- Add a no-op runner for Saved Qeury ([8893](https://github.com/dbt-labs/dbt-core/issues/8893))
- remove dbt.flags.MP_CONTEXT usage in dbt/adapters ([8967](https://github.com/dbt-labs/dbt-core/issues/8967))
- Remove usage of dbt.flags.LOG_CACHE_EVENTS in dbt/adapters ([8969](https://github.com/dbt-labs/dbt-core/issues/8969))
- Move CatalogRelationTypes test case to the shared test suite to be reused by adapter maintainers ([8952](https://github.com/dbt-labs/dbt-core/issues/8952))
- Treat SystemExit as an interrupt if raised during node execution. ([n/a](https://github.com/dbt-labs/dbt-core/issues/n/a))
- Removing unused 'documentable' ([8871](https://github.com/dbt-labs/dbt-core/issues/8871))
- Remove use of dbt/core exceptions in dbt/adapter ([8920](https://github.com/dbt-labs/dbt-core/issues/8920))
- Cache dbt plugin modules to improve integration test performance ([9029](https://github.com/dbt-labs/dbt-core/issues/9029))
- Consolidate deferral methods & flags ([7965](https://github.com/dbt-labs/dbt-core/issues/7965), [#8715](https://github.com/dbt-labs/dbt-core/issues/8715))
- Fix test_current_timestamp_matches_utc test; allow for MacOS runner system clock variance ([9057](https://github.com/dbt-labs/dbt-core/issues/9057))
- Remove usage of dbt.deprecations in dbt/adapters, enable core & adapter-specific event types and protos ([8927](https://github.com/dbt-labs/dbt-core/issues/8927), [#8918](https://github.com/dbt-labs/dbt-core/issues/8918))
- Clean up unused adaptor folders ([9123](https://github.com/dbt-labs/dbt-core/issues/9123))
- Move column constraints into common/contracts, removing another dependency of adapters on core. ([9024](https://github.com/dbt-labs/dbt-core/issues/9024))
- Move dbt.semver to dbt.common.semver and update references. ([9039](https://github.com/dbt-labs/dbt-core/issues/9039))
- Move lowercase utils method to common ([9180](https://github.com/dbt-labs/dbt-core/issues/9180))
- Remove usages of dbt.clients.jinja in dbt/adapters ([9205](https://github.com/dbt-labs/dbt-core/issues/9205))
- Remove usage of dbt.contracts in dbt/adapters ([9208](https://github.com/dbt-labs/dbt-core/issues/9208))
- Remove usage of dbt.contracts.graph.nodes.ResultNode in dbt/adapters ([9214](https://github.com/dbt-labs/dbt-core/issues/9214))
- Introduce RelationConfig Protocol, consolidate Relation.create_from ([9215](https://github.com/dbt-labs/dbt-core/issues/9215))
- remove manifest from adapter.set_relations_cache signature ([9217](https://github.com/dbt-labs/dbt-core/issues/9217))
- remove manifest from adapter catalog method signatures ([9218](https://github.com/dbt-labs/dbt-core/issues/9218))
- Move BaseConfig, Metadata and various other contract classes from model_config to common/contracts/config ([8919](https://github.com/dbt-labs/dbt-core/issues/8919))
- Add MacroResolverProtocol, remove lazy loading of manifest in adapter.execute_macro ([9244](https://github.com/dbt-labs/dbt-core/issues/9244))
- pass query header context to MacroQueryStringSetter ([9249](https://github.com/dbt-labs/dbt-core/issues/9249), [#9250](https://github.com/dbt-labs/dbt-core/issues/9250))
- add macro_context_generator on adapter ([9247](https://github.com/dbt-labs/dbt-core/issues/9247))
- pass mp_context to adapter factory as argument instead of import ([9025](https://github.com/dbt-labs/dbt-core/issues/9025))
- have dbt-postgres use RelationConfig protocol for materialized views' ([9292](https://github.com/dbt-labs/dbt-core/issues/9292))
- move system.py to common as dbt-bigquery relies on it to call gcloud ([9293](https://github.com/dbt-labs/dbt-core/issues/9293))
- Reorganizing event definitions to define core events in dbt/events rather than dbt/common ([9152](https://github.com/dbt-labs/dbt-core/issues/9152))
- move exceptions used only in dbt/common to dbt/common/exceptions ([9332](https://github.com/dbt-labs/dbt-core/issues/9332))
- Remove usage of dbt.adapters.factory in dbt/common ([9334](https://github.com/dbt-labs/dbt-core/issues/9334))
- Accept valid_error_names in WarnErrorOptions constructor, remove global usage of event modules ([9337](https://github.com/dbt-labs/dbt-core/issues/9337))
- Move result objects to dbt.artifacts ([9193](https://github.com/dbt-labs/dbt-core/issues/9193))
- dbt Labs OSS standardization of docs and templates. ([9252](https://github.com/dbt-labs/dbt-core/issues/9252))
- Add dbt-common as a dependency and remove dbt/common ([9357](https://github.com/dbt-labs/dbt-core/issues/9357))
- move cache exceptions to dbt/adapters ([9362](https://github.com/dbt-labs/dbt-core/issues/9362))
- Clean up macro contexts. ([9422](https://github.com/dbt-labs/dbt-core/issues/9422))
- Add the requires.manifest decorator to the retry command. ([9426](https://github.com/dbt-labs/dbt-core/issues/9426))
- Move WritableManifest + Documentation to dbt/artifacts ([9378](https://github.com/dbt-labs/dbt-core/issues/9378), [#9379](https://github.com/dbt-labs/dbt-core/issues/9379))
- Define Macro and Group resources in dbt/artifacts ([9381](https://github.com/dbt-labs/dbt-core/issues/9381), [#9382](https://github.com/dbt-labs/dbt-core/issues/9382))
- Move `SavedQuery` data definition to `dbt/artifacts` ([9386](https://github.com/dbt-labs/dbt-core/issues/9386))
- Migrate data parts of `Metric` node to dbt/artifacts ([9383](https://github.com/dbt-labs/dbt-core/issues/9383))
- Move data portion of `SemanticModel` to dbt/artifacts ([9387](https://github.com/dbt-labs/dbt-core/issues/9387))
- Move data parts of `Exposure` class to dbt/artifacts ([9380](https://github.com/dbt-labs/dbt-core/issues/9380))
- Start using `Mergeable` from dbt-common ([9505](https://github.com/dbt-labs/dbt-core/issues/9505))
- Move manifest nodes to artifacts ([9388](https://github.com/dbt-labs/dbt-core/issues/9388))
- Move data parts of `SourceDefinition` class to dbt/artifacts ([9384](https://github.com/dbt-labs/dbt-core/issues/9384))
- Remove uses of Replaceable class ([7802](https://github.com/dbt-labs/dbt-core/issues/7802))
- Make dbt-core compatible with Python 3.12 ([9007](https://github.com/dbt-labs/dbt-core/issues/9007))
- Restrict protobuf to major version 4. ([9566](https://github.com/dbt-labs/dbt-core/issues/9566))
- Remove references to dbt.tracking and dbt.flags from dbt/artifacts ([9390](https://github.com/dbt-labs/dbt-core/issues/9390))
- Implement primary key inference for model nodes ([9652](https://github.com/dbt-labs/dbt-core/issues/9652))
- Define UnitTestDefinition resource in dbt/artifacts/resources ([9667](https://github.com/dbt-labs/dbt-core/issues/9667))
- Use Manifest instead of WritableManifest in PreviousState and _get_deferred_manifest ([9567](https://github.com/dbt-labs/dbt-core/issues/9567))
Dependencies
- Bump actions/checkout from 3 to 4 ([8781](https://github.com/dbt-labs/dbt-core/pull/8781))
- Begin using DSI 0.4.x ([8892](https://github.com/dbt-labs/dbt-core/pull/8892))
- Update typing-extensions version to >=4.4 ([9012](https://github.com/dbt-labs/dbt-core/pull/9012))
- Bump ddtrace from 2.1.7 to 2.3.0 ([9132](https://github.com/dbt-labs/dbt-core/pull/9132))
- Bump freezegun from 0.3.12 to 1.3.0 ([9197](https://github.com/dbt-labs/dbt-core/pull/9197))
- Bump actions/setup-python from 4 to 5 ([9267](https://github.com/dbt-labs/dbt-core/pull/9267))
- Bump actions/download-artifact from 3 to 4 ([9374](https://github.com/dbt-labs/dbt-core/pull/9374))
- remove dbt/adapters and add dependency on dbt-adapters ([9430](https://github.com/dbt-labs/dbt-core/pull/9430))
- Bump actions/cache from 3 to 4 ([9471](https://github.com/dbt-labs/dbt-core/pull/9471))
- Bump peter-evans/create-pull-request from 5 to 6 ([9552](https://github.com/dbt-labs/dbt-core/pull/9552))
- Cap dbt-semantic-interfaces version range to <0.6 ([9671](https://github.com/dbt-labs/dbt-core/pull/9671))
- bump dbt-common to accept major version 1 ([9690](https://github.com/dbt-labs/dbt-core/pull/9690))
Security
- Update Jinja2 to >= 3.1.3 to address CVE-2024-22195 ([CVE-2024-22195](https://github.com/dbt-labs/dbt-core/pull/CVE-2024-22195))
Contributors
- [LeoTheGriff](https://github.com/LeoTheGriff) ([#9003](https://github.com/dbt-labs/dbt-core/issues/9003))
- [WilliamDee](https://github.com/WilliamDee) ([#9203](https://github.com/dbt-labs/dbt-core/issues/9203))
- [adamlopez](https://github.com/adamlopez) ([#8621](https://github.com/dbt-labs/dbt-core/issues/8621))
- [aliceliu](https://github.com/aliceliu) ([#9652](https://github.com/dbt-labs/dbt-core/issues/9652))
- [benmosher](https://github.com/benmosher) ([#n/a](https://github.com/dbt-labs/dbt-core/issues/n/a))
- [colin-rorgers-dbt](https://github.com/colin-rorgers-dbt) ([#8919](https://github.com/dbt-labs/dbt-core/issues/8919))
- [courtneyholcomb](https://github.com/courtneyholcomb) ([#9507](https://github.com/dbt-labs/dbt-core/issues/9507))
- [l1xnan](https://github.com/l1xnan) ([#9007](https://github.com/dbt-labs/dbt-core/issues/9007))
- [mederka](https://github.com/mederka) ([#6976](https://github.com/dbt-labs/dbt-core/issues/6976))
- [ofek1weiss](https://github.com/ofek1weiss) ([#5609](https://github.com/dbt-labs/dbt-core/issues/5609))
- [peterallenwebb,](https://github.com/peterallenwebb,) ([#9112](https://github.com/dbt-labs/dbt-core/issues/9112))
- [tlento](https://github.com/tlento) ([#9012](https://github.com/dbt-labs/dbt-core/pull/9012), [#9671](https://github.com/dbt-labs/dbt-core/pull/9671))
- [tonayya](https://github.com/tonayya) ([#9252](https://github.com/dbt-labs/dbt-core/issues/9252))
Previous Releases
For information on prior major and minor releases, see their changelogs:
* [1.7](https://github.com/dbt-labs/dbt-core/blob/1.7.latest/CHANGELOG.md)
* [1.6](https://github.com/dbt-labs/dbt-core/blob/1.6.latest/CHANGELOG.md)
* [1.5](https://github.com/dbt-labs/dbt-core/blob/1.5.latest/CHANGELOG.md)
* [1.4](https://github.com/dbt-labs/dbt-core/blob/1.4.latest/CHANGELOG.md)
* [1.3](https://github.com/dbt-labs/dbt-core/blob/1.3.latest/CHANGELOG.md)
* [1.2](https://github.com/dbt-labs/dbt-core/blob/1.2.latest/CHANGELOG.md)
* [1.1](https://github.com/dbt-labs/dbt-core/blob/1.1.latest/CHANGELOG.md)
* [1.0](https://github.com/dbt-labs/dbt-core/blob/1.0.latest/CHANGELOG.md)
* [0.21](https://github.com/dbt-labs/dbt-core/blob/0.21.latest/CHANGELOG.md)
* [0.20](https://github.com/dbt-labs/dbt-core/blob/0.20.latest/CHANGELOG.md)
* [0.19](https://github.com/dbt-labs/dbt-core/blob/0.19.latest/CHANGELOG.md)
* [0.18](https://github.com/dbt-labs/dbt-core/blob/0.18.latest/CHANGELOG.md)
* [0.17](https://github.com/dbt-labs/dbt-core/blob/0.17.latest/CHANGELOG.md)
* [0.16](https://github.com/dbt-labs/dbt-core/blob/0.16.latest/CHANGELOG.md)
* [0.15](https://github.com/dbt-labs/dbt-core/blob/0.15.latest/CHANGELOG.md)
* [0.14](https://github.com/dbt-labs/dbt-core/blob/0.14.latest/CHANGELOG.md)
* [0.13](https://github.com/dbt-labs/dbt-core/blob/0.13.latest/CHANGELOG.md)
* [0.12](https://github.com/dbt-labs/dbt-core/blob/0.12.latest/CHANGELOG.md)
* [0.11 and earlier](https://github.com/dbt-labs/dbt-core/blob/0.11.latest/CHANGELOG.md)