Skip to content

Pojo search throws NullPointerException when you do range query without defining range path index #128

@sravanr

Description

@sravanr

Here is the piece of java code, I ran it without creating any range indexes

PojoRepository<Artifact,Long> products = client.newPojoRepository(Artifact.class, Long.class);
        PojoPage<Artifact> p;
        this.loadSimplePojos(products);
        PojoQueryBuilder qb = products.getQueryBuilder();
           QueryDefinition qd = qb.range("inventory", Operator.GE,1055);
        JacksonHandle jh = new JacksonHandle();
        p = products.search(qd, 1,jh);

        System.out.println(jh.get().toString());

I see the following stack trace
java.lang.NullPointerException
    at com.marklogic.client.io.JSONErrorParser.parseFailedRequest(JSONErrorParser.java:29)
    at com.marklogic.client.impl.FailedRequest.jsonFailedRequest(FailedRequest.java:128)
    at com.marklogic.client.impl.FailedRequest.getFailedRequest(FailedRequest.java:110)
    at com.marklogic.client.impl.JerseyServices.extractErrorFields(JerseyServices.java:190)
    at com.marklogic.client.impl.JerseyServices.access$1500(JerseyServices.java:126)
    at com.marklogic.client.impl.JerseyServices$JerseySearchRequest.getResponse(JerseyServices.java:2172)
    at com.marklogic.client.impl.JerseyServices.getBulkDocumentsImpl(JerseyServices.java:836)
    at com.marklogic.client.impl.JerseyServices.getBulkDocuments(JerseyServices.java:719)
    at com.marklogic.client.impl.DocumentManagerImpl.search(DocumentManagerImpl.java:396)
    at com.marklogic.client.impl.JSONDocumentImpl.search(JSONDocumentImpl.java:25)
    at com.marklogic.client.impl.PojoRepositoryImpl.search(PojoRepositoryImpl.java:220)
    at com.marklogic.client.impl.PojoRepositoryImpl.search(PojoRepositoryImpl.java:205)
    at com.marklogic.javaclient.TestPOJOQueryBuilderContainerQuery.testPOJORangeSearch(TestPOJOQueryBuilderContainerQuery.java:210)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
wire:
[DEBUG] wire - << "{"errorResponse":{"statusCode":400, "status":"Bad Request", "messageCode":"XDMP-PATHRIDXNOTFOUND", "message":"XDMP-PATHRIDXNOTFOUND: cts:search(fn:collection(), cts:and-query((cts:path-range-query(\"com.marklogic.javaclient.Artifact/inventory\", \">=\", xs:int(\"1055\"), (), 1), cts:collection-query(\"com.marklogic.javaclient.Artifact\")), ()), (\"unfiltered\", cts:score-order(\"descending\")), xs:double(\"0\"), ()) -- No int path range index for com.marklogic.javaclient.Artifact/inventory "}}[\n]"

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions