You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by vi...@apache.org on 2020/11/04 06:43:18 UTC
[incubator-superset] 02/02: fix(sqla): allow 'unknown' type queries
in explore view (#11365)
This is an automated email from the ASF dual-hosted git repository.
villebro pushed a commit to branch 0.38
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
commit 34bbc77cec451674ddaa546750c3c96917e969e5
Author: serenajiang <se...@airbnb.com>
AuthorDate: Wed Oct 21 10:24:52 2020 -0700
fix(sqla): allow 'unknown' type queries in explore view (#11365)
---
superset/connectors/sqla/models.py | 3 ++-
superset/sql_parse.py | 3 +++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py
index 934da17..bf0384b 100644
--- a/superset/connectors/sqla/models.py
+++ b/superset/connectors/sqla/models.py
@@ -760,7 +760,8 @@ class SqlaTable( # pylint: disable=too-many-public-methods,too-many-instance-at
raise QueryObjectValidationError(
_("Virtual dataset query cannot consist of multiple statements")
)
- if not ParsedQuery(from_sql).is_readonly():
+ parsed_query = ParsedQuery(from_sql)
+ if not (parsed_query.is_unknown() or parsed_query.is_readonly()):
raise QueryObjectValidationError(
_("Virtual dataset query must be read-only")
)
diff --git a/superset/sql_parse.py b/superset/sql_parse.py
index e532a5e..0bc20c1 100644
--- a/superset/sql_parse.py
+++ b/superset/sql_parse.py
@@ -113,6 +113,9 @@ class ParsedQuery:
def is_explain(self) -> bool:
return self.stripped().upper().startswith("EXPLAIN")
+ def is_unknown(self) -> bool:
+ return self._parsed[0].get_type() == "UNKNOWN"
+
def is_readonly(self) -> bool:
"""Pessimistic readonly, 100% sure statement won't mutate anything"""
return self.is_select() or self.is_explain()