Fix: qualify all columns in the table diff source/target query scope#4133
Merged
georgesittas merged 1 commit intomainfrom Apr 14, 2025
Merged
Fix: qualify all columns in the table diff source/target query scope#4133georgesittas merged 1 commit intomainfrom
georgesittas merged 1 commit intomainfrom
Conversation
e4b8bf4 to
dbb434b
Compare
tobymao
approved these changes
Apr 14, 2025
erindru
pushed a commit
that referenced
this pull request
Apr 28, 2025
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.
See #4132 (comment) for context. My theory there wasn't correct after all. I had a hunch about this and verified it just now: the updated test currently fails in main, due to the same "
=not defined for theSTRUCTtype" bug.For example, the source query contains a projection that we create using the following property method:
The
source_key_expressionproperty ends up calling_key_expression(definition), which returns an expression with unqualified columns. If any of those columns has the same name as the source table, it'll again end up being treated as aSTRUCT...The reason I had reverted the
find_allapproach in my previous PR was to avoid any weird edge cases, e.g. if a user passed in a custom filter using thewherekwarg, and that contained a subquery that scanned a different table, we didn't want the columns in that subquery to have their table overwritten (or set to the incorrect table).This PR ensures we won't encounter this problem by using
find_all_in_scopeinstead, which only modifies the top-level scope'sColumns.