bito-code-review[bot] commented on code in PR #36350:
URL: https://github.com/apache/superset/pull/36350#discussion_r2575299699
##########
superset/common/query_context_processor.py:
##########
@@ -116,7 +117,53 @@ def get_df_payload(
)
)
- query_result = self.get_query_result(query_obj)
+ # Create a persisted Query row for chart queries so we can
expose a
+ # client_id and allow cancellation later. This mirrors SQL
Lab's
+ # behavior; it is best-effort and only created if the
datasource has
+ # an underlying database.
+ query_model = None
+ try:
+ from uuid import uuid4
+
+ from superset.extensions import db as _db
+ from superset.models.sql_lab import Query as SqlLabQuery
+ from superset.utils.core import get_user_id
+
+ # Use client_id if provided by the client (e.g., frontend)
+ provided_client_id = (
+ self._query_context.cache_values.get("client_id")
+ if isinstance(self._query_context.cache_values, dict)
+ else None
+ )
+
+ if hasattr(self._qc_datasource, "database") and getattr(
+ self._qc_datasource, "database", None
+ ) is not None:
+ client_id = provided_client_id or uuid4().hex[:11]
+
+ # If a Query with this client_id already exists, reuse
it.
+ query_model = _db.session.query(SqlLabQuery).filter_by(
+ client_id=client_id
+ ).one_or_none()
+
+ if not query_model:
+ query_model = SqlLabQuery(
+ client_id=client_id,
+ database_id=self._qc_datasource.database.id,
+ user_id=get_user_id(),
+ )
+ _db.session.add(query_model)
+ _db.session.commit()
+ # Emit debug info to help trace lifecycle of the
persisted Query
+ try:
+ print(
+ f"[query_context_processor] Query model
created/reused: id={getattr(query_model, 'id', None)} "
+ f"client_id={getattr(query_model, 'client_id',
None)} database_id={getattr(query_model, 'database_id', None)}"
+ )
+ except Exception: # pragma: no cover - best-effort creation
+ logger.debug("Could not create Query model for chart
query", exc_info=True)
Review Comment:
<div>
<div id="suggestion">
<div id="issue"><b>Missing except or finally block after try</b></div>
<div id="fix">
The `try` block starting at line 125 is missing an `except` or `finally`
clause. Line 163 has a bare `except Exception` that is not properly indented as
part of the try-except structure. Add proper exception handling or move the
except block to the correct indentation level.
</div>
<details>
<summary>
<b>Code suggestion</b>
</summary>
<blockquote>Check the AI-generated fix before applying</blockquote>
<div id="code">
````suggestion
from uuid import uuid4
from superset.extensions import db as _db
from superset.models.sql_lab import Query as SqlLabQuery
from superset.utils.core import get_user_id
# Use client_id if provided by the client (e.g.,
frontend)
provided_client_id = (
self._query_context.cache_values.get("client_id")
if isinstance(self._query_context.cache_values, dict)
else None
)
if hasattr(self._qc_datasource, "database") and getattr(
self._qc_datasource, "database", None
) is not None:
client_id = provided_client_id or uuid4().hex[:11]
# If a Query with this client_id already exists,
reuse it.
query_model =
_db.session.query(SqlLabQuery).filter_by(
client_id=client_id
).one_or_none()
if not query_model:
query_model = SqlLabQuery(
client_id=client_id,
database_id=self._qc_datasource.database.id,
user_id=get_user_id(),
)
_db.session.add(query_model)
_db.session.commit()
# Emit debug info to help trace lifecycle of the
persisted Query
try:
print(
f"[query_context_processor] Query model
created/reused: id={getattr(query_model, 'id', None)} "
f"client_id={getattr(query_model,
'client_id', None)} database_id={getattr(query_model, 'database_id', None)}"
)
except Exception: # pragma: no cover - best-effort
creation
logger.debug("Could not create Query model for
chart query", exc_info=True)
except Exception: # pragma: no cover - best-effort creation
logger.debug("Could not create Query model for chart
query", exc_info=True)
````
</div>
</details>
</div>
<small><i>Code Review Run #e5c3d0</i></small>
</div>
---
Should Bito avoid suggestions like this for future reviews? (<a
href=https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules</a>)
- [ ] Yes, avoid them
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]