Bug 175897
| Summary: | filter'd search not returning matches after index added | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | Red Hat Directory Server | Reporter: | To Ngan <tngan> | ||||||||||||
| Component: | Database - Indexes/Searches | Assignee: | Noriko Hosoi <nhosoi> | ||||||||||||
| Status: | CLOSED NEXTRELEASE | QA Contact: | Orla Hegarty <ohegarty> | ||||||||||||
| Severity: | medium | Docs Contact: | |||||||||||||
| Priority: | medium | ||||||||||||||
| Version: | 7.1 | CC: | nkinder, rmeggins, schetty, tao | ||||||||||||
| Target Milestone: | DS8.0 | ||||||||||||||
| Target Release: | --- | ||||||||||||||
| Hardware: | All | ||||||||||||||
| OS: | Linux | ||||||||||||||
| Whiteboard: | |||||||||||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||||||||||
| Doc Text: | Story Points: | --- | |||||||||||||
| Clone Of: | Environment: | ||||||||||||||
| Last Closed: | 2006-05-26 20:12:48 UTC | Type: | --- | ||||||||||||
| Regression: | --- | Mount Type: | --- | ||||||||||||
| Documentation: | --- | CRM: | |||||||||||||
| Verified Versions: | Category: | --- | |||||||||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||||||||
| Embargoed: | |||||||||||||||
| Bug Depends On: | |||||||||||||||
| Bug Blocks: | 152373, 159328, 182367, 182630, 184343, 240316 | ||||||||||||||
| Attachments: |
|
||||||||||||||
Created attachment 122331 [details]
cvs commit message
Reviewed by Rich and David (Thank you!)
Added DS7.1 and DS6.21 to the block list... *** Bug 175982 has been marked as a duplicate of this bug. *** Created attachment 122426 [details]
cvs commit message (Directory71RtmBranch & Directory621RtmBranch)
Checked in into Directory71RtmBranch & Directory621RtmBranch, as well.
Created attachment 122510 [details]
cvs diff filter/{filter.ksh, tet_scen}
Adding the range searches to the filter test.
Created attachment 122511 [details]
cvs commit message
Reviewed by To (Thank you!)
Checked in into the trunk as well as Directory71RtmBranch.
Per todays bug council; setting target tracking bug to 7.2 so that they will be verified by QE against that release. This bug is listed for inclusion in DS 7.1 SP 2 ; adding the patch to the blockers list. This fix applies to DS 6.21 SP3 as well... adding blockage to the tracking bug. Verified fixed in DS 7.1 SP 2 on Solaris 32 and 64 bit, HP-UX 11i 64 bit, RHEL 3 32 bit and RHEL 4 32 bit. Leaving open for now, pending verification against DS 6.21 SP 3 and it's supported platforms. *DOCS* There was a problem in evaluating intersection of multiple range searches when the attribute of each range search is different from each other. E.g., &(attr1 <= val1)(attr2 >= val2) The bug was fixed on DS 6.21 SP3, DS 7.1 SP2 (and DS 7.2). Verified candidate 20060310.1 on all platforms. Somehow the errata system did not automatically close these bugs even though DS SP 2 is shipped and available live on RHN trying to manually close trying again DS7.2 is not a valid milestone anymore. Anything thats set to DS7.2 should be set to DS8.0. Will make further changes per bug council on 07/24/2007, after this. Bug already CLOSED. setting screened+ flag |
This type of filter (&(attr1 <= val1)(attr2 >= val2)) is not an optimizable case (like (&(attr1 >= val1)(attr1 <= val2)), but it was considered it was and sent to a wrong function. Index: filterindex.c =================================================================== RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/filterindex.c,v retrieving revision 1.4 diff -t -w -U4 -r1.4 filterindex.c --- filterindex.c 19 Apr 2005 22:07:38 -0000 1.4 +++ filterindex.c 16 Dec 2005 02:41:09 -0000 @@ -639,9 +639,10 @@ if (le_count != 1 || ge_count != 1 || f_count != 2) { is_bounded_range = 0; } - if (NULL == fpairs[0] || NULL == fpairs[1]) + if (NULL == fpairs[0] || NULL == fpairs[1] || + 0 != strcmp(tpairs[0], tpairs[1]) /* avoid "&(cn<=A)(sn>=B)" type */ ) { fpairs[0] = fpairs[1] = NULL; slapi_ch_free_string(&tpairs[0]); slapi_ch_bvfree(&vpairs[0]);