Vitor-Avila commented on code in PR #33542:
URL: https://github.com/apache/superset/pull/33542#discussion_r2116046589


##########
superset/sql_lab.py:
##########
@@ -434,67 +452,52 @@ def execute_sql_statements(  # noqa: C901
     db_engine_spec.patch()
 
     if database.allow_run_async and not results_backend:
-        raise SupersetErrorException(
-            SupersetError(
-                message=__("Results backend is not configured."),
-                
error_type=SupersetErrorType.RESULTS_BACKEND_NOT_CONFIGURED_ERROR,
-                level=ErrorLevel.ERROR,
-            )
-        )
-
-    # Breaking down into multiple statements
-    parsed_query = ParsedQuery(
-        rendered_query,
-        engine=db_engine_spec.engine,
-    )
-    if not db_engine_spec.run_multiple_statements_as_one:
-        statements = parsed_query.get_statements()
-        logger.info(
-            "Query %s: Executing %i statement(s)", str(query_id), 
len(statements)
-        )
-    else:
-        statements = [rendered_query]
-        logger.info("Query %s: Executing query as a single statement", 
str(query_id))
+        raise SupersetResultsBackendNotConfigureException()
 
     logger.info("Query %s: Set query to 'running'", str(query_id))
     query.status = QueryStatus.RUNNING
     query.start_running_time = now_as_float()
     db.session.commit()
 
-    # Should we create a table or view from the select?
-    if (
-        query.select_as_cta
-        and query.ctas_method == CtasMethod.TABLE
-        and not parsed_query.is_valid_ctas()
-    ):
-        raise SupersetErrorException(
-            SupersetError(
-                message=__(
-                    "CTAS (create table as select) can only be run with a 
query where "
-                    "the last statement is a SELECT. Please make sure your 
query has "
-                    "a SELECT as its last statement. Then, try running your 
query "
-                    "again."
-                ),
-                error_type=SupersetErrorType.INVALID_CTAS_QUERY_ERROR,
-                level=ErrorLevel.ERROR,
-            )
-        )
-    if (
-        query.select_as_cta
-        and query.ctas_method == CtasMethod.VIEW
-        and not parsed_query.is_valid_cvas()
-    ):
-        raise SupersetErrorException(
-            SupersetError(
-                message=__(
-                    "CVAS (create view as select) can only be run with a query 
with "
-                    "a single SELECT statement. Please make sure your query 
has only "
-                    "a SELECT statement. Then, try running your query again."
-                ),
-                error_type=SupersetErrorType.INVALID_CVAS_QUERY_ERROR,
-                level=ErrorLevel.ERROR,
-            )
+    parsed_script = SQLScript(rendered_query, engine=db_engine_spec.engine)
+
+    if parsed_script.has_mutation() and not database.allow_dml:
+        raise SupersetDMLNotAllowedException()

Review Comment:
   Previously we would validate statement by statement if they were DML. Now 
we're validating before splitting statements -- does that work properly with 
`sqlglot`?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@superset.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@superset.apache.org
For additional commands, e-mail: notifications-h...@superset.apache.org

Reply via email to