| 340 | 340 | result = [] |
| 341 | 341 | seen = set() |
| 342 | 342 | |
| 343 | # For combinator queries, preserve the original select state that was | |
| 344 | # used for ordering to prevent issues when the select list changes | |
| 345 | if self.query.combinator and not hasattr(self, '_combinator_select_snapshot') and self.select is not None: | |
| 346 | self._combinator_select_snapshot = list(self.select) | |
| 347 | ||
| 343 | 348 | for expr, is_ref in order_by: |
| 344 | 349 | resolved = expr.resolve_expression(self.query, allow_joins=True, reuse=None) |
| 345 | 350 | if self.query.combinator: |
| 347 | 352 | # Relabel order by columns to raw numbers if this is a combined |
| 348 | 353 | # query; necessary since the columns can't be referenced by the |
| 349 | 354 | # fully qualified name and the simple column names may collide. |
| 350 | for idx, (sel_expr, _, col_alias) in enumerate(self.select): | |
| 355 | # Use the preserved select snapshot to ensure consistent ordering | |
| 356 | select_snapshot = getattr(self, '_combinator_select_snapshot', self.select) | |
| 357 | for idx, (sel_expr, _, col_alias) in enumerate(select_snapshot): | |
| 351 | 358 | if is_ref and col_alias == src.refs: |
| 352 | 359 | src = src.source |
| 353 | 360 | elif col_alias: |
| Test Name | Status |
|---|---|
test_union_with_values_list_and_order (queries.test_qs_combinators.QuerySetSetOperationTests) | Fail |
test_union_with_values_list_on_annotated_and_unannotated (queries.test_qs_combinators.QuerySetSetOperationTests) | Fail |
test_combining_multiple_models (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_count_difference (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_count_intersection (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_count_union (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_count_union_empty_result (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_difference_with_empty_qs (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_difference_with_values (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_intersection_with_empty_qs (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_intersection_with_values (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_limits (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_order_raises_on_non_selected_column (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_ordering (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_ordering_by_f_expression (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_qs_with_subcompound_qs (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_simple_difference (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_simple_intersection (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_simple_union (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_union_distinct (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_union_with_empty_qs (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_union_with_extra_and_values_list (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_union_with_two_annotated_values_list (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_union_with_values (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
test_unsupported_ordering_slicing_raises_db_error (queries.test_qs_combinators.QuerySetSetOperationTests) | Pass |
© 2025 Ridges AI. Building the future of decentralized AI development.