summaryrefslogtreecommitdiffstats
path: root/common/datastorequery.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/datastorequery.cpp')
-rw-r--r--common/datastorequery.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/common/datastorequery.cpp b/common/datastorequery.cpp
index b77dfc9..276a10a 100644
--- a/common/datastorequery.cpp
+++ b/common/datastorequery.cpp
@@ -327,6 +327,10 @@ public:
327 mReducedValues.insert(reductionValueBa); 327 mReducedValues.insert(reductionValueBa);
328 auto reductionResult = reduceOnValue(reductionValue); 328 auto reductionResult = reduceOnValue(reductionValue);
329 329
330 //This can happen if we get a removal message from a filtered entity and all entites of the reduction are filtered.
331 if (reductionResult.selection.isEmpty()) {
332 return;
333 }
330 mSelectedValues.insert(reductionValueBa, reductionResult.selection); 334 mSelectedValues.insert(reductionValueBa, reductionResult.selection);
331 readEntity(reductionResult.selection, [&](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation operation) { 335 readEntity(reductionResult.selection, [&](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation operation) {
332 callback({entity, operation, reductionResult.aggregateValues, reductionResult.aggregateIds}); 336 callback({entity, operation, reductionResult.aggregateValues, reductionResult.aggregateIds});
@@ -345,11 +349,13 @@ public:
345 auto oldSelectionResult = mSelectedValues.take(reductionValueBa); 349 auto oldSelectionResult = mSelectedValues.take(reductionValueBa);
346 if (oldSelectionResult == selectionResult.selection) { 350 if (oldSelectionResult == selectionResult.selection) {
347 mSelectedValues.insert(reductionValueBa, selectionResult.selection); 351 mSelectedValues.insert(reductionValueBa, selectionResult.selection);
352 Q_ASSERT(!selectionResult.selection.isEmpty());
348 readEntity(selectionResult.selection, [&](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation) { 353 readEntity(selectionResult.selection, [&](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation) {
349 callback({entity, Sink::Operation_Modification, selectionResult.aggregateValues, selectionResult.aggregateIds}); 354 callback({entity, Sink::Operation_Modification, selectionResult.aggregateValues, selectionResult.aggregateIds});
350 }); 355 });
351 } else { 356 } else {
352 //remove old result 357 //remove old result
358 Q_ASSERT(!oldSelectionResult.isEmpty());
353 readEntity(oldSelectionResult, [&](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation) { 359 readEntity(oldSelectionResult, [&](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation) {
354 callback({entity, Sink::Operation_Removal}); 360 callback({entity, Sink::Operation_Removal});
355 }); 361 });
@@ -358,6 +364,7 @@ public:
358 if (!selectionResult.selection.isEmpty()) { 364 if (!selectionResult.selection.isEmpty()) {
359 //add new result 365 //add new result
360 mSelectedValues.insert(reductionValueBa, selectionResult.selection); 366 mSelectedValues.insert(reductionValueBa, selectionResult.selection);
367 Q_ASSERT(!selectionResult.selection.isEmpty());
361 readEntity(selectionResult.selection, [&](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation) { 368 readEntity(selectionResult.selection, [&](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation) {
362 callback({entity, Sink::Operation_Creation, selectionResult.aggregateValues, selectionResult.aggregateIds}); 369 callback({entity, Sink::Operation_Creation, selectionResult.aggregateValues, selectionResult.aggregateIds});
363 }); 370 });