You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2024/05/07 01:08:44 UTC

(superset) 01/01: fix: don't strip SQL comments

This is an automated email from the ASF dual-hosted git repository.

maximebeauchemin pushed a commit to branch strip_comments
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 302e0cde4aa495ca9ba170ecf18f24c07e5433d9
Author: Maxime Beauchemin <ma...@gmail.com>
AuthorDate: Mon May 6 16:47:33 2024 -0700

    fix: don't strip SQL comments
    
    Following up in the footsteps of https://github.com/apache/superset/pull/27725 as comments can be used as a way to pass the database engine hints, or for logging purposes.
---
 superset/db_engine_specs/base.py | 5 ++---
 superset/models/helpers.py       | 2 +-
 superset/sqllab/query_render.py  | 1 -
 3 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/superset/db_engine_specs/base.py b/superset/db_engine_specs/base.py
index 4ee4e4dc03..5b8a1deaba 100644
--- a/superset/db_engine_specs/base.py
+++ b/superset/db_engine_specs/base.py
@@ -1134,9 +1134,8 @@ class BaseEngineSpec:  # pylint: disable=too-many-public-methods
         cte = None
         sql_remainder = None
         sql = sql.strip(" \t\n;")
-        sql_statement = sqlparse.format(sql, strip_comments=True)
         query_limit: int | None = sql_parse.extract_top_from_query(
-            sql_statement, cls.top_keywords
+            sql, cls.top_keywords
         )
         if not limit:
             final_limit = query_limit
@@ -1145,7 +1144,7 @@ class BaseEngineSpec:  # pylint: disable=too-many-public-methods
         else:
             final_limit = limit
         if not cls.allows_cte_in_subquery:
-            cte, sql_remainder = sql_parse.get_cte_remainder_query(sql_statement)
+            cte, sql_remainder = sql_parse.get_cte_remainder_query(sql)
         if cte:
             str_statement = str(sql_remainder)
             cte = cte + "\n"
diff --git a/superset/models/helpers.py b/superset/models/helpers.py
index 100391086c..5845a400c2 100644
--- a/superset/models/helpers.py
+++ b/superset/models/helpers.py
@@ -1088,7 +1088,7 @@ class ExploreMixin:  # pylint: disable=too-many-public-methods
                 _("Virtual dataset query cannot consist of multiple statements")
             )
 
-        sql = script.statements[0].format(comments=False)
+        sql = script.statements[0].format()
         if not sql:
             raise QueryObjectValidationError(_("Virtual dataset query cannot be empty"))
         return sql
diff --git a/superset/sqllab/query_render.py b/superset/sqllab/query_render.py
index caf9a3cb2b..67bea2b1fb 100644
--- a/superset/sqllab/query_render.py
+++ b/superset/sqllab/query_render.py
@@ -60,7 +60,6 @@ class SqlQueryRenderImpl(SqlQueryRender):
 
             parsed_query = ParsedQuery(
                 query_model.sql,
-                strip_comments=True,
                 engine=query_model.database.db_engine_spec.engine,
             )
             rendered_query = sql_template_processor.process_template(