diff --git a/superset/db_engine_specs/base.py b/superset/db_engine_specs/base.py index 75d0953260c..3f123c1e394 100644 --- a/superset/db_engine_specs/base.py +++ b/superset/db_engine_specs/base.py @@ -1254,6 +1254,14 @@ class BaseEngineSpec: # pylint: disable=too-many-public-methods or parsed_query.is_show() ) + @classmethod + def is_select_query(cls, parsed_query: ParsedQuery) -> bool: + """ + Determine if the statement should be considered as SELECT statement. + Some query dialects do not contain "SELECT" word in queries (eg. Kusto) + """ + return parsed_query.is_select() + @classmethod @utils.memoized def get_column_spec( diff --git a/superset/sql_lab.py b/superset/sql_lab.py index 832962760be..30cec61c929 100644 --- a/superset/sql_lab.py +++ b/superset/sql_lab.py @@ -217,7 +217,7 @@ def execute_sql_statement( query.select_as_cta_used = True # Do not apply limit to the CTA queries when SQLLAB_CTAS_NO_LIMIT is set to true - if parsed_query.is_select() and not ( + if db_engine_spec.is_select_query(parsed_query) and not ( query.select_as_cta_used and SQLLAB_CTAS_NO_LIMIT ): if SQL_MAX_ROW and (not query.limit or query.limit > SQL_MAX_ROW):