From 7ddf9f74f3c1452e5f707774fd9d77cac38c1824 Mon Sep 17 00:00:00 2001 From: Krzysztof Kwapisiewicz Date: Wed, 8 Nov 2023 12:24:44 +0100 Subject: [PATCH 1/2] Don't panic on empty var Druid query --- pkg/tsdb/druid/druid.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/tsdb/druid/druid.go b/pkg/tsdb/druid/druid.go index bd78dfeca233a..c8dac6f206af9 100644 --- a/pkg/tsdb/druid/druid.go +++ b/pkg/tsdb/druid/druid.go @@ -608,8 +608,11 @@ func (ds *Service) oldExecuteQuery(queryRef string, q druidquerybuilder.Query, s err := json.Unmarshal(res, &tn) if err == nil && len(tn) > 0 { columns := []string{"timestamp"} - for c := range tn[0]["result"].([]interface{})[0].(map[string]interface{}) { - columns = append(columns, c) + results := tn[0]["result"].([]interface{}) + if len(results) > 0 { + for c := range results[0].(map[string]interface{}) { + columns = append(columns, c) + } } for _, result := range tn { for _, record := range result["result"].([]interface{}) { From 5d03b185c28734e20ea233cd0f10fdd9c9336444 Mon Sep 17 00:00:00 2001 From: Krzysztof Kwapisiewicz Date: Wed, 8 Nov 2023 12:45:03 +0100 Subject: [PATCH 2/2] Prevent panic in column type detection --- pkg/tsdb/druid/column_type.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/tsdb/druid/column_type.go b/pkg/tsdb/druid/column_type.go index 20433d84ec1e9..d29f9b9738c5f 100644 --- a/pkg/tsdb/druid/column_type.go +++ b/pkg/tsdb/druid/column_type.go @@ -7,6 +7,10 @@ import ( ) func detectColumnType(c *responseColumn, pos int, rows [][]interface{}) { + if len(rows) == 0 { + c.Type = ColumnString + return + } t := map[columnType]int{"nil": 0} maxRowsToScan := (len(rows) / 5) + 1 for _, row := range rows[:maxRowsToScan] {