From 654e3366072c96385bd3918017e0ee48cce92497 Mon Sep 17 00:00:00 2001 From: DongLiang-0 <1747644936@qq.com> Date: Wed, 23 Jul 2025 15:41:43 +0800 Subject: [PATCH 1/3] Adapt to string type time data --- .../bucket_aggregations/date_histogram.go | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/platform/model/bucket_aggregations/date_histogram.go b/platform/model/bucket_aggregations/date_histogram.go index 7028a00a4..968606f1c 100644 --- a/platform/model/bucket_aggregations/date_histogram.go +++ b/platform/model/bucket_aggregations/date_histogram.go @@ -222,7 +222,21 @@ func (query *DateHistogram) generateSQLForCalendarInterval() model.Expr { } func (query *DateHistogram) getKey(row model.QueryResultRow) int64 { - return row.Cols[len(row.Cols)-2].Value.(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, err) + return 0 + } + return val + default: + logger.Error().Msgf("unsupported key type: %T", v) + return 0 + } } func (query *DateHistogram) Interval() (interval time.Duration, ok bool) { @@ -416,7 +430,21 @@ 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) + 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, err) + return 0 + } + return val + default: + logger.Error().Msgf("unsupported key type: %T", v) + return 0 + } } func (qt *DateHistogramRowsTransformer) nextKey(key int64) int64 { From a85240ba34f553ec856a2ad6665da23180822cde Mon Sep 17 00:00:00 2001 From: DongLiang-0 <1747644936@qq.com> Date: Wed, 23 Jul 2025 15:52:25 +0800 Subject: [PATCH 2/3] fix --- platform/model/bucket_aggregations/date_histogram.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/model/bucket_aggregations/date_histogram.go b/platform/model/bucket_aggregations/date_histogram.go index 968606f1c..30782405c 100644 --- a/platform/model/bucket_aggregations/date_histogram.go +++ b/platform/model/bucket_aggregations/date_histogram.go @@ -229,7 +229,7 @@ func (query *DateHistogram) getKey(row model.QueryResultRow) int64 { case string: val, err := strconv.ParseInt(v, 10, 64) if err != nil { - logger.Error().Msgf("string conver to int64 failed %T", v, err) + logger.Error().Msgf("string conver to int64 failed %T", v) return 0 } return val @@ -437,7 +437,7 @@ func (qt *DateHistogramRowsTransformer) getKey(row model.QueryResultRow) int64 { case string: val, err := strconv.ParseInt(v, 10, 64) if err != nil { - logger.Error().Msgf("string conver to int64 failed %T", v, err) + logger.Error().Msgf("string conver to int64 failed %T", v) return 0 } return val From 22732373635ead3653c9b6ef12dbd84cb87a9abf Mon Sep 17 00:00:00 2001 From: DongLiang-0 <1747644936@qq.com> Date: Wed, 23 Jul 2025 16:24:55 +0800 Subject: [PATCH 3/3] fix --- .../bucket_aggregations/date_histogram.go | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/platform/model/bucket_aggregations/date_histogram.go b/platform/model/bucket_aggregations/date_histogram.go index 30782405c..4efd47bfe 100644 --- a/platform/model/bucket_aggregations/date_histogram.go +++ b/platform/model/bucket_aggregations/date_histogram.go @@ -222,21 +222,7 @@ func (query *DateHistogram) generateSQLForCalendarInterval() model.Expr { } func (query *DateHistogram) getKey(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 - } + return extractRowValue(row) } func (query *DateHistogram) Interval() (interval time.Duration, ok bool) { @@ -430,6 +416,10 @@ func (qt *DateHistogramRowsTransformer) Transform(ctx context.Context, rowsFromD } func (qt *DateHistogramRowsTransformer) getKey(row model.QueryResultRow) int64 { + return extractRowValue(row) +} + +func extractRowValue(row model.QueryResultRow) int64 { value := row.Cols[len(row.Cols)-2].Value switch v := value.(type) { case int64: