Skip to content

Commit ed90dbe

Browse files
committed
pkg/parcacol: Refactor column index retrieval
1 parent 7359200 commit ed90dbe

File tree

1 file changed

+28
-27
lines changed

1 file changed

+28
-27
lines changed

pkg/parcacol/querier.go

+28-27
Original file line numberDiff line numberDiff line change
@@ -352,27 +352,34 @@ func (q *Querier) queryRangeDelta(ctx context.Context, filterExpr logicalplan.Ex
352352
)
353353
}
354354

355-
type columnIndex struct {
356-
index int
357-
found bool
358-
}
359355
// Add necessary columns and their found value is false by default.
360-
columnIndices := map[string]columnIndex{
361-
ColumnDurationSum: {},
362-
ColumnPeriodSum: {},
363-
ColumnTimestamp: {},
364-
ColumnValueCount: {},
365-
ColumnValueSum: {},
366-
}
356+
columnIndices := struct {
357+
DurationSum int
358+
PeriodSum int
359+
Timestamp int
360+
ValueCount int
361+
ValueSum int
362+
}{}
363+
367364
labelColumnIndices := []int{}
368365

369366
fields := ar.Schema().Fields()
370367
for i, field := range fields {
371-
if _, ok := columnIndices[field.Name]; ok {
372-
columnIndices[field.Name] = columnIndex{
373-
index: i,
374-
found: true,
375-
}
368+
switch field.Name {
369+
case ColumnDurationSum:
370+
columnIndices.DurationSum = i
371+
continue
372+
case ColumnPeriodSum:
373+
columnIndices.PeriodSum = i
374+
continue
375+
case ColumnTimestamp:
376+
columnIndices.Timestamp = i
377+
continue
378+
case ColumnValueCount:
379+
columnIndices.ValueCount = i
380+
continue
381+
case ColumnValueSum:
382+
columnIndices.ValueSum = i
376383
continue
377384
}
378385

@@ -381,12 +388,6 @@ func (q *Querier) queryRangeDelta(ctx context.Context, filterExpr logicalplan.Ex
381388
}
382389
}
383390

384-
for name, index := range columnIndices {
385-
if !index.found {
386-
return nil, fmt.Errorf("%s column not found", name)
387-
}
388-
}
389-
390391
labelSet := labels.Labels{}
391392

392393
resSeries := []*pb.MetricsSeries{}
@@ -422,11 +423,11 @@ func (q *Querier) queryRangeDelta(ctx context.Context, filterExpr logicalplan.Ex
422423
labelsetToIndex[s] = index
423424
}
424425

425-
ts := ar.Column(columnIndices[ColumnTimestamp].index).(*array.Int64).Value(i)
426-
durationSum := ar.Column(columnIndices[ColumnDurationSum].index).(*array.Int64).Value(i)
427-
periodSum := ar.Column(columnIndices[ColumnPeriodSum].index).(*array.Int64).Value(i)
428-
valueSum := ar.Column(columnIndices[ColumnValueSum].index).(*array.Int64).Value(i)
429-
valueCount := ar.Column(columnIndices[ColumnValueCount].index).(*array.Int64).Value(i)
426+
ts := ar.Column(columnIndices.Timestamp).(*array.Int64).Value(i)
427+
durationSum := ar.Column(columnIndices.DurationSum).(*array.Int64).Value(i)
428+
periodSum := ar.Column(columnIndices.PeriodSum).(*array.Int64).Value(i)
429+
valueSum := ar.Column(columnIndices.ValueSum).(*array.Int64).Value(i)
430+
valueCount := ar.Column(columnIndices.ValueCount).(*array.Int64).Value(i)
430431

431432
// TODO: We should do these period and duration calculations in frostDB,
432433
// so that we can push these down as projections.

0 commit comments

Comments
 (0)