You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by be...@apache.org on 2023/10/03 19:40:37 UTC
[superset] 01/01: Fix lint and tests
This is an automated email from the ASF dual-hosted git repository.
beto pushed a commit to branch robust_has_table_query
in repository https://gitbox.apache.org/repos/asf/superset.git
commit be6f7dfa99836486edbb9ebb268f517e9a02243f
Author: Beto Dealmeida <ro...@dealmeida.net>
AuthorDate: Thu May 11 17:26:22 2023 -0700
Fix lint and tests
---
superset/connectors/sqla/models.py | 4 +---
superset/models/helpers.py | 10 +++++-----
superset/sql_parse.py | 2 +-
tests/unit_tests/sql_parse_tests.py | 4 ----
4 files changed, 7 insertions(+), 13 deletions(-)
diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py
index b0dc302920..0323fee995 100644
--- a/superset/connectors/sqla/models.py
+++ b/superset/connectors/sqla/models.py
@@ -82,10 +82,8 @@ from superset.db_engine_specs.base import BaseEngineSpec, TimestampExpression
from superset.exceptions import (
ColumnNotFoundException,
DatasetInvalidPermissionEvaluationException,
- QueryClauseValidationException,
QueryObjectValidationError,
SupersetGenericDBErrorException,
- SupersetSecurityException,
)
from superset.jinja_context import (
BaseTemplateProcessor,
@@ -102,7 +100,7 @@ from superset.models.helpers import (
QueryResult,
QueryStringExtended,
)
-from superset.sql_parse import ParsedQuery, sanitize_clause
+from superset.sql_parse import ParsedQuery
from superset.superset_typing import (
AdhocColumn,
AdhocMetric,
diff --git a/superset/models/helpers.py b/superset/models/helpers.py
index 7de361bad3..ac0528bd98 100644
--- a/superset/models/helpers.py
+++ b/superset/models/helpers.py
@@ -118,12 +118,12 @@ def validate_adhoc_subquery(
:raise SupersetSecurityException if sql contains sub-queries or
nested sub-queries with table
"""
- # build a proper SQL query from the expression
- sql = f"SELECT {expression}"
-
statements = []
- for statement in sqlparse.parse(sql):
- if has_table_query(str(statement), sqla_dialect):
+ for statement in sqlparse.parse(expression):
+ # build a proper SQL query from the expression for sqloxide
+ sql = f"SELECT {expression}"
+
+ if has_table_query(sql, sqla_dialect):
if not is_feature_enabled("ALLOW_ADHOC_SUBQUERY"):
raise SupersetSecurityException(
SupersetError(
diff --git a/superset/sql_parse.py b/superset/sql_parse.py
index e7fec3756f..4d1e9d71a0 100644
--- a/superset/sql_parse.py
+++ b/superset/sql_parse.py
@@ -791,7 +791,7 @@ def extract_table_references(
sql_text = RE_JINJA_VAR.sub("abc", sql_text)
try:
tree = parse_sql(sql_text, dialect=sqloxide_dialect)
- except Exception as ex: # pylint: disable=broad-except
+ except Exception as ex:
if show_warning:
logger.warning(
"\nUnable to parse query with sqloxide:\n%s\n%s", sql_text, ex
diff --git a/tests/unit_tests/sql_parse_tests.py b/tests/unit_tests/sql_parse_tests.py
index 69440319ba..9ed919ddf0 100644
--- a/tests/unit_tests/sql_parse_tests.py
+++ b/tests/unit_tests/sql_parse_tests.py
@@ -1618,8 +1618,6 @@ def test_extract_table_references(mocker: MockerFixture) -> None:
Table(table="table", schema=None, catalog=None),
Table(table="other_table", schema=None, catalog=None),
}
-<<<<<<< HEAD
- logger.warning.assert_not_called()
def test_is_select() -> None:
@@ -1637,5 +1635,3 @@ WITH t AS (
)
SELECT * FROM t"""
).is_select()
-=======
->>>>>>> 748876648e (feat: robust(er) adhoc query validation)