@@ -412,11 +412,6 @@ func (a *pancakeTransformer) aggregationTreeToPancakes(topLevel pancakeAggregati
412412 pancakeResults = append (pancakeResults , a .createFiltersPancakes (& newPancake )... )
413413 }
414414
415- for _ , pancake := range pancakeResults {
416- fmt .Println ("PANC" , pancake .whereClause )
417- fmt .Println ()
418- }
419-
420415 return
421416}
422417
@@ -427,24 +422,25 @@ func (a *pancakeTransformer) createFiltersPancakes(pancake *pancakeModel) (newPa
427422
428423 firstLayer := pancake .layers [0 ]
429424 filters , isFilters := firstLayer .nextBucketAggregation .queryType .(bucket_aggregations.Filters )
430- if ! isFilters {
425+ canSimplyAddFilterToWhereClause := len (firstLayer .currentMetricAggregations ) == 0 && len (firstLayer .currentPipelineAggregations ) == 0
426+ isItNeeded := len (pancake .layers ) > 1
427+
428+ if ! isFilters || ! canSimplyAddFilterToWhereClause || ! isItNeeded {
431429 return
432430 }
433- fmt .Println ("WTF PRZECIEZ TUTAJ" )
434- if len (firstLayer .currentMetricAggregations ) == 0 && len (firstLayer .currentPipelineAggregations ) == 0 && len (pancake .layers ) > 1 { // maybe secondLayer, not first?
435- // If filter is in the first layer, we can just add it to the where clause
436- fmt .Println ("WTF PRZECIEZ TUTAJ 2" , len (filters .Filters ), filters .Filters )
437- for i , filter := range filters .Filters [1 :] {
438- newPancake := pancake .Clone ()
439- // new (every) pancake has only 1 filter instead of all
440- bucketAggr := newPancake .layers [0 ].nextBucketAggregation .ShallowClone ()
441- bucketAggr .queryType = filters .NewFiltersSingleFilter (i + 1 )
442- newPancake .layers [0 ] = newPancakeModelLayer (& bucketAggr )
443- newPancake .whereClause = model .And ([]model.Expr {newPancake .whereClause , filter .Sql .WhereClause })
444- fmt .Println ("WTF PRZECIEZ TUTAJ 3" , newPancake .whereClause )
445- newPancakes = append (newPancakes , newPancake )
446- }
447- pancake .layers [0 ].nextBucketAggregation .queryType = filters .NewFiltersSingleFilter (0 )
431+
432+ // First create N-1 new pancakes, each with different filter
433+ for i := 1 ; i < len (filters .Filters ); i ++ {
434+ newPancake := pancake .Clone ()
435+ bucketAggr := newPancake .layers [0 ].nextBucketAggregation .ShallowClone ()
436+ bucketAggr .queryType = filters .NewFiltersSingleFilter (i )
437+ newPancake .layers [0 ] = newPancakeModelLayer (& bucketAggr )
438+ newPancake .whereClause = model .And ([]model.Expr {newPancake .whereClause , filters .Filters [i ].Sql .WhereClause })
439+ newPancakes = append (newPancakes , newPancake )
448440 }
441+
442+ // Then update original to have 1 filter as well
443+ pancake .layers [0 ].nextBucketAggregation .queryType = filters .NewFiltersSingleFilter (0 )
444+
449445 return
450446}
0 commit comments