dbt-labs published dbt-core 2.0.1 on 14 September 2026 at 22:07:43 UTC. Columns on the --infer-schemas path are now attributed from the declared YAML schema before binding, using a CatalogProviderList wrapper. The previous path mixed those columns into InferSchemaRegistry.
The full release notes and downloads are on the GitHub release page. The tag is a stable patch. The notes contain one under the hood bullet.
Attribute --infer-schemas columns from declared YAML schema before binding via a CatalogProviderList wrapper, instead of mixing them into InferSchemaRegistry
Declared YAML columns before bind ¶
A dbt project lists columns in YAML next to each model. Those names are the ones an author wrote. Tests and descriptions in the same files sit on that list. Schema inference is a second source of columns. --infer-schemas is the only flag the 2.0.1 notes name.
Two verbs in the bullet do different work. Attribute means record that a column comes from the declared YAML schema. Bind means attach the column set to the model node. 2.0.1 runs attribution first. Bind then sees columns that already carry the YAML origin.
The old path mixed declared columns into InferSchemaRegistry with whatever inference had produced. Bind then had one bag of names. Attribution was not its own step before that registry.
The flag string is unchanged, and the notes add no config key. Only a job that already passes --infer-schemas hits this path. The GitHub release page contains that bullet and the contributor line. Compare a project you already run with that flag against the build you have pinned now.
CatalogProviderList and InferSchemaRegistry ¶
CatalogProviderList is the wrapper named in the note. Bind asks a catalog provider for columns. 2.0.1 puts that wrapper on the call, attributes declared YAML columns before the node is written, and leaves those columns out of InferSchemaRegistry.
InferSchemaRegistry is where the mix used to live. The type name says inference. Putting declared YAML columns into it made every reader of the registry inherit both origins. A reader that wanted only inferred columns had to drop YAML columns that inference never produced. A reader that wanted only declared columns had to know they had been stored in the inference registry. The notes do not say the registry type was removed. They are silent on any other entries it still holds.
The winner is code that needs origin intact on the object bind receives. A declared column can stay declared when the node is written. The loser is any reader, inside this repository or in a fork, that loaded declared columns by scanning InferSchemaRegistry. Those columns are no longer in that registry. The notes name no removed method and no deprecation warning. The break is the move.
The project filed the bullet under Under the Hood. The public note is one sentence, two type names, and one flag. No adapter matrix ships with it.
What an infer schemas job should compare ¶
Publish time is 14 September 2026, 22:07:43 UTC. The contributor line is @maxmalkin. The notes write no migration steps.
The comparison that matches the bullet is small. Run a project that already passes --infer-schemas. Look for declared YAML columns attributed before bind on the CatalogProviderList path, and for their absence from InferSchemaRegistry.
An exact pin on an older 2.0 tag keeps the old mix until the install moves to v2.0.1. A pin that accepts later 2.0 patches takes this tag on the next install. If declared column handling differs after the upgrade, this attribution move is the only change in the note.
Where to get it ¶
- GitHub release page
- Project repository
- Tag:
v2.0.1