[ 
https://issues.apache.org/jira/browse/DIRSERVER-1296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lorenz Breu updated DIRSERVER-1296:
-----------------------------------

    Attachment: SearchIT.java
                ComparableComparator.java

apacheds-trunk/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ComparableComparator.java
Tracked the integer comparison to the "ComparableComparator" which treats them 
as Strings, so I added a quick fix to first try to parse arguments as integers. 
There may be a more elegant solution, but at least now it works correctly ;)

apacheds-trunk/apacheds/core-integ/src/test/java/org/apache/directory/server/core/operations/search/SearchIT.java
I also added 4 quick tests to SearchIT as the two existing tests fail to spot 
the error as they stay below 10. I did a fresh install of mina and apacheds 
without the fix -> fail. I then applied the fix and ran the complete set of 
integration tests on the whole apacheds project -> success. Tests I use in my 
ADS-based project, which spotted the problem in the first place, now also pass. 
So I guess this does actually work...



> integer attribute types are not compared correctly
> --------------------------------------------------
>
>                 Key: DIRSERVER-1296
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1296
>             Project: Directory ApacheDS
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.5.4
>            Reporter: Lorenz Breu
>             Fix For: 1.5.5
>
>         Attachments: ComparableComparator.java, SearchIT.java
>
>
> When searching for entries that have attributes with the INTEGER syntax, the 
> values are compared lexicographically, not numerically. This happens even if 
> the ordering and equality types are explicitly set to their integer versions 
> when injecting the attribute types into ADS.
> Example:
> dn: cn = foo, dc = example
> cn: foo
> integerAttribute: 435
> now a search using "(integerAttribute<=500)" will correctly return the 
> entry....
> but a search using "(integerAttribute<=44)" will ALSO return the entry, which 
> it clearly should not.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to