From c78c460f79efd95b779a88ab8c50cec76b85dffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 20 Apr 2017 17:10:09 +0200 Subject: [PATCH] mysql: worked on mysql data soruce --- docker/blocks/mysql/fig | 2 + pkg/api/metrics.go | 5 +- pkg/tsdb/models.go | 1 + pkg/tsdb/mysql/mysql.go | 18 ++++--- public/app/features/dashboard/time_srv.ts | 4 +- .../app/features/panel/metrics_panel_ctrl.ts | 10 ++++ .../panel/partials/query_editor_row.html | 4 +- .../plugins/datasource/mysql/datasource.ts | 47 ++++++++++--------- public/app/plugins/datasource/mysql/module.ts | 44 +++++++++++++++-- .../mysql/partials/query.editor.html | 18 ++++++- 10 files changed, 114 insertions(+), 39 deletions(-) diff --git a/docker/blocks/mysql/fig b/docker/blocks/mysql/fig index 731d0fbbdc5..24cb47b61a7 100644 --- a/docker/blocks/mysql/fig +++ b/docker/blocks/mysql/fig @@ -10,3 +10,5 @@ mysql: volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro + command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --innodb_monitor_enable=all] + diff --git a/pkg/api/metrics.go b/pkg/api/metrics.go index d10491950ef..abd6527431a 100644 --- a/pkg/api/metrics.go +++ b/pkg/api/metrics.go @@ -50,13 +50,16 @@ func QueryMetrics(c *middleware.Context, reqDto dtos.MetricRequest) Response { return ApiError(500, "Metric request error", err) } + statusCode := 200 for _, res := range resp.Results { if res.Error != nil { res.ErrorString = res.Error.Error() + resp.Message = res.ErrorString + statusCode = 500 } } - return Json(200, &resp) + return Json(statusCode, &resp) } // GET /api/tsdb/testdata/scenarios diff --git a/pkg/tsdb/models.go b/pkg/tsdb/models.go index 0757a0f33b3..3e82dc6ca43 100644 --- a/pkg/tsdb/models.go +++ b/pkg/tsdb/models.go @@ -27,6 +27,7 @@ type Request struct { type Response struct { BatchTimings []*BatchTiming `json:"timings"` Results map[string]*QueryResult `json:"results"` + Message string `json:"message,omitempty"` } type BatchTiming struct { diff --git a/pkg/tsdb/mysql/mysql.go b/pkg/tsdb/mysql/mysql.go index fd00cdff47e..d655b816520 100644 --- a/pkg/tsdb/mysql/mysql.go +++ b/pkg/tsdb/mysql/mysql.go @@ -112,14 +112,18 @@ func (e *MysqlExecutor) Execute(ctx context.Context, queries tsdb.QuerySlice, co defer rows.Close() - res, err := e.TransformToTimeSeries(query, rows) - if err != nil { - queryResult.Error = err - return result - } + format := query.Model.Get("format").MustString("time_series") - queryResult.Series = res - queryResult.Meta.Set("rowCount", countPointsInAllSeries(res)) + if format == "time_series" { + res, err := e.TransformToTimeSeries(query, rows) + if err != nil { + queryResult.Error = err + return result + } + + queryResult.Series = res + queryResult.Meta.Set("rowCount", countPointsInAllSeries(res)) + } } return result diff --git a/public/app/features/dashboard/time_srv.ts b/public/app/features/dashboard/time_srv.ts index abef388f7eb..1385751decc 100644 --- a/public/app/features/dashboard/time_srv.ts +++ b/public/app/features/dashboard/time_srv.ts @@ -184,8 +184,8 @@ class TimeSrv { timeRangeForUrl() { var range = this.timeRange().raw; - if (moment.isMoment(range.from)) { range.from = range.from.valueOf(); } - if (moment.isMoment(range.to)) { range.to = range.to.valueOf(); } + if (moment.isMoment(range.from)) { range.from = range.from.valueOf().toString(); } + if (moment.isMoment(range.to)) { range.to = range.to.valueOf().toString(); } return range; } diff --git a/public/app/features/panel/metrics_panel_ctrl.ts b/public/app/features/panel/metrics_panel_ctrl.ts index a3303468bb3..00050870088 100644 --- a/public/app/features/panel/metrics_panel_ctrl.ts +++ b/public/app/features/panel/metrics_panel_ctrl.ts @@ -106,6 +106,16 @@ class MetricsPanelCtrl extends PanelCtrl { this.loading = false; this.error = err.message || "Request Error"; this.inspector = {error: err}; + + if (err.data) { + if (err.data.message) { + this.error = err.data.message; + } + if (err.data.error) { + this.error = err.data.error; + } + } + this.events.emit('data-error', err); console.log('Panel data error:', err); }); diff --git a/public/app/features/panel/partials/query_editor_row.html b/public/app/features/panel/partials/query_editor_row.html index 55933bbbae8..4cdc04da512 100644 --- a/public/app/features/panel/partials/query_editor_row.html +++ b/public/app/features/panel/partials/query_editor_row.html @@ -1,7 +1,7 @@
-
-