Raise exceptions

This commit is contained in:
Beto Dealmeida
2025-11-13 10:11:54 -05:00
parent 29256a40bc
commit add087cbfe

View File

@@ -398,22 +398,17 @@ class QueryObject: # pylint: disable=too-many-instance-attributes
sanitized_metrics.append(metric) sanitized_metrics.append(metric)
continue continue
if sql_expr := metric.get("sqlExpression"): if sql_expr := metric.get("sqlExpression"):
try: processed = self.datasource._process_select_expression(
processed = self.datasource._process_select_expression( expression=sql_expr,
expression=sql_expr, database_id=self.datasource.database_id,
database_id=self.datasource.database_id, engine=self.datasource.database.backend,
engine=self.datasource.database.backend, schema=self.datasource.schema,
schema=self.datasource.schema, template_processor=None,
template_processor=None, )
) if processed and processed != sql_expr:
if processed and processed != sql_expr: # Create new dict to avoid mutating shared references
# Create new dict to avoid mutating shared references sanitized_metrics.append({**metric, "sqlExpression": processed})
sanitized_metrics.append({**metric, "sqlExpression": processed}) else:
else:
sanitized_metrics.append(metric)
except Exception as ex: # pylint: disable=broad-except
# If processing fails, leave as-is and let execution handle it
logger.debug("Failed to sanitize metric SQL expression: %s", ex)
sanitized_metrics.append(metric) sanitized_metrics.append(metric)
else: else:
sanitized_metrics.append(metric) sanitized_metrics.append(metric)
@@ -436,24 +431,20 @@ class QueryObject: # pylint: disable=too-many-instance-attributes
if not (isinstance(col, dict) and col.get("sqlExpression")): if not (isinstance(col, dict) and col.get("sqlExpression")):
sanitized_orderby.append((col, ascending)) sanitized_orderby.append((col, ascending))
continue continue
try:
processed = self.datasource._process_orderby_expression( processed = self.datasource._process_orderby_expression(
expression=col["sqlExpression"], expression=col["sqlExpression"],
database_id=self.datasource.database_id, database_id=self.datasource.database_id,
engine=self.datasource.database.backend, engine=self.datasource.database.backend,
schema=self.datasource.schema, schema=self.datasource.schema,
template_processor=None, template_processor=None,
)
if processed and processed != col["sqlExpression"]:
# Create new dict to avoid mutating shared references
sanitized_orderby.append(
({**col, "sqlExpression": processed}, ascending) # type: ignore[arg-type]
) )
if processed and processed != col["sqlExpression"]: else:
# Create new dict to avoid mutating shared references
sanitized_orderby.append(
({**col, "sqlExpression": processed}, ascending) # type: ignore[arg-type]
)
else:
sanitized_orderby.append((col, ascending))
except Exception as ex: # pylint: disable=broad-except
# If processing fails, leave as-is
logger.debug("Failed to sanitize orderby SQL expression: %s", ex)
sanitized_orderby.append((col, ascending)) sanitized_orderby.append((col, ascending))
self.orderby = sanitized_orderby self.orderby = sanitized_orderby