Skip to content

Commit 859175f

Browse files
committed
fix bug
1 parent 5edd57d commit 859175f

File tree

1 file changed

+83
-27
lines changed

1 file changed

+83
-27
lines changed

core/src/main/java/cn/edu/tsinghua/iginx/split/SimplePlanGenerator.java

Lines changed: 83 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,12 @@ public List<? extends IginxPlan> generateSubPlans(RequestContext requestContext)
285285
public List<DeleteColumnsPlan> splitDeleteColumnsPlan(DeleteColumnsPlan plan, List<SplitInfo> infoList) {
286286
List<DeleteColumnsPlan> plans = new ArrayList<>();
287287
for (SplitInfo info : infoList) {
288+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
289+
if (paths.size() == 0) {
290+
continue;
291+
}
288292
DeleteColumnsPlan subPlan = new DeleteColumnsPlan(
289-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
293+
paths,
290294
info.getStorageUnit()
291295
);
292296
plans.add(subPlan);
@@ -302,8 +306,12 @@ public List<InsertColumnRecordsPlan> splitInsertColumnRecordsPlan(InsertColumnRe
302306
if (valuesAndBitmaps.k.length == 0) {
303307
continue;
304308
}
309+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
310+
if (paths.size() == 0) {
311+
continue;
312+
}
305313
InsertColumnRecordsPlan subPlan = new InsertColumnRecordsPlan(
306-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
314+
paths,
307315
timestampsAndIndexes.k,
308316
valuesAndBitmaps.k,
309317
valuesAndBitmaps.v,
@@ -325,8 +333,12 @@ public List<InsertRowRecordsPlan> splitInsertRowRecordsPlan(InsertRowRecordsPlan
325333
if (valuesAndBitmaps.k.length == 0) {
326334
continue;
327335
}
336+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
337+
if (paths.size() == 0) {
338+
continue;
339+
}
328340
InsertRowRecordsPlan subPlan = new InsertRowRecordsPlan(
329-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
341+
paths,
330342
timestampsAndIndexes.k,
331343
valuesAndBitmaps.k,
332344
valuesAndBitmaps.v,
@@ -343,8 +355,12 @@ public List<InsertRowRecordsPlan> splitInsertRowRecordsPlan(InsertRowRecordsPlan
343355
public List<DeleteDataInColumnsPlan> splitDeleteDataInColumnsPlan(DeleteDataInColumnsPlan plan, List<SplitInfo> infoList) {
344356
List<DeleteDataInColumnsPlan> plans = new ArrayList<>();
345357
for (SplitInfo info : infoList) {
358+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
359+
if (paths.size() == 0) {
360+
continue;
361+
}
346362
DeleteDataInColumnsPlan subPlan = new DeleteDataInColumnsPlan(
347-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
363+
paths,
348364
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
349365
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
350366
info.getStorageUnit()
@@ -357,8 +373,12 @@ public List<DeleteDataInColumnsPlan> splitDeleteDataInColumnsPlan(DeleteDataInCo
357373
public List<QueryDataPlan> splitQueryDataPlan(QueryDataPlan plan, List<SplitInfo> infoList) {
358374
List<QueryDataPlan> plans = new ArrayList<>();
359375
for (SplitInfo info : infoList) {
376+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
377+
if (paths.size() == 0) {
378+
continue;
379+
}
360380
QueryDataPlan subPlan = new QueryDataPlan(
361-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
381+
paths,
362382
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
363383
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
364384
info.getStorageUnit()
@@ -371,8 +391,12 @@ public List<QueryDataPlan> splitQueryDataPlan(QueryDataPlan plan, List<SplitInfo
371391
public List<ValueFilterQueryPlan> splitValueFilterQueryPlan(ValueFilterQueryPlan plan, List<SplitInfo> infoList) {
372392
List<ValueFilterQueryPlan> plans = new ArrayList<>();
373393
for (SplitInfo info : infoList) {
394+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
395+
if (paths.size() == 0) {
396+
continue;
397+
}
374398
ValueFilterQueryPlan subPlan = new ValueFilterQueryPlan(
375-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
399+
paths,
376400
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
377401
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
378402
plan.getBooleanExpression(),
@@ -386,8 +410,12 @@ public List<ValueFilterQueryPlan> splitValueFilterQueryPlan(ValueFilterQueryPlan
386410
public List<MaxQueryPlan> splitMaxQueryPlan(MaxQueryPlan plan, List<SplitInfo> infoList) {
387411
List<MaxQueryPlan> plans = new ArrayList<>();
388412
for (SplitInfo info : infoList) {
413+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
414+
if (paths.size() == 0) {
415+
continue;
416+
}
389417
MaxQueryPlan subPlan = new MaxQueryPlan(
390-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
418+
paths,
391419
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
392420
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
393421
info.getStorageUnit()
@@ -400,67 +428,71 @@ public List<MaxQueryPlan> splitMaxQueryPlan(MaxQueryPlan plan, List<SplitInfo> i
400428
private List<IginxPlan> splitDownsampleQueryPlan(DownsampleQueryPlan plan, List<SplitInfo> infoList) {
401429
List<IginxPlan> plans = new ArrayList<>();
402430
for (SplitInfo info : infoList) {
431+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
432+
if (paths.size() == 0) {
433+
continue;
434+
}
403435
IginxPlan subPlan = null;
404436
switch (info.getType()) {
405437
case MAX:
406438
subPlan = new MaxQueryPlan(
407-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
439+
paths,
408440
info.getTimeInterval().getStartTime(),
409441
info.getTimeInterval().getEndTime(),
410442
info.getStorageUnit()
411443
);
412444
break;
413445
case MIN:
414446
subPlan = new MinQueryPlan(
415-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
447+
paths,
416448
info.getTimeInterval().getStartTime(),
417449
info.getTimeInterval().getEndTime(),
418450
info.getStorageUnit()
419451
);
420452
break;
421453
case FIRST:
422454
subPlan = new FirstQueryPlan(
423-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
455+
paths,
424456
info.getTimeInterval().getStartTime(),
425457
info.getTimeInterval().getEndTime(),
426458
info.getStorageUnit()
427459
);
428460
break;
429461
case LAST:
430462
subPlan = new LastQueryPlan(
431-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
463+
paths,
432464
info.getTimeInterval().getStartTime(),
433465
info.getTimeInterval().getEndTime(),
434466
info.getStorageUnit()
435467
);
436468
break;
437469
case AVG:
438470
subPlan = new AvgQueryPlan(
439-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
471+
paths,
440472
info.getTimeInterval().getStartTime(),
441473
info.getTimeInterval().getEndTime(),
442474
info.getStorageUnit()
443475
);
444476
break;
445477
case SUM:
446478
subPlan = new SumQueryPlan(
447-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
479+
paths,
448480
info.getTimeInterval().getStartTime(),
449481
info.getTimeInterval().getEndTime(),
450482
info.getStorageUnit()
451483
);
452484
break;
453485
case COUNT:
454486
subPlan = new CountQueryPlan(
455-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
487+
paths,
456488
info.getTimeInterval().getStartTime(),
457489
info.getTimeInterval().getEndTime(),
458490
info.getStorageUnit()
459491
);
460492
break;
461493
case DOWNSAMPLE_MAX:
462494
subPlan = new DownsampleMaxQueryPlan(
463-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
495+
paths,
464496
info.getTimeInterval().getStartTime(),
465497
info.getTimeInterval().getEndTime(),
466498
plan.getPrecision(),
@@ -469,7 +501,7 @@ private List<IginxPlan> splitDownsampleQueryPlan(DownsampleQueryPlan plan, List<
469501
break;
470502
case DOWNSAMPLE_MIN:
471503
subPlan = new DownsampleMinQueryPlan(
472-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
504+
paths,
473505
info.getTimeInterval().getStartTime(),
474506
info.getTimeInterval().getEndTime(),
475507
plan.getPrecision(),
@@ -478,7 +510,7 @@ private List<IginxPlan> splitDownsampleQueryPlan(DownsampleQueryPlan plan, List<
478510
break;
479511
case DOWNSAMPLE_FIRST:
480512
subPlan = new DownsampleFirstQueryPlan(
481-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
513+
paths,
482514
info.getTimeInterval().getStartTime(),
483515
info.getTimeInterval().getEndTime(),
484516
plan.getPrecision(),
@@ -487,7 +519,7 @@ private List<IginxPlan> splitDownsampleQueryPlan(DownsampleQueryPlan plan, List<
487519
break;
488520
case DOWNSAMPLE_LAST:
489521
subPlan = new DownsampleLastQueryPlan(
490-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
522+
paths,
491523
info.getTimeInterval().getStartTime(),
492524
info.getTimeInterval().getEndTime(),
493525
plan.getPrecision(),
@@ -496,7 +528,7 @@ private List<IginxPlan> splitDownsampleQueryPlan(DownsampleQueryPlan plan, List<
496528
break;
497529
case DOWNSAMPLE_AVG:
498530
subPlan = new DownsampleAvgQueryPlan(
499-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
531+
paths,
500532
info.getTimeInterval().getStartTime(),
501533
info.getTimeInterval().getEndTime(),
502534
plan.getPrecision(),
@@ -505,7 +537,7 @@ private List<IginxPlan> splitDownsampleQueryPlan(DownsampleQueryPlan plan, List<
505537
break;
506538
case DOWNSAMPLE_SUM:
507539
subPlan = new DownsampleSumQueryPlan(
508-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
540+
paths,
509541
info.getTimeInterval().getStartTime(),
510542
info.getTimeInterval().getEndTime(),
511543
plan.getPrecision(),
@@ -514,7 +546,7 @@ private List<IginxPlan> splitDownsampleQueryPlan(DownsampleQueryPlan plan, List<
514546
break;
515547
case DOWNSAMPLE_COUNT:
516548
subPlan = new DownsampleCountQueryPlan(
517-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
549+
paths,
518550
info.getTimeInterval().getStartTime(),
519551
info.getTimeInterval().getEndTime(),
520552
plan.getPrecision(),
@@ -537,8 +569,12 @@ public List<IginxPlan> splitDownsampleMaxQueryPlan(DownsampleMaxQueryPlan plan,
537569
public List<MinQueryPlan> splitMinQueryPlan(MinQueryPlan plan, List<SplitInfo> infoList) {
538570
List<MinQueryPlan> plans = new ArrayList<>();
539571
for (SplitInfo info : infoList) {
572+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
573+
if (paths.size() == 0) {
574+
continue;
575+
}
540576
MinQueryPlan subPlan = new MinQueryPlan(
541-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
577+
paths,
542578
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
543579
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
544580
info.getStorageUnit()
@@ -555,8 +591,12 @@ public List<IginxPlan> splitDownsampleMinQueryPlan(DownsampleMinQueryPlan plan,
555591
public List<FirstQueryPlan> splitFirstQueryPlan(FirstQueryPlan plan, List<SplitInfo> infoList) {
556592
List<FirstQueryPlan> plans = new ArrayList<>();
557593
for (SplitInfo info : infoList) {
594+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
595+
if (paths.size() == 0) {
596+
continue;
597+
}
558598
FirstQueryPlan subPlan = new FirstQueryPlan(
559-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
599+
paths,
560600
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
561601
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
562602
info.getStorageUnit()
@@ -573,8 +613,12 @@ public List<IginxPlan> splitDownsampleFirstQueryPlan(DownsampleFirstQueryPlan pl
573613
public List<LastQueryPlan> splitLastQueryPlan(LastQueryPlan plan, List<SplitInfo> infoList) {
574614
List<LastQueryPlan> plans = new ArrayList<>();
575615
for (SplitInfo info : infoList) {
616+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
617+
if (paths.size() == 0) {
618+
continue;
619+
}
576620
LastQueryPlan subPlan = new LastQueryPlan(
577-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
621+
paths,
578622
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
579623
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
580624
info.getStorageUnit()
@@ -591,8 +635,12 @@ public List<IginxPlan> splitDownsampleLastQueryPlan(DownsampleLastQueryPlan plan
591635
public List<CountQueryPlan> splitCountQueryPlan(CountQueryPlan plan, List<SplitInfo> infoList) {
592636
List<CountQueryPlan> plans = new ArrayList<>();
593637
for (SplitInfo info : infoList) {
638+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
639+
if (paths.size() == 0) {
640+
continue;
641+
}
594642
CountQueryPlan subPlan = new CountQueryPlan(
595-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
643+
paths,
596644
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
597645
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
598646
info.getStorageUnit()
@@ -609,8 +657,12 @@ public List<IginxPlan> splitDownsampleCountQueryPlan(DownsampleCountQueryPlan pl
609657
public List<SumQueryPlan> splitSumQueryPlan(SumQueryPlan plan, List<SplitInfo> infoList) {
610658
List<SumQueryPlan> plans = new ArrayList<>();
611659
for (SplitInfo info : infoList) {
660+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
661+
if (paths.size() == 0) {
662+
continue;
663+
}
612664
SumQueryPlan subPlan = new SumQueryPlan(
613-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
665+
paths,
614666
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
615667
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
616668
info.getStorageUnit()
@@ -627,8 +679,12 @@ public List<IginxPlan> splitDownsampleSumQueryPlan(DownsampleSumQueryPlan plan,
627679
public List<AvgQueryPlan> splitAvgQueryPlan(AvgQueryPlan plan, List<SplitInfo> infoList) {
628680
List<AvgQueryPlan> plans = new ArrayList<>();
629681
for (SplitInfo info : infoList) {
682+
List<String> paths = plan.getPathsByInterval(info.getTimeSeriesInterval());
683+
if (paths.size() == 0) {
684+
continue;
685+
}
630686
AvgQueryPlan subPlan = new AvgQueryPlan(
631-
plan.getPathsByInterval(info.getTimeSeriesInterval()),
687+
paths,
632688
Math.max(plan.getStartTime(), info.getTimeInterval().getStartTime()),
633689
Math.min(plan.getEndTime(), info.getTimeInterval().getEndTime()),
634690
info.getStorageUnit()

0 commit comments

Comments
 (0)