@@ -494,37 +494,45 @@ func (a *AggLogicalAndAggregator) Add(result interface{}, err error) error {
494494}
495495
496496func (a * AggLogicalAndAggregator ) BatchAdd (results map [string ]AggregatorResErr ) error {
497+ var result bool = true
498+
497499 for _ , res := range results {
498- err := a .Add (res .Result , res .Err )
499- if err != nil {
500- return err
500+ if res .Err != nil {
501+ return a .Add (nil , res .Err )
501502 }
502503
503- if res .Err != nil {
504- return nil
504+ boolRes , err := toBool (res .Result )
505+ if err != nil {
506+ return a .Add (nil , err )
505507 }
508+
509+ result = result && boolRes
506510 }
507511
508- return nil
512+ return a . Add ( result , nil )
509513}
510514
511515func (a * AggLogicalAndAggregator ) AddWithKey (key string , result interface {}, err error ) error {
512516 return a .Add (result , err )
513517}
514518
515519func (a * AggLogicalAndAggregator ) BatchSlice (results []AggregatorResErr ) error {
520+ var result bool = true
521+
516522 for _ , res := range results {
517- err := a .Add (res .Result , res .Err )
518- if err != nil {
519- return err
523+ if res .Err != nil {
524+ return a .Add (nil , res .Err )
520525 }
521526
522- if res .Err != nil {
523- return nil
527+ boolRes , err := toBool (res .Result )
528+ if err != nil {
529+ return a .Add (nil , err )
524530 }
531+
532+ result = result && boolRes
525533 }
526534
527- return nil
535+ return a . Add ( result , nil )
528536}
529537
530538func (a * AggLogicalAndAggregator ) Result () (interface {}, error ) {
@@ -570,37 +578,45 @@ func (a *AggLogicalOrAggregator) Add(result interface{}, err error) error {
570578}
571579
572580func (a * AggLogicalOrAggregator ) BatchAdd (results map [string ]AggregatorResErr ) error {
581+ var result bool = false
582+
573583 for _ , res := range results {
574- err := a .Add (res .Result , res .Err )
575- if err != nil {
576- return err
584+ if res .Err != nil {
585+ return a .Add (nil , res .Err )
577586 }
578587
579- if res .Err != nil {
580- return nil
588+ boolRes , err := toBool (res .Result )
589+ if err != nil {
590+ return a .Add (nil , err )
581591 }
592+
593+ result = result || boolRes
582594 }
583595
584- return nil
596+ return a . Add ( result , nil )
585597}
586598
587599func (a * AggLogicalOrAggregator ) AddWithKey (key string , result interface {}, err error ) error {
588600 return a .Add (result , err )
589601}
590602
591603func (a * AggLogicalOrAggregator ) BatchSlice (results []AggregatorResErr ) error {
604+ var result bool = false
605+
592606 for _ , res := range results {
593- err := a .Add (res .Result , res .Err )
594- if err != nil {
595- return err
607+ if res .Err != nil {
608+ return a .Add (nil , res .Err )
596609 }
597610
598- if res .Err != nil {
599- return nil
611+ boolRes , err := toBool (res .Result )
612+ if err != nil {
613+ return a .Add (nil , err )
600614 }
615+
616+ result = result || boolRes
601617 }
602618
603- return nil
619+ return a . Add ( result , nil )
604620}
605621
606622func (a * AggLogicalOrAggregator ) Result () (interface {}, error ) {
0 commit comments