feat(annotate_types): propagate type through Lag/Lead/NthValue window functions [CLAUDE]#7652
Open
RichardHughes-amp wants to merge 1 commit into
Open
Conversation
… functions Registers Lag, Lead, and NthValue in the base EXPRESSION_METADATA with an _annotate_by_args(e, "this") annotator so that the return type follows the type of the first argument. Previously these resolved to UNKNOWN. Note: the 3-arg LAG/LEAD(col, offset, default) form could in principle widen the result type to the common type of col and default; that is deferred to a follow-up. Propagating "this" is strictly correct for the common cases (default omitted, or default is a NULL/compatible literal). [CLAUDE] Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
64acdfb to
b7a366f
Compare
VaggelisD
reviewed
May 18, 2026
Collaborator
VaggelisD
left a comment
There was a problem hiding this comment.
Thank you for the PR once again @RichardHughes-amp! Leaving a few comments
| exp.HavingMax, | ||
| exp.Lag, | ||
| exp.LastValue, | ||
| exp.Lead, |
Collaborator
There was a problem hiding this comment.
Can we remove exp.Lead from bigquery's typing? it's also on "this" so its redundant
| exp.Filter, | ||
| exp.FirstValue, | ||
| exp.HavingMax, | ||
| exp.Lag, |
Collaborator
There was a problem hiding this comment.
BigQuery's exp.Lag typing is also based on default, could that true for more dialects?
| exp.LastValue, | ||
| exp.Lead, | ||
| exp.Limit, | ||
| exp.NthValue, |
Collaborator
There was a problem hiding this comment.
Similar to exp.Lead, we can remove the BQ entry
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.
What it says on the tin. Lag/Lead/NthValue can only propagate type from the column they're selecting from.