diff options
Diffstat (limited to 'lib/private/Files/Search')
-rw-r--r-- | lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php | 1 | ||||
-rw-r--r-- | lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php | 8 |
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php b/lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php index 7f75731fe94..c573e3af3c0 100644 --- a/lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php +++ b/lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php @@ -26,5 +26,4 @@ class FlattenNestedBool extends QueryOptimizerStep { } parent::processOperator($operator); } - } diff --git a/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php b/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php index 550d85fbda0..d39eb2e29a9 100644 --- a/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php +++ b/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php @@ -29,7 +29,10 @@ class OrEqualsToIn extends ReplacingOptimizerStep { return $value; }, $group); $in = new SearchComparison(ISearchComparison::COMPARE_IN, $field, $values); - $in->setQueryHint(ISearchComparison::HINT_PATH_EQ_HASH, $group[0]->getQueryHint(ISearchComparison::HINT_PATH_EQ_HASH, true)); + $pathEqHash = array_reduce($group, function ($pathEqHash, ISearchComparison $comparison) { + return $comparison->getQueryHint(ISearchComparison::HINT_PATH_EQ_HASH, true) && $pathEqHash; + }, true); + $in->setQueryHint(ISearchComparison::HINT_PATH_EQ_HASH, $pathEqHash); return $in; } else { return $group[0]; @@ -57,8 +60,7 @@ class OrEqualsToIn extends ReplacingOptimizerStep { $result = []; foreach ($operators as $operator) { if ($operator instanceof ISearchComparison && $operator->getType() === ISearchComparison::COMPARE_EQUAL) { - $key = $operator->getField() . $operator->getQueryHint(ISearchComparison::HINT_PATH_EQ_HASH, true); - $result[$key][] = $operator; + $result[$operator->getField()][] = $operator; } else { $result[] = [$operator]; } |