@@ -586,7 +586,7 @@ namespace graphene { namespace app {
586
586
const auto & idx = hist_idx.indices ().get <by_pool_op_type_time>();
587
587
auto itr = start.valid () ? idx.lower_bound ( boost::make_tuple ( pool_id, *operation_type, *start ) )
588
588
: idx.lower_bound ( boost::make_tuple ( pool_id, *operation_type ) );
589
- auto itr_stop = stop.valid () ? idx.upper_bound ( boost::make_tuple ( pool_id, *operation_type, *stop ) )
589
+ auto itr_stop = stop.valid () ? idx.lower_bound ( boost::make_tuple ( pool_id, *operation_type, *stop ) )
590
590
: idx.upper_bound ( boost::make_tuple ( pool_id, *operation_type ) );
591
591
while ( itr != itr_stop && result.size () < limit )
592
592
{
@@ -599,7 +599,7 @@ namespace graphene { namespace app {
599
599
const auto & idx = hist_idx.indices ().get <by_pool_time>();
600
600
auto itr = start.valid () ? idx.lower_bound ( boost::make_tuple ( pool_id, *start ) )
601
601
: idx.lower_bound ( pool_id );
602
- auto itr_stop = stop.valid () ? idx.upper_bound ( boost::make_tuple ( pool_id, *stop ) )
602
+ auto itr_stop = stop.valid () ? idx.lower_bound ( boost::make_tuple ( pool_id, *stop ) )
603
603
: idx.upper_bound ( pool_id );
604
604
while ( itr != itr_stop && result.size () < limit )
605
605
{
@@ -645,7 +645,11 @@ namespace graphene { namespace app {
645
645
const auto & idx_t = hist_idx.indices ().get <by_pool_op_type_time>();
646
646
auto itr = start.valid () ? idx.lower_bound ( boost::make_tuple ( pool_id, *operation_type, *start ) )
647
647
: idx.lower_bound ( boost::make_tuple ( pool_id, *operation_type ) );
648
- auto itr_temp = stop.valid () ? idx_t .upper_bound ( boost::make_tuple ( pool_id, *operation_type, *stop ) )
648
+ if ( itr == idx.end () || itr->pool != pool_id || itr->op_type != *operation_type ) // empty result
649
+ return result;
650
+ if ( stop.valid () && itr->time <= *stop ) // empty result
651
+ return result;
652
+ auto itr_temp = stop.valid () ? idx_t .lower_bound ( boost::make_tuple ( pool_id, *operation_type, *stop ) )
649
653
: idx_t .upper_bound ( boost::make_tuple ( pool_id, *operation_type ) );
650
654
auto itr_stop = ( itr_temp == idx_t .end () ? idx.end () : idx.iterator_to ( *itr_temp ) );
651
655
while ( itr != itr_stop && result.size () < limit )
@@ -660,7 +664,11 @@ namespace graphene { namespace app {
660
664
const auto & idx_t = hist_idx.indices ().get <by_pool_time>();
661
665
auto itr = start.valid () ? idx.lower_bound ( boost::make_tuple ( pool_id, *start ) )
662
666
: idx.lower_bound ( pool_id );
663
- auto itr_temp = stop.valid () ? idx_t .upper_bound ( boost::make_tuple ( pool_id, *stop ) )
667
+ if ( itr == idx.end () || itr->pool != pool_id ) // empty result
668
+ return result;
669
+ if ( stop.valid () && itr->time <= *stop ) // empty result
670
+ return result;
671
+ auto itr_temp = stop.valid () ? idx_t .lower_bound ( boost::make_tuple ( pool_id, *stop ) )
664
672
: idx_t .upper_bound ( pool_id );
665
673
auto itr_stop = ( itr_temp == idx_t .end () ? idx.end () : idx.iterator_to ( *itr_temp ) );
666
674
while ( itr != itr_stop && result.size () < limit )
0 commit comments