@@ -424,6 +424,16 @@ impl QueryExecutor {
424424 ) ?) )
425425 }
426426 }
427+ IndexOperator :: Range ( prefix, ranges) => {
428+ Some ( ThingIterator :: IndexRange ( IndexRangeThingIterator :: compound_range (
429+ ir,
430+ opt. ns ( ) ?,
431+ opt. db ( ) ?,
432+ ix,
433+ prefix,
434+ ranges,
435+ ) ?) )
436+ }
427437 _ => None ,
428438 } )
429439 }
@@ -581,11 +591,11 @@ impl QueryExecutor {
581591 vec. push ( IteratorRange :: new (
582592 ValueType :: NumberInt ,
583593 RangeValue {
584- value : Number :: Int ( from) . into ( ) ,
594+ value : Arc :: new ( Number :: Int ( from) . into ( ) ) ,
585595 inclusive : from_inc,
586596 } ,
587597 RangeValue {
588- value : Value :: None ,
598+ value : Arc :: new ( Value :: None ) ,
589599 inclusive : false ,
590600 } ,
591601 ) ) ;
@@ -594,11 +604,11 @@ impl QueryExecutor {
594604 vec. push ( IteratorRange :: new (
595605 ValueType :: NumberFloat ,
596606 RangeValue {
597- value : Number :: Float ( from) . into ( ) ,
607+ value : Arc :: new ( Number :: Float ( from) . into ( ) ) ,
598608 inclusive : from_inc,
599609 } ,
600610 RangeValue {
601- value : Value :: None ,
611+ value : Arc :: new ( Value :: None ) ,
602612 inclusive : false ,
603613 } ,
604614 ) ) ;
@@ -607,11 +617,11 @@ impl QueryExecutor {
607617 vec. push ( IteratorRange :: new (
608618 ValueType :: NumberDecimal ,
609619 RangeValue {
610- value : Number :: Decimal ( from) . into ( ) ,
620+ value : Arc :: new ( Number :: Decimal ( from) . into ( ) ) ,
611621 inclusive : from_inc,
612622 } ,
613623 RangeValue {
614- value : Value :: None ,
624+ value : Arc :: new ( Value :: None ) ,
615625 inclusive : false ,
616626 } ,
617627 ) ) ;
@@ -626,11 +636,11 @@ impl QueryExecutor {
626636 vec. push ( IteratorRange :: new (
627637 ValueType :: NumberInt ,
628638 RangeValue {
629- value : Value :: None ,
639+ value : Arc :: new ( Value :: None ) ,
630640 inclusive : false ,
631641 } ,
632642 RangeValue {
633- value : Number :: Int ( to) . into ( ) ,
643+ value : Arc :: new ( Number :: Int ( to) . into ( ) ) ,
634644 inclusive : to_inc,
635645 } ,
636646 ) ) ;
@@ -639,11 +649,11 @@ impl QueryExecutor {
639649 vec. push ( IteratorRange :: new (
640650 ValueType :: NumberFloat ,
641651 RangeValue {
642- value : Value :: None ,
652+ value : Arc :: new ( Value :: None ) ,
643653 inclusive : false ,
644654 } ,
645655 RangeValue {
646- value : Number :: Float ( to) . into ( ) ,
656+ value : Arc :: new ( Number :: Float ( to) . into ( ) ) ,
647657 inclusive : to_inc,
648658 } ,
649659 ) ) ;
@@ -652,11 +662,11 @@ impl QueryExecutor {
652662 vec. push ( IteratorRange :: new (
653663 ValueType :: NumberDecimal ,
654664 RangeValue {
655- value : Value :: None ,
665+ value : Arc :: new ( Value :: None ) ,
656666 inclusive : false ,
657667 } ,
658668 RangeValue {
659- value : Number :: Decimal ( to) . into ( ) ,
669+ value : Arc :: new ( Number :: Decimal ( to) . into ( ) ) ,
660670 inclusive : to_inc,
661671 } ,
662672 ) ) ;
@@ -677,11 +687,11 @@ impl QueryExecutor {
677687 vec. push ( IteratorRange :: new (
678688 ValueType :: NumberInt ,
679689 RangeValue {
680- value : Number :: Int ( from) . into ( ) ,
690+ value : Arc :: new ( Number :: Int ( from) . into ( ) ) ,
681691 inclusive : from_inc,
682692 } ,
683693 RangeValue {
684- value : Number :: Int ( to) . into ( ) ,
694+ value : Arc :: new ( Number :: Int ( to) . into ( ) ) ,
685695 inclusive : to_inc,
686696 } ,
687697 ) ) ;
@@ -690,11 +700,11 @@ impl QueryExecutor {
690700 vec. push ( IteratorRange :: new (
691701 ValueType :: NumberFloat ,
692702 RangeValue {
693- value : Number :: Float ( from) . into ( ) ,
703+ value : Arc :: new ( Number :: Float ( from) . into ( ) ) ,
694704 inclusive : from_inc,
695705 } ,
696706 RangeValue {
697- value : Number :: Float ( to) . into ( ) ,
707+ value : Arc :: new ( Number :: Float ( to) . into ( ) ) ,
698708 inclusive : to_inc,
699709 } ,
700710 ) ) ;
@@ -703,11 +713,11 @@ impl QueryExecutor {
703713 vec. push ( IteratorRange :: new (
704714 ValueType :: NumberDecimal ,
705715 RangeValue {
706- value : Number :: Decimal ( from) . into ( ) ,
716+ value : Arc :: new ( Number :: Decimal ( from) . into ( ) ) ,
707717 inclusive : from_inc,
708718 } ,
709719 RangeValue {
710- value : Number :: Decimal ( to) . into ( ) ,
720+ value : Arc :: new ( Number :: Decimal ( to) . into ( ) ) ,
711721 inclusive : to_inc,
712722 } ,
713723 ) ) ;
@@ -769,7 +779,7 @@ impl QueryExecutor {
769779 from : & ' a RangeValue ,
770780 to : & ' a RangeValue ,
771781 ) -> Option < Vec < IteratorRange < ' a > > > {
772- match ( & from. value , & to. value ) {
782+ match ( & from. value . as_ref ( ) , & to. value . as_ref ( ) ) {
773783 ( Value :: Number ( from_n) , Value :: Number ( to_n) ) => {
774784 Some ( Self :: get_ranges_number_variants ( from_n, from. inclusive , to_n, to. inclusive ) )
775785 }
@@ -797,7 +807,7 @@ impl QueryExecutor {
797807 ir : IteratorRef ,
798808 opt : & Options ,
799809 ix : & DefineIndexStatement ,
800- range : & IteratorRange < ' _ > ,
810+ range : & IteratorRange ,
801811 ) -> Result < ThingIterator , Error > {
802812 let ( ns, db) = opt. ns_db ( ) ?;
803813 Ok ( ThingIterator :: UniqueRange ( UniqueRangeThingIterator :: new ( ir, ns, db, ix, range) ?) )
@@ -883,6 +893,16 @@ impl QueryExecutor {
883893 ) ?) )
884894 }
885895 }
896+ IndexOperator :: Range ( prefix, ranges) => {
897+ Some ( ThingIterator :: UniqueRange ( UniqueRangeThingIterator :: compound_range (
898+ irf,
899+ opt. ns ( ) ?,
900+ opt. db ( ) ?,
901+ ixr,
902+ prefix,
903+ ranges,
904+ ) ?) )
905+ }
886906 _ => None ,
887907 } )
888908 }
0 commit comments