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] { 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{}) {