← Back to team overview

dhis2-devs-core team mailing list archive

Re: Change from OR to AND in object filter queries

 

Yes agree.

On Wed, Jun 3, 2015 at 10:25 AM, Morten Olav Hansen <mortenoh@xxxxxxxxx>
wrote:

> 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
>>>
>>>
>>
>
> --
> 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
>
>

References