From 4f07c808b29fbbc00fa87b0d1537d83e09f838e5 Mon Sep 17 00:00:00 2001 From: Jussi Saurio Date: Sat, 10 May 2025 15:59:30 +0300 Subject: [PATCH] Fix bug with constraint ordering introduced by refactor --- core/translate/optimizer/constraints.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/translate/optimizer/constraints.rs b/core/translate/optimizer/constraints.rs index 7ee88656c..f0e5d54bc 100644 --- a/core/translate/optimizer/constraints.rs +++ b/core/translate/optimizer/constraints.rs @@ -270,10 +270,11 @@ pub fn constraints_from_where_clause( } for candidate in cs.candidates.iter_mut() { + // Sort by index_col_pos, ascending -- index columns must be consumed in contiguous order. + candidate.refs.sort_by_key(|cref| cref.index_col_pos); // Deduplicate by position, keeping first occurrence (which will be equality if one exists, since the constraints vec is sorted that way) candidate.refs.dedup_by_key(|cref| cref.index_col_pos); - - // Truncate at first gap in positions -- index columns must be consumed in contiguous order. + // Truncate at first gap in positions -- again, index columns must be consumed in contiguous order. let mut last_pos = 0; let mut i = 0; for cref in candidate.refs.iter() {