While it is not very useful, our specification still says that we should return the values for fields requested multiple times also multiple times. Commit 237a43b added fetching of fields not requested but needed to evaluate the filter; to avoid overhead the list of fields was deduplicated, thereby breaking the said property. Restore it by only deduplicating and filtering the additional fields.
Signed-off-by: Klaus Aehlig <[email protected]> --- src/Ganeti/Query/Query.hs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Ganeti/Query/Query.hs b/src/Ganeti/Query/Query.hs index 4d8fc83..1d6f8fb 100644 --- a/src/Ganeti/Query/Query.hs +++ b/src/Ganeti/Query/Query.hs @@ -218,8 +218,9 @@ genericQuery fieldsMap collector nameFn configFn getFn cfg live fields qfilter wanted = runResultT $ do cfilter <- toError $ compileFilter fieldsMap qfilter - let allfields = ordNub $ fields ++ filterArguments qfilter - count = length $ ordNub fields + let allfields = (++) fields . filter (not . (`elem` fields)) + . ordNub $ filterArguments qfilter + count = length fields selected = getSelectedFields fieldsMap allfields (fdefs, fgetters, _) = unzip3 selected live' = live && needsLiveData fgetters -- 2.5.0.rc2.392.g76e840b
