Marek,

I found this bug you speak about and fixed it as well.  I was wrong in that it was still there after my initial fixes.  I apologize for this.  Hopefully we can fix anything else that you find wrong with ApacheDS quickly.

Here are the change logs for the fix in both 1.0 and 1.5 branches respectively:

http://svn.apache.org/viewvc?view=rev&revision=513440
http://svn.apache.org/viewvc?view=rev&revision=513442

Thanks,
Alex

On 3/1/07, Alex Karasulu <akarasulu@apache.org> wrote:
Marek,

What version of ADS is this?  And btw I think my fix in the 1.0 branch fixes this for 1.0.2.  You might want to try building and using that for now and report back what problems you're having.

Thanks,
Alex


On 3/1/07, marek-apacheds < marek-apacheds@o2.pl> wrote:
Hi

When I execute the following query with default scope (ONELEVEL_SCOPE)

SearchControls controls = new SearchControls();
ctx.search("", "(!(title=Marek))", controls);

everything works fine.

But when I change scope to SUBTREE_SCOPE I got an exception.

SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
ctx.search("", "(!(title=Marek))", controls);


javax.naming.NamingException: [LDAP: error code 80 - failed on search
operation: Cannot efficiently search the DIB w/o an index on attribute A
user index on attribute 2.5.4.12 (title) does not exist!
. To allow such searches please contact the directory
administrator to create the index or to enable referrals on searches using
these
attributes to a replica with the required set of indices.]; remaining name
''
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3029)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2931)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2737)
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1808)
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1731)
at
com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:368)
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:338)
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:321)
at
javax.naming.directory.InitialDirContext.search (InitialDirContext.java:248)
at com.acme.ApacheDSITest.testNegationSubtreeScope(ApacheDSITest.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest (TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run (TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run (JUnit3TestReference.java:128)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java:196)




Regards
Marek