aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLouis Chemineau <louis@chmn.me>2025-04-29 18:17:23 +0200
committerLouis Chemineau <louis@chmn.me>2025-04-29 18:17:23 +0200
commit5c73f2c37f04a0d63087af462e445c83471ee580 (patch)
treef582d891669bcfff1d76b29b641e5af9522d63ed
parentf26dc79480e75b0dc2f80c9dfc08fada0f6beb68 (diff)
downloadnextcloud-server-artonge/fix/forward_extra.tar.gz
nextcloud-server-artonge/fix/forward_extra.zip
fix: Forward 'extra' argument when optimizing queryartonge/fix/forward_extra
This allows DAV SEARCH queries containing optimizable comparisons on files metadata like: ```xml <d:or> <d:eq> <d:prop> <nc:metadata-photos-place /> </d:prop> <d:literal>La Valette-du-Var</d:literal> </d:eq> <d:eq> <d:prop> <nc:metadata-photos-place /> </d:prop> <d:literal>Évenos</d:literal> </d:eq> </d:or> ``` Signed-off-by: Louis Chemineau <louis@chmn.me>
-rw-r--r--lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php2
-rw-r--r--lib/private/Files/Search/QueryOptimizer/SplitLargeIn.php2
2 files changed, 2 insertions, 2 deletions
diff --git a/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php b/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php
index 3f2b36823ab..42d960cc22a 100644
--- a/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php
+++ b/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php
@@ -32,7 +32,7 @@ class OrEqualsToIn extends ReplacingOptimizerStep {
$value = $comparison->getValue();
return $value;
}, $group);
- $in = new SearchComparison(ISearchComparison::COMPARE_IN, $field, $values);
+ $in = new SearchComparison(ISearchComparison::COMPARE_IN, $field, $values, $group[0]->getExtra());
$pathEqHash = array_reduce($group, function ($pathEqHash, ISearchComparison $comparison) {
return $comparison->getQueryHint(ISearchComparison::HINT_PATH_EQ_HASH, true) && $pathEqHash;
}, true);
diff --git a/lib/private/Files/Search/QueryOptimizer/SplitLargeIn.php b/lib/private/Files/Search/QueryOptimizer/SplitLargeIn.php
index 5c7655b49c1..3e5258a715f 100644
--- a/lib/private/Files/Search/QueryOptimizer/SplitLargeIn.php
+++ b/lib/private/Files/Search/QueryOptimizer/SplitLargeIn.php
@@ -24,7 +24,7 @@ class SplitLargeIn extends ReplacingOptimizerStep {
) {
$chunks = array_chunk($operator->getValue(), 1000);
$chunkComparisons = array_map(function (array $values) use ($operator) {
- return new SearchComparison(ISearchComparison::COMPARE_IN, $operator->getField(), $values);
+ return new SearchComparison(ISearchComparison::COMPARE_IN, $operator->getField(), $values, $operator->getExtra());
}, $chunks);
$operator = new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_OR, $chunkComparisons);