fix(SQLAlchemy): queries w/o parameters #317
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.
Because the DB driver is using
pyformat
forparamstyle,
queries compiled by SQLAlchemy will double any percents signs in the text:So that when running the query via:
The parameters are applied to the SQL via:
Becoming:
The problem is that if no parameters are present the function
apply_parameters
will return the SQL immediately, with any double percents remaining in the final query. This produces valid queries (LIKE '%%a'
is valid), but for some reason the performance of these queries is much worse compared to the correct query (LIKE '%a'
).This PR fixes the problem by always removing duplicate percents, even when no parameters are passed.