diff --git a/src/select/expr_term.rs b/src/select/expr_term.rs index 0130913e..9e2746c4 100644 --- a/src/select/expr_term.rs +++ b/src/select/expr_term.rs @@ -107,6 +107,7 @@ impl<'a> ExprTerm<'a> { for result_value in &ret { if map_value.eq(*result_value) { tmp.push(*rel_value); + break; } } } diff --git a/tests/array_filter.rs b/tests/array_filter.rs index 7f1cf332..d9ede8cc 100644 --- a/tests/array_filter.rs +++ b/tests/array_filter.rs @@ -261,4 +261,42 @@ fn bugs50() { json!({"f": [1,2,3]}), json!([]) ); -} \ No newline at end of file +} + +#[test] +fn bugs92_duplicate_result_similar_indernal_values() { + setup(); + + select_and_then_compare( + "$[?(@.name.first=='A')]", + json!([ + { + "name":{ + "first":"A" + } + }, + { + "name":{ + "first":"A" + } + }, + { + "name":{ + "first":"B" + } + } + ]), + json!([ + { + "name":{ + "first":"A" + } + }, + { + "name":{ + "first":"A" + } + } + ]), + ); +}