fix: Set cte_follows_insert to True #1095
Merged
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.
Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
Fixes #<issue_number_goes_here> 🦕
cte_follows_insert
is a dialect flag which dictates where the CTE appears relative to an insert-from-select statement.For example, when cte_follows_insert=True, then SA will generate
and when cte_follows_insert=False, then SA will generate
If we unskip the compliance test
test_insert_from_select_round_trip
, the test will fail withThis is because by default SA uses cte_follows_insert=False, but BQ syntax expects CTEs to follow inserts.
Here's a snippet that can reproduce the issue:
Previously, the insert statement would fail with:
But now it succeeds. We can see the query that it generates now correctly writes the cte after the insert statement.