Jelajahi Sumber

InfluxDB: auto escape column names with special characters, Closes #1296

Torkel Ödegaard 11 tahun lalu
induk
melakukan
d4c3463f68

+ 1 - 0
CHANGELOG.md

@@ -2,6 +2,7 @@
 
 **Enhancements**
 - [Issue #1297](https://github.com/grafana/grafana/issues/1297). Graphite: Added cumulative and minimumBelow graphite functions
+- [Issue #1296](https://github.com/grafana/grafana/issues/1296). InfluxDB: Auto escape column names with special characters. Thanks @steven-aerts
 
 # 1.9.1 (2014-12-29)
 

+ 11 - 16
src/app/features/influxdb/datasource.js

@@ -74,16 +74,19 @@ function (angular, _, kbn, InfluxSeries, InfluxQueryBuilder) {
     };
 
     InfluxDatasource.prototype.listColumns = function(seriesName) {
-      var interpolated = templateSrv.replace(seriesName);
-      if (interpolated[0] !== '/') {
-        interpolated = '/' + interpolated + '/';
+      seriesName = templateSrv.replace(seriesName);
+
+      if(!seriesName.match('^/.*/') && !seriesName.match(/^merge\(.*\)/)) {
+        seriesName = '"' + seriesName+ '"';
       }
 
-      return this._seriesQuery('select * from ' + interpolated + ' limit 1').then(function(data) {
+      return this._seriesQuery('select * from ' + seriesName + ' limit 1').then(function(data) {
         if (!data) {
           return [];
         }
-        return data[0].columns;
+        return data[0].columns.map(function(item) {
+          return /^\w+$/.test(item) ? item : ('"' + item + '"');
+        });
       });
     };
 
@@ -97,17 +100,9 @@ function (angular, _, kbn, InfluxSeries, InfluxQueryBuilder) {
         if (!data || data.length === 0) {
           return [];
         }
-        // influxdb >= 1.8
-        if (data[0].points.length > 0) {
-          return _.map(data[0].points, function(point) {
-            return point[1];
-          });
-        }
-        else { // influxdb <= 1.7
-          return _.map(data, function(series) {
-            return series.name; // influxdb < 1.7
-          });
-        }
+        return _.map(data[0].points, function(point) {
+          return point[1];
+        });
       });
     };
 

+ 0 - 1
src/app/features/influxdb/queryCtrl.js

@@ -88,7 +88,6 @@ function (angular, _) {
         seriesList = [];
         $scope.datasource.listSeries(query).then(function(series) {
           seriesList = series;
-          console.log(series);
           callback(seriesList);
         });
       }