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/12/06 18:18:24 UTC
(superset) branch remove-duplicate-process_sql_expression created (now 5bb9cf86aa)
This is an automated email from the ASF dual-hosted git repository.
beto pushed a change to branch remove-duplicate-process_sql_expression
in repository https://gitbox.apache.org/repos/asf/superset.git
at 5bb9cf86aa chore: remove duplicate process_sql_expression
This branch includes the following new commits:
new 5bb9cf86aa chore: remove duplicate process_sql_expression
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(superset) 01/01: chore: remove duplicate process_sql_expression
Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
beto pushed a commit to branch remove-duplicate-process_sql_expression
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 5bb9cf86aa87dbf9d8df19c632d11b5b1dd9f064
Author: Beto Dealmeida <ro...@dealmeida.net>
AuthorDate: Wed Dec 6 13:17:17 2023 -0500
chore: remove duplicate process_sql_expression
---
superset/connectors/sqla/models.py | 26 +++-----------------
superset/models/helpers.py | 50 +++++++++++++++++++-------------------
2 files changed, 28 insertions(+), 48 deletions(-)
diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py
index 598bc6741b..f67036b0b6 100644
--- a/superset/connectors/sqla/models.py
+++ b/superset/connectors/sqla/models.py
@@ -104,6 +104,7 @@ from superset.models.helpers import (
CertificationMixin,
ExploreMixin,
ImportExportMixin,
+ process_sql_expression,
QueryResult,
QueryStringExtended,
validate_adhoc_subquery,
@@ -1078,27 +1079,6 @@ sqlatable_user = Table(
)
-def _process_sql_expression(
- expression: str | None,
- database_id: int,
- schema: str,
- template_processor: BaseTemplateProcessor | None = None,
-) -> str | None:
- if template_processor and expression:
- expression = template_processor.process_template(expression)
- if expression:
- try:
- expression = validate_adhoc_subquery(
- expression,
- database_id,
- schema,
- )
- expression = sanitize_clause(expression)
- except (QueryClauseValidationException, SupersetSecurityException) as ex:
- raise QueryObjectValidationError(ex.message) from ex
- return expression
-
-
class SqlaTable(
Model, BaseDatasource, ExploreMixin
): # pylint: disable=too-many-public-methods
@@ -1533,7 +1513,7 @@ class SqlaTable(
sqla_column = column(column_name)
sqla_metric = self.sqla_aggregations[metric["aggregate"]](sqla_column)
elif expression_type == utils.AdhocMetricExpressionType.SQL:
- expression = _process_sql_expression(
+ expression = process_sql_expression(
expression=metric["sqlExpression"],
database_id=self.database_id,
schema=self.schema,
@@ -1563,7 +1543,7 @@ class SqlaTable(
:rtype: sqlalchemy.sql.column
"""
label = utils.get_column_name(col)
- expression = _process_sql_expression(
+ expression = process_sql_expression(
expression=col["sqlExpression"],
database_id=self.database_id,
schema=self.schema,
diff --git a/superset/models/helpers.py b/superset/models/helpers.py
index df3dd93488..35486d19a6 100644
--- a/superset/models/helpers.py
+++ b/superset/models/helpers.py
@@ -107,6 +107,27 @@ SERIES_LIMIT_SUBQ_ALIAS = "series_limit"
ADVANCED_DATA_TYPES = config["ADVANCED_DATA_TYPES"]
+def process_sql_expression(
+ expression: Optional[str],
+ database_id: int,
+ schema: str,
+ template_processor: Optional[BaseTemplateProcessor],
+) -> Optional[str]:
+ if template_processor and expression:
+ expression = template_processor.process_template(expression)
+ if expression:
+ try:
+ expression = validate_adhoc_subquery(
+ expression,
+ database_id,
+ schema,
+ )
+ expression = sanitize_clause(expression)
+ except (QueryClauseValidationException, SupersetSecurityException) as ex:
+ raise QueryObjectValidationError(ex.message) from ex
+ return expression
+
+
def validate_adhoc_subquery(
sql: str,
database_id: int,
@@ -838,27 +859,6 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
)
) from ex
- def _process_sql_expression(
- self,
- expression: Optional[str],
- database_id: int,
- schema: str,
- template_processor: Optional[BaseTemplateProcessor],
- ) -> Optional[str]:
- if template_processor and expression:
- expression = template_processor.process_template(expression)
- if expression:
- expression = validate_adhoc_subquery(
- expression,
- database_id,
- schema,
- )
- try:
- expression = sanitize_clause(expression)
- except QueryClauseValidationException as ex:
- raise QueryObjectValidationError(ex.message) from ex
- return expression
-
def make_sqla_column_compatible(
self, sqla_col: ColumnElement, label: Optional[str] = None
) -> ColumnElement:
@@ -1136,7 +1136,7 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
sqla_column = sa.column(column_name)
sqla_metric = self.sqla_aggregations[metric["aggregate"]](sqla_column)
elif expression_type == utils.AdhocMetricExpressionType.SQL:
- expression = self._process_sql_expression(
+ expression = process_sql_expression(
expression=metric["sqlExpression"],
database_id=self.database_id,
schema=self.schema,
@@ -1562,7 +1562,7 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
if isinstance(col, dict):
col = cast(AdhocMetric, col)
if col.get("sqlExpression"):
- col["sqlExpression"] = self._process_sql_expression(
+ col["sqlExpression"] = process_sql_expression(
expression=col["sqlExpression"],
database_id=self.database_id,
schema=self.schema,
@@ -1920,7 +1920,7 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
msg=ex.message,
)
) from ex
- where = self._process_sql_expression(
+ where = process_sql_expression(
expression=where,
database_id=self.database_id,
schema=self.schema,
@@ -1938,7 +1938,7 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
msg=ex.message,
)
) from ex
- having = self._process_sql_expression(
+ having = process_sql_expression(
expression=having,
database_id=self.database_id,
schema=self.schema,