1515import java .util .concurrent .ExecutionException ;
1616import java .util .concurrent .TimeUnit ;
1717
18+ import io .qdrant .client .grpc .Collections ;
19+ import io .qdrant .client .grpc .Points ;
1820import org .junit .jupiter .api .AfterEach ;
1921import org .junit .jupiter .api .BeforeEach ;
2022import org .junit .jupiter .api .Test ;
@@ -381,6 +383,44 @@ public void scroll() throws ExecutionException, InterruptedException {
381383 assertFalse (scrollResponse .hasNextPageOffset ());
382384 }
383385
386+ @ Test
387+ public void scrollWithOrdering () throws ExecutionException , InterruptedException {
388+ createAndSeedCollection (testName );
389+
390+ Collections .PayloadIndexParams params = Collections .PayloadIndexParams .newBuilder ()
391+ .setIntegerIndexParams (
392+ Collections .IntegerIndexParams .newBuilder ().setLookup (false ).setRange (true ).build ())
393+ .build ();
394+
395+ UpdateResult resultIndex = client .createPayloadIndexAsync (
396+ testName ,
397+ "bar" ,
398+ PayloadSchemaType .Integer ,
399+ params ,
400+ true ,
401+ null ,
402+ null ).get ();
403+
404+ assertEquals (UpdateStatus .Completed , resultIndex .getStatus ());
405+
406+ CollectionInfo collectionInfo = client .getCollectionInfoAsync (testName ).get ();
407+ assertEquals (ImmutableSet .of ("bar" ), collectionInfo .getPayloadSchemaMap ().keySet ());
408+
409+ ScrollResponse scrollResponse = client .scrollAsync (ScrollPoints .newBuilder ()
410+ .setCollectionName (testName )
411+ .setLimit (1 )
412+ .setOrderBy (Points .OrderBy .newBuilder ()
413+ .setDirection (Points .Direction .Desc )
414+ .setKey ("bar" ).build ())
415+ .build ()
416+ ).get ();
417+
418+
419+ assertEquals (1 , scrollResponse .getResultCount ());
420+ assertFalse (scrollResponse .hasNextPageOffset ());
421+ assertEquals (scrollResponse .getResult (0 ).getId (), id (9 ));
422+ }
423+
384424 @ Test
385425 public void recommend () throws ExecutionException , InterruptedException {
386426 createAndSeedCollection (testName );
@@ -458,10 +498,10 @@ public void discover() throws ExecutionException, InterruptedException {
458498 createAndSeedCollection (testName );
459499
460500 List <ScoredPoint > points = client .discoverAsync (DiscoverPoints .newBuilder ()
461- .setCollectionName (testName )
462- .setTarget (targetVector (vector (ImmutableList .of (10.4f , 11.4f ))))
463- .setLimit (1 )
464- .build ()).get ();
501+ .setCollectionName (testName )
502+ .setTarget (targetVector (vector (ImmutableList .of (10.4f , 11.4f ))))
503+ .setLimit (1 )
504+ .build ()).get ();
465505
466506 assertEquals (1 , points .size ());
467507 assertEquals (id (9 ), points .get (0 ).getId ());
@@ -472,19 +512,19 @@ public void discoverBatch() throws ExecutionException, InterruptedException {
472512 createAndSeedCollection (testName );
473513
474514 List <BatchResult > batchResults = client .discoverBatchAsync (
475- testName ,
476- ImmutableList .of (
477- DiscoverPoints .newBuilder ()
478- .setCollectionName (testName )
479- .setTarget (targetVector (vector (ImmutableList .of (10.4f , 11.4f ))))
480- .setLimit (1 )
481- .build (),
482- DiscoverPoints .newBuilder ()
483- .setCollectionName (testName )
484- .setTarget (targetVector (vector (ImmutableList .of (3.5f , 4.5f ))))
485- .setLimit (1 )
486- .build ()),
487- null ).get ();
515+ testName ,
516+ ImmutableList .of (
517+ DiscoverPoints .newBuilder ()
518+ .setCollectionName (testName )
519+ .setTarget (targetVector (vector (ImmutableList .of (10.4f , 11.4f ))))
520+ .setLimit (1 )
521+ .build (),
522+ DiscoverPoints .newBuilder ()
523+ .setCollectionName (testName )
524+ .setTarget (targetVector (vector (ImmutableList .of (3.5f , 4.5f ))))
525+ .setLimit (1 )
526+ .build ()),
527+ null ).get ();
488528
489529 assertEquals (2 , batchResults .size ());
490530 BatchResult result = batchResults .get (0 );
@@ -573,17 +613,17 @@ public void batchPointUpdate() throws ExecutionException, InterruptedException {
573613 createAndSeedCollection (testName );
574614
575615 List <PointsUpdateOperation > operations = List .of (
576- PointsUpdateOperation .newBuilder ()
577- .setClearPayload (ClearPayload .newBuilder ().setPoints (
578- PointsSelector .newBuilder ().setPoints (PointsIdsList .newBuilder ().addIds (id (9 ))))
579- .build ())
580- .build (),
581- PointsUpdateOperation .newBuilder ()
582- .setUpdateVectors (UpdateVectors .newBuilder ()
583- .addPoints (PointVectors .newBuilder ()
584- .setId (id (9 ))
585- .setVectors (vectors (0.6f , 0.7f ))))
586- .build ());
616+ PointsUpdateOperation .newBuilder ()
617+ .setClearPayload (ClearPayload .newBuilder ().setPoints (
618+ PointsSelector .newBuilder ().setPoints (PointsIdsList .newBuilder ().addIds (id (9 ))))
619+ .build ())
620+ .build (),
621+ PointsUpdateOperation .newBuilder ()
622+ .setUpdateVectors (UpdateVectors .newBuilder ()
623+ .addPoints (PointVectors .newBuilder ()
624+ .setId (id (9 ))
625+ .setVectors (vectors (0.6f , 0.7f ))))
626+ .build ());
587627
588628 List <UpdateResult > response = client .batchUpdateAsync (testName , operations ).get ();
589629
0 commit comments