Skip to content

WHERE IN SELECT uses wrong column #2626

@fubar-coder

Description

@fubar-coder

Example:

var capabilitiesQuery = session.Query<CapabilityAssignment>()
    .OfType<UserCapabilityAssignment>()
    .Where(x => x.Capability.Path == adminCapabilityPath && x.Capability.Name == adminCapabilityName)
    .Select(x => x.UserId);

var adminUsers = await session.Query<ApplicationUser>()
    .Where(x => capabilitiesQuery.Contains(x.Id))
    .ToListAsync(cancellationToken);

The executed query is:

select
  applicatio0_.Id as id1_3_, applicatio0_.ConcurrencyStamp as concurrencystamp2_3_,
  applicatio0_.UserName as username3_3_, applicatio0_.NormalizedUserName as normalizedusername4_3_,
  applicatio0_.Email as email5_3_, applicatio0_.NormalizedEmail as normalizedemail6_3_,
  applicatio0_.PasswordHash as passwordhash7_3_, applicatio0_.SecurityStamp as securitystamp8_3_,
  applicatio0_.EmailConfirmed as emailconfirmed9_3_, applicatio0_.PhoneNumber as phonenumber10_3_,
  applicatio0_.PhoneNumberConfirmed as phonenumberconfirmed11_3_,
  applicatio0_.TwoFactorEnabled as twofactorenabled12_3_, applicatio0_.LockoutEnd as lockoutend13_3_,
  applicatio0_.LockoutEnabled as lockoutenabled14_3_, applicatio0_.AccessFailedCount as accessfailedcount15_3_,
  applicatio0_.IsPasswordChangeRequired as ispasswordchangerequired16_3_, applicatio0_.IsIntern as isintern17_3_,
  applicatio0_.IsArchived as isarchived18_3_
from 
 AspNetUsers applicatio0_ 
where 
  applicatio0_.Id in (
    select capability1_.Id
    from CapabilityAssignments capability1_
      inner join Capabilities capability2_ on capability1_.CapabilityId=capability2_.Id
    where capability1_.Type=1 and capability2_.Path=@p0 and capability2_.Name=@p1);

with:

@p0 = '/ventuno/account/' [Type: String (230:0:0)]
@p1 = 'administrator' [Type: String (20:0:0)]

The problem is the select capability1_.Id, which should be a capability1_.UserId, as specified by the .Select(x => x.UserId). This seems to be a regression since - I guess - 5.2.7.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions