From 528ea9cbb0a524ea4f1bbb5ec62e424df2ffa999 Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Thu, 4 Mar 2021 17:17:25 -0800 Subject: [PATCH] fix: SHOW is not DML (#13464) * fix: SHOW is not DML * Fix test --- superset/db_engine_specs/base.py | 6 +++++- tests/db_engine_specs/base_engine_spec_tests.py | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/superset/db_engine_specs/base.py b/superset/db_engine_specs/base.py index 8db57e96c..36ac21961 100644 --- a/superset/db_engine_specs/base.py +++ b/superset/db_engine_specs/base.py @@ -1096,4 +1096,8 @@ class BaseEngineSpec: # pylint: disable=too-many-public-methods @classmethod def is_readonly_query(cls, parsed_query: ParsedQuery) -> bool: """Pessimistic readonly, 100% sure statement won't mutate anything""" - return parsed_query.is_select() or parsed_query.is_explain() + return ( + parsed_query.is_select() + or parsed_query.is_explain() + or parsed_query.is_show() + ) diff --git a/tests/db_engine_specs/base_engine_spec_tests.py b/tests/db_engine_specs/base_engine_spec_tests.py index 57dd3cb2f..960a8d1c4 100644 --- a/tests/db_engine_specs/base_engine_spec_tests.py +++ b/tests/db_engine_specs/base_engine_spec_tests.py @@ -263,9 +263,11 @@ def test_is_readonly(): def is_readonly(sql: str) -> bool: return BaseEngineSpec.is_readonly_query(ParsedQuery(sql)) - assert not is_readonly("SHOW LOCKS test EXTENDED") + assert is_readonly("SHOW LOCKS test EXTENDED") assert not is_readonly("SET hivevar:desc='Legislators'") assert not is_readonly("UPDATE t1 SET col1 = NULL") assert is_readonly("EXPLAIN SELECT 1") assert is_readonly("SELECT 1") assert is_readonly("WITH (SELECT 1) bla SELECT * from bla") + assert is_readonly("SHOW CATALOGS") + assert is_readonly("SHOW TABLES")