Sieve
Sieve copied to clipboard
Generate wrong querry for OR logic(|)
Using: .Microsoft.EntityFrameworkCore 2.1.1 DB: Npgsql.EntityFrameworkCore.PostgreSQL 2.1.1 Sieve: 2.3.2
Case 1: working filter: personalId==6|8 --> Working querry:SELECT ... FROM driving_license AS i LEFT JOIN driver AS "i.Driver" ON i.driver_id = "i.Driver".id WHERE (CASE WHEN "i.Driver".personal_id = '6' THEN TRUE::bool ELSE FALSE::bool END OR CASE WHEN "i.Driver".personal_id = '8' THEN TRUE::bool ELSE FALSE::bool END) = TRUE
Case 2: not working filter: personalId@=6|8 --> Not Working SELECT ... FROM driving_license AS i LEFT JOIN driver AS "i.Driver" ON i.driver_id = "i.Driver".id WHERE (CASE WHEN STRPOS("i.Driver".name, '6') > 0 THEN TRUE::bool ELSE FALSE::bool END | CASE WHEN STRPOS("i.Driver".personal_id, '6') > 0 THEN TRUE::bool ELSE FALSE::bool END) = TRUE
you can see END | CASE Please fix it in next version
I found why It's not working: 1) this is my config mapper.Property<DrivingLicenseCard>(p => p.DrivingCardNo).CanSort().CanFilter(); mapper.Property<DrivingLicenseCard>(p => p.Driver.PersonalId).CanSort().CanFilter().HasName("personalId"); 2) filter result DrivingCardNo==222|Thanhnv3 ==> working DrivingCardNo@=222|Thanhnv3 ==> working personalId==6|8 ==> working personalId@=6|8 ==> not working
So I think the reason about search field. It mean this column from sub entity
There was weird bugs like this with filtering nested field: https://github.com/Biarity/Sieve/pull/51
It can be database driver related issue. Can you check if something changes with newer version of Npgsql and/or Sieve?