Skip to content

Commit

Permalink
Merge pull request #3410 from ingef/feature/is-of-interest-revisited
Browse files Browse the repository at this point in the history
Fix minor issues with isOfInterest
  • Loading branch information
awildturtok authored Apr 29, 2024
2 parents 1784b10 + aea73a5 commit 078ddab
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public boolean isOfInterest(Bucket bucket) {

@Override
public boolean isOfInterest(Entity entity) {
return true;
return child.isOfInterest(entity);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,16 @@ public boolean isOfInterest(Bucket bucket) {
return false;
}

if(!bucket.containsEntity(getEntity().getId())){
return false;
}

final CBlock cBlock = Objects.requireNonNull(preCurrentRow.get(bucket));

if(cBlock.isConceptIncluded(entity.getId(), requiredBits)) {
return super.isOfInterest(bucket);
}

return false;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public class FiltersNode extends QPNode {
private List<EventFilterNode<?>> eventFilters;

@Setter(AccessLevel.PRIVATE)
private List<AggregationResultFilterNode> aggregationFilters;
private List<AggregationResultFilterNode<?,?>> aggregationFilters;


@Setter(AccessLevel.PRIVATE)
Expand All @@ -51,10 +51,21 @@ public void init(Entity entity, QueryExecutionContext context) {

hit = false;

filters.forEach(child -> child.init(entity, context));
aggregators.forEach(child -> child.init(entity, context));
eventFilters.forEach(child -> child.init(entity, context));
eventDateAggregators.forEach(child -> child.init(entity, context));
for (FilterNode<?> filter : filters) {
filter.init(entity, context);
}

for (Aggregator<?> aggregator : aggregators) {
aggregator.init(entity, context);
}

for (EventFilterNode<?> eventFilter : eventFilters) {
eventFilter.init(entity, context);
}

for (Aggregator<CDateSet> child : eventDateAggregators) {
child.init(entity, context);
}
}

public static FiltersNode create(List<? extends FilterNode<?>> filters, List<Aggregator<?>> aggregators, List<Aggregator<CDateSet>> eventDateAggregators) {
Expand All @@ -63,14 +74,14 @@ public static FiltersNode create(List<? extends FilterNode<?>> filters, List<Agg
}

final List<EventFilterNode<?>> eventFilters = new ArrayList<>(filters.size());
final List<AggregationResultFilterNode> aggregationFilters = new ArrayList<>(filters.size());
final List<AggregationResultFilterNode<?,?>> aggregationFilters = new ArrayList<>(filters.size());

// Event and AggregationResultFilterNodes are used differently
for (FilterNode<?> filter : filters) {
if (filter instanceof EventFilterNode ef) {
if (filter instanceof EventFilterNode<?> ef) {
eventFilters.add(ef);
}
else if (filter instanceof AggregationResultFilterNode af){
else if (filter instanceof AggregationResultFilterNode<?,?> af){
aggregationFilters.add(af);
}
}
Expand All @@ -89,15 +100,27 @@ else if (filter instanceof AggregationResultFilterNode af){
@Override
public void nextTable(QueryExecutionContext ctx, Table currentTable) {
super.nextTable(ctx, currentTable);
filters.forEach(f -> f.nextTable(ctx, currentTable));
aggregators.forEach(a -> a.nextTable(ctx, currentTable));

for (FilterNode<?> f : filters) {
f.nextTable(ctx, currentTable);
}

for (Aggregator<?> a : aggregators) {
a.nextTable(ctx, currentTable);
}
}

@Override
public void nextBlock(Bucket bucket) {
super.nextBlock(bucket);
filters.forEach(f -> f.nextBlock(bucket));
aggregators.forEach(a -> a.nextBlock(bucket));

for (FilterNode<?> f : filters) {
f.nextBlock(bucket);
}

for (Aggregator<?> a : aggregators) {
a.nextBlock(bucket);
}
}

@Override
Expand All @@ -108,8 +131,12 @@ public final boolean acceptEvent(Bucket bucket, int event) {
}
}

aggregationFilters.forEach(f -> f.acceptEvent(bucket, event));
aggregators.forEach(a -> a.consumeEvent(bucket, event));
for (AggregationResultFilterNode<?,?> f : aggregationFilters) {
f.acceptEvent(bucket, event);
}
for (Aggregator<?> a : aggregators) {
a.consumeEvent(bucket, event);
}

hit = true;

Expand All @@ -118,7 +145,7 @@ public final boolean acceptEvent(Bucket bucket, int event) {

@Override
public boolean isContained() {
for (AggregationResultFilterNode f : aggregationFilters) {
for (AggregationResultFilterNode<?,?> f : aggregationFilters) {
if (!f.isContained()) {
return false;
}
Expand All @@ -136,12 +163,21 @@ public Collection<Aggregator<CDateSet>> getDateAggregators() {
public void collectRequiredTables(Set<Table> requiredTables) {
super.collectRequiredTables(requiredTables);

filters.forEach(f -> f.collectRequiredTables(requiredTables));
aggregators.forEach(a -> a.collectRequiredTables(requiredTables));
for (FilterNode<?> f : filters) {
f.collectRequiredTables(requiredTables);
}

for (Aggregator<?> a : aggregators) {
a.collectRequiredTables(requiredTables);
}
}

@Override
public boolean isOfInterest(Bucket bucket) {
if(!bucket.containsEntity(entity.getId())){
return false;
}

for (FilterNode<?> filter : filters) {
if (filter.isOfInterest(bucket)) {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public Collection<Aggregator<CDateSet>> getDateAggregators() {

@Override
public boolean isOfInterest(Bucket bucket) {
return true;
return bucket.containsEntity(entity.getId());
}

@Override
Expand Down

0 comments on commit 078ddab

Please sign in to comment.