From 260d421a0d1320664f68322d169741f359363280 Mon Sep 17 00:00:00 2001 From: justin-park Date: Thu, 15 Jun 2023 16:35:58 -0700 Subject: [PATCH] fix(dashboard): native filters do not preserve bigint --- .../components/Select/buildQuery.test.ts | 14 +++++++++++++ .../filters/components/Select/buildQuery.ts | 21 +++++++++++++------ 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/superset-frontend/src/filters/components/Select/buildQuery.test.ts b/superset-frontend/src/filters/components/Select/buildQuery.test.ts index c89719dc836d..d8b9d6b804c3 100644 --- a/superset-frontend/src/filters/components/Select/buildQuery.test.ts +++ b/superset-frontend/src/filters/components/Select/buildQuery.test.ts @@ -122,4 +122,18 @@ describe('Select buildQuery', () => { const [query] = queryContext.queries; expect(query.filters).toEqual([{ col: 'my_col', op: '>=', val: 123 }]); }); + + it('should add big numeric search parameter to query filter', () => { + const queryContext = buildQuery(formData, { + ownState: { + search: '123436775936632786', + coltypeMap: { my_col: GenericDataType.NUMERIC }, + }, + }); + expect(queryContext.queries.length).toEqual(1); + const [query] = queryContext.queries; + expect(query.filters).toEqual([ + { col: 'my_col', op: '>=', val: '123436775936632786' }, + ]); + }); }); diff --git a/superset-frontend/src/filters/components/Select/buildQuery.ts b/superset-frontend/src/filters/components/Select/buildQuery.ts index d9a5b3c229ab..7900bd7e2dbe 100644 --- a/superset-frontend/src/filters/components/Select/buildQuery.ts +++ b/superset-frontend/src/filters/components/Select/buildQuery.ts @@ -49,12 +49,21 @@ const buildQuery: BuildQuery = ( coltypeMap[label] === GenericDataType.NUMERIC && !Number.isNaN(Number(search)) ) { - // for numeric columns we apply a >= where clause - extraFilters.push({ - col: column, - op: '>=', - val: Number(search), - }); + if (search === `${Number(search)}`) { + // for numeric columns we apply a >= where clause + extraFilters.push({ + col: column, + op: '>=', + val: Number(search), + }); + } else { + // for big number case + extraFilters.push({ + col: column, + op: '>=', + val: search, + }); + } } }); }