This is an automated email from the ASF dual-hosted git repository.

amitmiran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 665459f  feat(native-filters): add null option to value filter (#15419)
665459f is described below

commit 665459fbcaca3d97f101e403481ba5c3c3d518ae
Author: Mironov Danil <[email protected]>
AuthorDate: Thu Jul 1 16:06:10 2021 +0300

    feat(native-filters): add null option to value filter (#15419)
    
    * fix: add null var to native filter (#15291)
    
    * small fix
    
    * refactoring code
    
    * restructure the JS code
    
    * update testcase
---
 .../filters/components/Select/buildQuery.test.ts   |  2 +-
 .../src/filters/components/Select/buildQuery.ts    | 47 +++++++++++-----------
 2 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/superset-frontend/src/filters/components/Select/buildQuery.test.ts 
b/superset-frontend/src/filters/components/Select/buildQuery.test.ts
index 133e49f..08b7037 100644
--- a/superset-frontend/src/filters/components/Select/buildQuery.test.ts
+++ b/superset-frontend/src/filters/components/Select/buildQuery.test.ts
@@ -42,7 +42,7 @@ describe('Select buildQuery', () => {
     expect(queryContext.queries.length).toEqual(1);
     const [query] = queryContext.queries;
     expect(query.groupby).toEqual(['my_col']);
-    expect(query.filters).toEqual([{ col: 'my_col', op: 'IS NOT NULL' }]);
+    expect(query.filters).toEqual([]);
     expect(query.metrics).toEqual([]);
     expect(query.orderby).toEqual([]);
   });
diff --git a/superset-frontend/src/filters/components/Select/buildQuery.ts 
b/superset-frontend/src/filters/components/Select/buildQuery.ts
index f85be46..a66a855 100644
--- a/superset-frontend/src/filters/components/Select/buildQuery.ts
+++ b/superset-frontend/src/filters/components/Select/buildQuery.ts
@@ -33,29 +33,28 @@ const buildQuery: 
BuildQuery<PluginFilterSelectQueryFormData> = (
   const { sortAscending, sortMetric } = { ...DEFAULT_FORM_DATA, ...formData };
   return buildQueryContext(formData, baseQueryObject => {
     const { columns = [], filters = [] } = baseQueryObject;
-    const extra_filters: QueryObjectFilterClause[] = columns.map(column => {
-      if (search && coltypeMap[column] === GenericDataType.STRING) {
-        return {
-          col: column,
-          op: 'ILIKE',
-          val: `%${search}%`,
-        };
-      }
-      if (
-        search &&
-        coltypeMap[column] === GenericDataType.NUMERIC &&
-        !Number.isNaN(Number(search))
-      ) {
-        // for numeric columns we apply a >= where clause
-        return {
-          col: column,
-          op: '>=',
-          val: Number(search),
-        };
-      }
-      // if no search is defined, make sure the col value is not null
-      return { col: column, op: 'IS NOT NULL' };
-    });
+    const extraFilters: QueryObjectFilterClause[] = [];
+    if (search) {
+      columns.forEach(column => {
+        if (coltypeMap[column] === GenericDataType.STRING) {
+          extraFilters.push({
+            col: column,
+            op: 'ILIKE',
+            val: `%${search}%`,
+          });
+        } else if (
+          coltypeMap[column] === GenericDataType.NUMERIC &&
+          !Number.isNaN(Number(search))
+        ) {
+          // for numeric columns we apply a >= where clause
+          extraFilters.push({
+            col: column,
+            op: '>=',
+            val: Number(search),
+          });
+        }
+      });
+    }
 
     const sortColumns = sortMetric ? [sortMetric] : columns;
     const query: QueryObject[] = [
@@ -63,7 +62,7 @@ const buildQuery: BuildQuery<PluginFilterSelectQueryFormData> 
= (
         ...baseQueryObject,
         groupby: columns,
         metrics: sortMetric ? [sortMetric] : [],
-        filters: filters.concat(extra_filters),
+        filters: filters.concat(extraFilters),
         orderby:
           sortMetric || sortAscending !== undefined
             ? sortColumns.map(column => [column, !!sortAscending])

Reply via email to