← Back to team overview

dhis2-devs-core team mailing list archive

Re: Change from OR to AND in object filter queries

 

Actually no, thats a bug ;) this is why I have a blueprint for this in
2.20, its a bit messy when you are combining an optimized path with a
non-optimized path... in that case, the like will be run through the
optimized criteria, and that result is given to the in-memory filter.. if
you try with two optimized paths, you will see that its actually an OR

But yes, I think this really makes sense.. I have it working here locally
now, just need to update the in-memory filter also.. and I will commit this
tomorrow..

Do we all agree that it should be backported to 2.19?

--
Morten

On Wed, Jun 3, 2015 at 3:08 PM, Jan Henrik Øverland <
janhenrik.overland@xxxxxxxxx> wrote:

> Makes sense. But it sort of works like that already? E.g:
>
> 1)
> https://apps.dhis2.org/demo/api/dataElements.json?paging=false&filter=dataElementGroups.id:eq:qfxEYY9xAl6
> returns all members of the ANC group (11x)
>
> 2)
> https://apps.dhis2.org/demo/api/dataElements.json?paging=false&filter=name:like:dose
> returns all data elements with a name containing "dose" (27x)
>
> 3)
> https://apps.dhis2.org/demo/api/dataElements.json?paging=false&filter=dataElementGroups.id:eq:qfxEYY9xAl6&filter=name:like:dose
> returns the data elements that are in query 1 AND query 2 (only 4x)
>
> On Wed, Jun 3, 2015 at 6:46 AM, Morten Olav Hansen <mortenoh@xxxxxxxxx>
> wrote:
>
>> Hi everyone
>>
>> One of my tasks for 2.20 is to better handle AND/OR in object filter
>> queries. As part of this, we are considering changing the default from OR
>> to AND, which means that something like this:
>>
>> ?filter=id:eq:1&filter=id:eq:2
>>
>> Will not work anymore, you will have to use:
>>
>> ?filter=id:in:[1,2]
>>
>> I will backport this, so it works the same in 2.19 (so we don't have
>> different semantics in 2.19 vs 2.20), and in 2.20 there will probably be
>> introduced some kind of OR operator also (can still be useful for some
>> cases)
>>
>> Doing this, also means that you can do proper filtering on multiple
>> properties, e.g.:
>>
>> /api/dataElements?fields=*&filter=domainType:eq:TRACKER&filter=numberType:eq:int
>>
>> Which will give the results where domain is TRACKER -AND- number type is
>> int.
>>
>> If we all agree on this, I will also send out a notice on the mailing
>> lists to notify external app developers.
>>
>> --
>> Morten
>>
>> --
>> Mailing list: https://launchpad.net/~dhis2-devs-core
>> Post to     : dhis2-devs-core@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dhis2-devs-core
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>

Follow ups

References