aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Files/Search
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Files/Search')
-rw-r--r--lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php1
-rw-r--r--lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php8
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];
}