diff --git a/platform/model/bucket_aggregations/date_histogram.go b/platform/model/bucket_aggregations/date_histogram.go index 7028a00a4..4efd47bfe 100644 --- a/platform/model/bucket_aggregations/date_histogram.go +++ b/platform/model/bucket_aggregations/date_histogram.go @@ -222,7 +222,7 @@ func (query *DateHistogram) generateSQLForCalendarInterval() model.Expr { } func (query *DateHistogram) getKey(row model.QueryResultRow) int64 { - return row.Cols[len(row.Cols)-2].Value.(int64) + return extractRowValue(row) } func (query *DateHistogram) Interval() (interval time.Duration, ok bool) { @@ -416,7 +416,25 @@ func (qt *DateHistogramRowsTransformer) Transform(ctx context.Context, rowsFromD } func (qt *DateHistogramRowsTransformer) getKey(row model.QueryResultRow) int64 { - return row.Cols[len(row.Cols)-2].Value.(int64) + return extractRowValue(row) +} + +func extractRowValue(row model.QueryResultRow) int64 { + value := row.Cols[len(row.Cols)-2].Value + switch v := value.(type) { + case int64: + return v + case string: + val, err := strconv.ParseInt(v, 10, 64) + if err != nil { + logger.Error().Msgf("string conver to int64 failed %T", v) + return 0 + } + return val + default: + logger.Error().Msgf("unsupported key type: %T", v) + return 0 + } } func (qt *DateHistogramRowsTransformer) nextKey(key int64) int64 {