Sieve icon indicating copy to clipboard operation
Sieve copied to clipboard

Generate wrong querry for OR logic(|)

Open thanhnv2210 opened this issue 5 years ago • 3 comments

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

thanhnv2210 avatar Nov 14 '19 10:11 thanhnv2210

image

thanhnv2210 avatar Nov 14 '19 10:11 thanhnv2210

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

thanhnv2210 avatar Nov 29 '19 03:11 thanhnv2210

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?

Arcturuss avatar Oct 07 '20 09:10 Arcturuss