From c485fed74454f1b07b8f5c967da26849aa0bc7a0 Mon Sep 17 00:00:00 2001 From: sbhenderson Date: Mon, 24 Apr 2017 04:44:29 -0500 Subject: [PATCH] Fix to issue 2524 by limiting number of returned measurements for display. (#8092) --- .../app/plugins/datasource/influxdb/query_builder.js | 8 +++++++- .../datasource/influxdb/specs/query_builder_specs.ts | 10 +++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/public/app/plugins/datasource/influxdb/query_builder.js b/public/app/plugins/datasource/influxdb/query_builder.js index 4b45d9bf6a6..d8051338838 100644 --- a/public/app/plugins/datasource/influxdb/query_builder.js +++ b/public/app/plugins/datasource/influxdb/query_builder.js @@ -91,7 +91,13 @@ function (_) { query += ' WHERE ' + whereConditions.join(' '); } } - + if (type === 'MEASUREMENTS') + { + query += ' LIMIT 100'; + //Solve issue #2524 by limiting the number of measurements returned + //LIMIT must be after WITH MEASUREMENT and WHERE clauses + //This also could be used for TAG KEYS and TAG VALUES, if desired + } return query; }; diff --git a/public/app/plugins/datasource/influxdb/specs/query_builder_specs.ts b/public/app/plugins/datasource/influxdb/specs/query_builder_specs.ts index b075a1ef544..0120e349b50 100644 --- a/public/app/plugins/datasource/influxdb/specs/query_builder_specs.ts +++ b/public/app/plugins/datasource/influxdb/specs/query_builder_specs.ts @@ -34,31 +34,31 @@ describe('InfluxQueryBuilder', function() { it('should have no conditions in measurement query for query with no tags', function() { var builder = new InfluxQueryBuilder({ measurement: '', tags: [] }); var query = builder.buildExploreQuery('MEASUREMENTS'); - expect(query).to.be('SHOW MEASUREMENTS'); + expect(query).to.be('SHOW MEASUREMENTS LIMIT 100'); }); it('should have no conditions in measurement query for query with no tags and empty query', function() { var builder = new InfluxQueryBuilder({ measurement: '', tags: [] }); var query = builder.buildExploreQuery('MEASUREMENTS', undefined, ''); - expect(query).to.be('SHOW MEASUREMENTS'); + expect(query).to.be('SHOW MEASUREMENTS LIMIT 100'); }); it('should have WITH MEASUREMENT in measurement query for non-empty query with no tags', function() { var builder = new InfluxQueryBuilder({ measurement: '', tags: [] }); var query = builder.buildExploreQuery('MEASUREMENTS', undefined, 'something'); - expect(query).to.be('SHOW MEASUREMENTS WITH MEASUREMENT =~ /something/'); + expect(query).to.be('SHOW MEASUREMENTS WITH MEASUREMENT =~ /something/ LIMIT 100'); }); it('should have WITH MEASUREMENT WHERE in measurement query for non-empty query with tags', function() { var builder = new InfluxQueryBuilder({ measurement: '', tags: [{key: 'app', value: 'email'}] }); var query = builder.buildExploreQuery('MEASUREMENTS', undefined, 'something'); - expect(query).to.be("SHOW MEASUREMENTS WITH MEASUREMENT =~ /something/ WHERE \"app\" = 'email'"); + expect(query).to.be("SHOW MEASUREMENTS WITH MEASUREMENT =~ /something/ WHERE \"app\" = 'email' LIMIT 100"); }); it('should have where condition in measurement query for query with tags', function() { var builder = new InfluxQueryBuilder({measurement: '', tags: [{key: 'app', value: 'email'}]}); var query = builder.buildExploreQuery('MEASUREMENTS'); - expect(query).to.be("SHOW MEASUREMENTS WHERE \"app\" = 'email'"); + expect(query).to.be("SHOW MEASUREMENTS WHERE \"app\" = 'email' LIMIT 100"); }); it('should have where tag name IN filter in tag values query for query with one tag', function() {