|
21 | 21 | _coerce_column, |
22 | 22 | extract_column_name, |
23 | 23 | extract_expression, |
| 24 | + extract_sql_object_expression, |
24 | 25 | parse_column_expression, |
25 | 26 | parse_condition_expression, |
26 | 27 | parse_order_expression, |
@@ -648,16 +649,7 @@ def _normalize_subquery_expression(self, subquery: Any, builder: "SQLBuilderProt |
648 | 649 | return subquery_expr |
649 | 650 |
|
650 | 651 | if has_expression_and_sql(subquery): |
651 | | - self._merge_parameters(subquery) |
652 | | - expression_attr = subquery.expression |
653 | | - if isinstance(expression_attr, exp.Expr): |
654 | | - return expression_attr |
655 | | - sql_text = subquery.sql |
656 | | - parsed_from_sql: exp.Expr | None = exp.maybe_parse(sql_text, dialect=builder.dialect) |
657 | | - if parsed_from_sql is None: |
658 | | - msg = f"Could not parse subquery SQL: {sql_text}" |
659 | | - raise SQLBuilderError(msg) |
660 | | - return parsed_from_sql |
| 652 | + return extract_sql_object_expression(subquery, builder=self) |
661 | 653 |
|
662 | 654 | if isinstance(subquery, exp.Expr): |
663 | 655 | return subquery |
@@ -779,15 +771,7 @@ def _normalize_condition_expression(expression: exp.Expr) -> exp.Expr: |
779 | 771 | return builder._parameterize_expression(_normalize_condition_expression(raw_expr)) |
780 | 772 | return parse_condition_expression(str(condition)) |
781 | 773 | if has_expression_and_sql(condition): |
782 | | - expression_attr = condition.expression |
783 | | - if isinstance(expression_attr, exp.Expr): |
784 | | - self._merge_parameters(condition) |
785 | | - return _normalize_condition_expression(expression_attr) |
786 | | - sql_text = getattr(condition, "raw_sql", None) |
787 | | - if sql_text is None: |
788 | | - sql_text = condition.sql |
789 | | - self._merge_parameters(condition) |
790 | | - return parse_condition_expression(sql_text) |
| 774 | + return _normalize_condition_expression(extract_sql_object_expression(condition, builder=self)) |
791 | 775 |
|
792 | 776 | msg = f"Unsupported condition type: {type(condition).__name__}" |
793 | 777 | raise SQLBuilderError(msg) |
|
0 commit comments