diff --git a/superset/utils/core.py b/superset/utils/core.py index 69c70f575..fa3462aa0 100644 --- a/superset/utils/core.py +++ b/superset/utils/core.py @@ -907,9 +907,7 @@ def merge_extra_filters(form_data: dict): if isinstance(existing_filters[filter_key], list): # Add filters for unequal lists # order doesn't matter - if sorted(existing_filters[filter_key]) != sorted( - filtr["val"] - ): + if set(existing_filters[filter_key]) != set(filtr["val"]): form_data["adhoc_filters"].append(to_adhoc(filtr)) else: form_data["adhoc_filters"].append(to_adhoc(filtr)) diff --git a/tests/utils_tests.py b/tests/utils_tests.py index 1df71a778..47f8b2973 100644 --- a/tests/utils_tests.py +++ b/tests/utils_tests.py @@ -301,6 +301,7 @@ class UtilsTestCase(unittest.TestCase): "extra_filters": [ {"col": "a", "op": "in", "val": "someval"}, {"col": "B", "op": "==", "val": ["c1", "c2"]}, + {"col": "c", "op": "in", "val": ["c1", 1, None]}, ], "adhoc_filters": [ { @@ -317,6 +318,13 @@ class UtilsTestCase(unittest.TestCase): "operator": "==", "subject": "B", }, + { + "clause": "WHERE", + "comparator": ["c1", 1, None], + "expressionType": "SIMPLE", + "operator": "in", + "subject": "c", + }, ], } expected = { @@ -335,6 +343,13 @@ class UtilsTestCase(unittest.TestCase): "operator": "==", "subject": "B", }, + { + "clause": "WHERE", + "comparator": ["c1", 1, None], + "expressionType": "SIMPLE", + "operator": "in", + "subject": "c", + }, ] } merge_extra_filters(form_data)