summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-03-05 13:08:39 +0100
committerGitHub <noreply@github.com>2024-03-05 13:08:39 +0100
commit3a27b0dbb478cb1a563b4eb1c6b689426d02cb88 (patch)
tree720540f37485f091214bcf1d6c441be545b02968
parent89bb37c3c7049c79f7f68366aaa60009a7fd0317 (diff)
parentaab08efa6e1593328beab47068e25649ef2f0411 (diff)
Merge pull request #30474 from vespa-engine/arnej/handle-multiple-sortspecs-for-same-field
avoid re-using attributeField for sorting, would overwrite
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
index a68fe7c6aed..52dd1c52fc2 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
@@ -966,6 +966,15 @@ void SearchVisitor::setupAttributeVector(const FieldPath &fieldPath) {
}
}
+namespace {
+bool notContained(const std::vector<size_t> &sortList, size_t idx) {
+ for (size_t v : sortList) {
+ if (v == idx) return false;
+ }
+ return true;
+}
+}
+
void
SearchVisitor::setupAttributeVectorsForSorting(const search::common::SortSpec & sortList)
{
@@ -977,7 +986,7 @@ SearchVisitor::setupAttributeVectorsForSorting(const search::common::SortSpec &
if (attr->valid()) {
size_t index(_attributeFields.size());
for(size_t j(0); j < index; j++) {
- if (_attributeFields[j]._field == fid) {
+ if ((_attributeFields[j]._field == fid) && notContained(_sortList, j)) {
index = j;
_attributeFields[index]._ascending = sInfo._ascending;
_attributeFields[index]._converter = sInfo._converter.get();