diff options
author | Arne Juul <arnej@vespa.ai> | 2024-03-04 15:01:02 +0000 |
---|---|---|
committer | Arne Juul <arnej@vespa.ai> | 2024-03-04 15:23:55 +0000 |
commit | 1dcb06732ec51442217126b15ec254d2df7008df (patch) | |
tree | 46a24971efdba1a4e146b243548ccc540c2b421c /streamingvisitors/src | |
parent | 277650b0550123dfc541977a055c2e6ee39d5083 (diff) |
avoid re-using attributeField for sorting, would overwrite
Diffstat (limited to 'streamingvisitors/src')
-rw-r--r-- | streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp | 11 |
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(); |