summaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
authorArne Juul <arnej@vespa.ai>2024-03-04 15:01:02 +0000
committerArne Juul <arnej@vespa.ai>2024-03-04 15:23:55 +0000
commit1dcb06732ec51442217126b15ec254d2df7008df (patch)
tree46a24971efdba1a4e146b243548ccc540c2b421c /streamingvisitors
parent277650b0550123dfc541977a055c2e6ee39d5083 (diff)
avoid re-using attributeField for sorting, would overwrite
Diffstat (limited to 'streamingvisitors')
-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..3085bc14bd9 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();