@@ -5,6 +5,8 @@ package optimize
55import (
66 "github.com/QuesmaOrg/quesma/platform/logger"
77 "github.com/QuesmaOrg/quesma/platform/model"
8+ "github.com/jinzhu/copier"
9+ "log"
810 "sort"
911 "strconv"
1012 "strings"
@@ -237,6 +239,17 @@ func (s splitTimeRangeExt) Transform(plan *model.ExecutionPlan, properties map[s
237239
238240 if len (newQueries ) > 0 {
239241 plan .Queries [0 ].SelectCommand = newQueries [0 ].SelectCommand
242+
243+ for i := 1 ; i < len (newQueries ); i ++ {
244+ var queryCopy model.Query
245+ err := copier .Copy (& queryCopy , & plan .Queries [0 ])
246+ if err != nil {
247+ log .Println ("copier.Copy failed:" , err )
248+ }
249+ plan .Queries = append (plan .Queries , & queryCopy )
250+ plan .Queries [i ].SelectCommand = newQueries [i ].SelectCommand
251+ }
252+ plan .ShouldBeMerged = true
240253 }
241254 for _ , subquery := range newQueries {
242255 sql := subquery .SelectCommand .String ()
@@ -246,7 +259,15 @@ func (s splitTimeRangeExt) Transform(plan *model.ExecutionPlan, properties map[s
246259 plan .Interrupt = func (rows []model.QueryResultRow ) bool {
247260 return len (rows ) >= 500
248261 }
249-
262+ plan .Merge = func (plan * model.ExecutionPlan , results [][]model.QueryResultRow ) (* model.ExecutionPlan , [][]model.QueryResultRow ) {
263+ var mergedResults [][]model.QueryResultRow
264+ mergedResults = make ([][]model.QueryResultRow , 0 )
265+ mergedResults = append (mergedResults , results [0 ])
266+ if len (plan .Queries ) > len (mergedResults ) {
267+ plan .Queries = plan .Queries [:len (plan .Queries )- 1 ]
268+ }
269+ return plan , mergedResults
270+ }
250271 return plan , nil
251272
252273}
0 commit comments