Repository navigation
fix: Snowflake time and timestamp precision no longer fails source contracts - #1294
Merged
Merged
Conversation
…ntracts Metadata reads report Snowflake time and timestamp types without their fractional-seconds precision, so an enforced contract declaring TIME(3), TIME(9) or TIMESTAMP_TZ(9) was compared with a bare TIME or TIMESTAMP_TZ and failed with S404. Snowflake type equality now treats an unstated temporal precision as matching any precision of the same type; two stated precisions must still agree and different temporal types still differ.
kvlonge
enabled auto-merge (squash)
November 2, 2026 05:33
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A Snowflake source with an enforced contract that declares a precision on a time column, such as
TIME(3)orTIME(9), failed planning with S404 although the warehouse column matched. Metadata reads (INFORMATION_SCHEMA and SHOW COLUMNS alike) report time and timestamp types without their fractional-seconds precision, so the declaredTIME(3)was compared with a bareTIME.TIMESTAMP_TZ(p)failed the same way;TIMESTAMP_NTZandTIMESTAMP_LTZalready compared equal because normalization drops their precision.Changes
Verification
make testandmake check-ci.