diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/bucket_transform.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/bucket_transform.js index 95550e2115efb..00e883509cfbe 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/bucket_transform.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/bucket_transform.js @@ -78,11 +78,13 @@ export const bucketTransform = { }, static: bucket => { checkMetric(bucket, ['value']); + // Anything containing a decimal point or an exponent is considered decimal value + const isDecimalValue = Boolean(bucket.value.match(/[.e]/i)); return { bucket_script: { buckets_path: { count: '_count' }, script: { - source: bucket.value, + source: isDecimalValue ? bucket.value : `${bucket.value}L`, lang: 'painless', }, gap_policy: 'skip', diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/bucket_transform.test.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/bucket_transform.test.js index 186baf73a86c7..3def18997863e 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/bucket_transform.test.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/bucket_transform.test.js @@ -63,5 +63,35 @@ describe('src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/bucket_tra expect(bucketTransform.moving_average(bucket, metrics)).toMatchSnapshot(); }); }); + + describe('static', () => { + test('should return a script with a double value when using decimals', () => { + expect(bucketTransform.static({ value: '421.12' })).toHaveProperty( + 'bucket_script.script.source', + '421.12' + ); + }); + + test('should return a long script for integer values', () => { + expect(bucketTransform.static({ value: '1234567890123' })).toHaveProperty( + 'bucket_script.script.source', + '1234567890123L' + ); + }); + + test('should not return a long script for exponential values', () => { + expect(bucketTransform.static({ value: '123123123e12' })).toHaveProperty( + 'bucket_script.script.source', + '123123123e12' + ); + }); + + test('should return decimal scripts for very large decimals', () => { + expect(bucketTransform.static({ value: '1234178312312381273123123.11123' })).toHaveProperty( + 'bucket_script.script.source', + '1234178312312381273123123.11123' + ); + }); + }); }); });