-
Notifications
You must be signed in to change notification settings - Fork 245
Milestone
Description
Greetings! Great job transitioning to .net 8. I got into an issue. Not sure if this is already written.
with Npgsql.EntityFrameworkCore.PostgreSQL 8.0.0
TO REPLICATE: When doing a query
var normalizedSearchString = "my title".ToUpperInvariant();
var q= from x in db.Blogs
where x.NormalizedName.StartsWith(normalizedSearchString) ||
x.NormalizedBody.Contains(normalizedSearchString)
select x;
q.ToList();
i get an optimized query:
select * from blogs where normalized_name like @normalized_searchstring_0_rewritten escape '\' or
normalized_body like @normalized_searchstring_0_rewritten escape '\'
the desired behaviour should probably be using a different rewritten @normalized_searchstring_1_rewritten. For contains.
TEMPORARY FIX: is to use a different variable
var normalizedSearchString = "my title".ToUpperInvariant();
var normalizedSearchString1 = normalizedSearchString;
var q= from x in db.Blogs
where x.NormalizedName.StartsWith(normalizedSearchString) ||
x.NormalizedBody.Contains(normalizedSearchString1)
select x;
q.ToList();
proposed code to fix:
in
var escapedPatternParameter = |
replace
var escapedPatternParameter =
_queryCompilationContext.RegisterRuntimeParameter(patternParameter.Name + "_rewritten", lambda);
with
// use different parameter name for StartsWith, EndsWith, Contains (sec)
var escapedPatternParameter =
_queryCompilationContext.RegisterRuntimeParameter(patternParameter.Name + _rewritten_sec"+
(int)methodType, lambda);