@@ -440,6 +440,163 @@ public void withMultipleNotIn() {
440
440
validateServesTarget (q , "a" , FieldIndex .Segment .Kind .ASCENDING );
441
441
}
442
442
443
+ @ Test
444
+ public void buildTargetIndex () {
445
+ Query q =
446
+ query ("collId" )
447
+ .filter (filter ("a" , "==" , 1 ))
448
+ .filter (filter ("b" , "==" , 2 ))
449
+ .orderBy (orderBy ("__name__" , "desc" ));
450
+ TargetIndexMatcher targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
451
+ FieldIndex expectedIndex = targetIndexMatcher .BuildTargetIndex ();
452
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
453
+
454
+ q = query ("collId" ).orderBy (orderBy ("a" ));
455
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
456
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
457
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
458
+
459
+ q = query ("collId" ).orderBy (orderBy ("a" )).orderBy (orderBy ("b" ));
460
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
461
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
462
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
463
+
464
+ q = query ("collId" ).filter (filter ("a" , "array-contains" , "a" )).orderBy (orderBy ("b" ));
465
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
466
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
467
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
468
+
469
+ q = query ("collId" ).orderBy (orderBy ("b" ));
470
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
471
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
472
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
473
+
474
+ q = query ("collId" ).orderBy (orderBy ("a" ));
475
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
476
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
477
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
478
+
479
+ q = query ("collId" ).filter (filter ("a" , ">" , 1 )).filter (filter ("a" , "<" , 10 ));
480
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
481
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
482
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
483
+
484
+ q = query ("collId" ).filter (filter ("a" , "in" , Arrays .asList (1 , 2 ))).filter (filter ("b" , "==" , 5 ));
485
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
486
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
487
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
488
+
489
+ q = query ("collId" ).filter (filter ("value" , "array-contains" , "foo" )).orderBy (orderBy ("value" ));
490
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
491
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
492
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
493
+
494
+ q =
495
+ query ("collId" )
496
+ .filter (filter ("a" , "array-contains" , "a" ))
497
+ .filter (filter ("a" , ">" , "b" ))
498
+ .orderBy (orderBy ("a" , "asc" ));
499
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
500
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
501
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
502
+
503
+ q = query ("collId" ).filter (filter ("a" , "==" , 1 )).orderBy (orderBy ("__name__" , "desc" ));
504
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
505
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
506
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
507
+
508
+ q = query ("collId" ).filter (filter ("a1" , "==" , "a" )).filter (filter ("a2" , "==" , "b" ));
509
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
510
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
511
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
512
+
513
+ q =
514
+ query ("collId" )
515
+ .filter (filter ("equality1" , "==" , "a" ))
516
+ .filter (filter ("equality2" , "==" , "b" ))
517
+ .filter (filter ("inequality" , ">=" , "c" ));
518
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
519
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
520
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
521
+
522
+ q =
523
+ query ("collId" )
524
+ .filter (filter ("equality1" , "==" , "a" ))
525
+ .filter (filter ("inequality" , ">=" , "c" ))
526
+ .filter (filter ("equality2" , "==" , "b" ));
527
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
528
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
529
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
530
+
531
+ q = query ("collId" ).orderBy (orderBy ("a" ));
532
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
533
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
534
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
535
+
536
+ q = query ("collId" ).orderBy (orderBy ("a" , "desc" ));
537
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
538
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
539
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
540
+
541
+ q = query ("collId" ).orderBy (orderBy ("a" )).orderBy (orderBy ("__name__" ));
542
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
543
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
544
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
545
+
546
+ q = query ("collId" ).filter (filter ("a" , "!=" , 1 ));
547
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
548
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
549
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
550
+
551
+ q = query ("collId" ).filter (filter ("a" , "!=" , 1 )).orderBy (orderBy ("a" )).orderBy (orderBy ("b" ));
552
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
553
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
554
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
555
+
556
+ q = query ("collId" ).filter (filter ("a" , "==" , "a" )).filter (filter ("b" , ">" , "b" ));
557
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
558
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
559
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
560
+
561
+ q =
562
+ query ("collId" )
563
+ .filter (filter ("a1" , "==" , "a" ))
564
+ .filter (filter ("a2" , ">" , "b" ))
565
+ .orderBy (orderBy ("a2" , "asc" ));
566
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
567
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
568
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
569
+
570
+ q =
571
+ query ("collId" )
572
+ .filter (filter ("a" , ">=" , 1 ))
573
+ .filter (filter ("a" , "==" , 5 ))
574
+ .filter (filter ("a" , "<=" , 10 ));
575
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
576
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
577
+ // assertTrue(targetIndexMatcher.servedByIndex(expectedIndex));
578
+
579
+ q =
580
+ query ("collId" )
581
+ .filter (filter ("a" , "not-in" , Arrays .asList (1 , 2 , 3 )))
582
+ .filter (filter ("a" , ">=" , 2 ));
583
+ targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
584
+ expectedIndex = targetIndexMatcher .BuildTargetIndex ();
585
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
586
+ }
587
+
588
+ @ Test
589
+ public void failedTest () {
590
+ Query q =
591
+ query ("collId" )
592
+ .filter (filter ("a" , ">=" , 1 ))
593
+ .filter (filter ("a" , "==" , 5 ))
594
+ .filter (filter ("a" , "<=" , 10 ));
595
+ TargetIndexMatcher targetIndexMatcher = new TargetIndexMatcher (q .toTarget ());
596
+ FieldIndex expectedIndex = targetIndexMatcher .BuildTargetIndex ();
597
+ assertTrue (targetIndexMatcher .servedByIndex (expectedIndex ));
598
+ }
599
+
443
600
@ Test
444
601
public void withMultipleOrderBys () {
445
602
Query q =
0 commit comments