mirror of
https://github.com/apache/superset.git
synced 2026-04-19 16:14:52 +00:00
Add check for calls to cache_key_wrapper (#8128)
* Add check for calls to cache_key_wrapper to avoid unavoidable compilation of query * Add fetch_values_predicate to check * Only check relevant attributes * Address nit
This commit is contained in:
committed by
Grace Guo
parent
6dc760a054
commit
1982b74af2
@@ -41,7 +41,7 @@ class DatabaseModelTestCase(SupersetTestCase):
|
||||
col = TableColumn(column_name="foo", type="STRING")
|
||||
self.assertEquals(col.is_time, False)
|
||||
|
||||
def test_cache_key_wrapper(self):
|
||||
def test_has_extra_cache_keys(self):
|
||||
query = "SELECT '{{ cache_key_wrapper('user_1') }}' as user"
|
||||
table = SqlaTable(sql=query, database=get_main_database())
|
||||
query_obj = {
|
||||
@@ -55,4 +55,22 @@ class DatabaseModelTestCase(SupersetTestCase):
|
||||
"extras": {"where": "(user != '{{ cache_key_wrapper('user_2') }}')"},
|
||||
}
|
||||
extra_cache_keys = table.get_extra_cache_keys(query_obj)
|
||||
self.assertTrue(table.has_extra_cache_keys(query_obj))
|
||||
self.assertListEqual(extra_cache_keys, ["user_1", "user_2"])
|
||||
|
||||
def test_has_no_extra_cache_keys(self):
|
||||
query = "SELECT 'abc' as user"
|
||||
table = SqlaTable(sql=query, database=get_main_database())
|
||||
query_obj = {
|
||||
"granularity": None,
|
||||
"from_dttm": None,
|
||||
"to_dttm": None,
|
||||
"groupby": ["user"],
|
||||
"metrics": [],
|
||||
"is_timeseries": False,
|
||||
"filter": [],
|
||||
"extras": {"where": "(user != 'abc')"},
|
||||
}
|
||||
extra_cache_keys = table.get_extra_cache_keys(query_obj)
|
||||
self.assertFalse(table.has_extra_cache_keys(query_obj))
|
||||
self.assertListEqual(extra_cache_keys, [])
|
||||
|
||||
Reference in New Issue
Block a user