diff --git a/public/app/plugins/datasource/prometheus/query_hints.ts b/public/app/plugins/datasource/prometheus/query_hints.ts index 42bba54905c..5efaadb77be 100644 --- a/public/app/plugins/datasource/prometheus/query_hints.ts +++ b/public/app/plugins/datasource/prometheus/query_hints.ts @@ -30,13 +30,14 @@ export function getQueryHints(series: any[], datasource?: any): any[] { const datapoints: number[][] = s.datapoints; if (query.indexOf('rate(') === -1 && datapoints.length > 1) { let increasing = false; - const monotonic = datapoints.filter(dp => dp[0] !== null).every((dp, index) => { + const nonNullData = datapoints.filter(dp => dp[0] !== null); + const monotonic = nonNullData.every((dp, index) => { if (index === 0) { return true; } - increasing = increasing || dp[0] > datapoints[index - 1][0]; + increasing = increasing || dp[0] > nonNullData[index - 1][0]; // monotonic? - return dp[0] >= datapoints[index - 1][0]; + return dp[0] >= nonNullData[index - 1][0]; }); if (increasing && monotonic) { const simpleMetric = query.trim().match(/^\w+$/); diff --git a/public/app/plugins/datasource/prometheus/specs/query_hints.test.ts b/public/app/plugins/datasource/prometheus/specs/query_hints.test.ts index bdfa8f5f834..2c72203137d 100644 --- a/public/app/plugins/datasource/prometheus/specs/query_hints.test.ts +++ b/public/app/plugins/datasource/prometheus/specs/query_hints.test.ts @@ -15,6 +15,14 @@ describe('getQueryHints()', () => { expect(hints).toEqual([null]); }); + it('returns no hint for a flat series', () => { + const series = [ + { datapoints: [[null, 1000], [23, 1001], [null, 1002], [23, 1003]], query: 'metric', responseIndex: 0 }, + ]; + const hints = getQueryHints(series); + expect(hints).toEqual([null]); + }); + it('returns a rate hint for a monotonously increasing series', () => { const series = [{ datapoints: [[23, 1000], [24, 1001]], query: 'metric', responseIndex: 0 }]; const hints = getQueryHints(series);