fix: EXPOSED-551 [SQL Server] Update from join with limit throws syntax exception #2244
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.
Description
Summary of the change:
Join.update(limit = ?)
now uses correct syntax with SQL Server and fails early for MySQL. These were not caught because there was no test for this operation.Detailed description:
Attempting to perform an update from a join, with a provided limit, throws a syntax exception for SQL Server:
because generated SQL uses both
TOP
andLIMIT
clauses, when onlyTOP
syntax should be used.An exception is also thrown for MySQL:
because
LIMIT
clause is being added even though the database does not support it for multiple-table syntax. Attempting to do so with this database should instead cause an early failure.TOP
syntax alone iflimit
is not null.UnsupportedByDialectException
iflimit
is not null.Type of Change
Please mark the relevant options with an "X":
Affected databases:
Checklist
Related Issues
EXPOSED-551