Adovo

Data & Analytics

A successful dbt partial parse may retain old SQL literal content

Check dbt manifest raw_code after a whitespace-only edit inside a quoted SQL literal; a green parse can hide stale content.

November 8, 2026

A dbt Core 1.12.6 reproduction changed spaces inside a quoted SQL string, ran partial parse, and found the old raw_code in manifest.json. All commands exited successfully. Whitespace inside a literal is data; treating it as harmless formatting can change what a model means while the parse artifact says nothing changed.

Diagnose the boundary

Check the source file, target/manifest.json raw code and checksum for the affected model. The report used a minimal project and compared partial with full parse; it did not show a warehouse run using stale compiled SQL. dbt's parse reference explains that parse writes the manifest and can run with --no-partial-parse. dbt's partial parsing guidance describes cache reuse. Preserve the exact version and target directory when reproducing.

Decide the next safe change

For a literal change that matters to a release, force a full parse and inspect the artifact before relying on downstream state selection. Do not assume that this fixes all comparisons: the issue reports that normalized checksums remain identical even after full parse. Add a small regression case that asserts the intended raw SQL and an execution result in your own pipeline. Track the upstream issue for a corrected invalidation rule rather than disabling incremental parsing everywhere indefinitely.

Evidence boundary

The issue reproduces stale manifest raw_code on dbt-core 1.12.6 Python parser. It explicitly did not test warehouse execution. A full parse refreshes raw_code but the reported normalized checksum collision remains.

Adovo’s view

A green parser is useful only if it has read the change you made. When source text is part of the business rule, the artifact must agree with the file before a release can be trusted. Validate the contract at the point where it turns into data.

Continue exploring

Data & Analytics

dbtBigQuery

A dbt Fusion Python UDF may deploy more code than you wrote

Inspect the deployed BigQuery routine body during dbt Fusion migration and compare it with the intended function source.

Read more

Data & Analytics

dbtOpenMetadata

A dbt model with no parents can keep old OpenMetadata lineage

Detect stale dbt lineage after a model loses its final upstream dependency despite overrideLineage being enabled.

Read more

Data & Analytics

dbtData Reliability

A successful dbt retry can leave a failed microbatch window empty

Reconcile failed dbt v2 microbatch windows before trusting a later successful retry or downstream table.

Read more
Explore data and analytics services →