use of com.bakdata.conquery.models.query.entity.Entity in project conquery by bakdata.
the class BucketManager method removeBucket.
public void removeBucket(Bucket bucket) {
storage.getAllCBlocks().stream().filter(cblock -> cblock.getBucket().equals(bucket)).forEach(this::removeCBlock);
for (int entityId : bucket.entities()) {
final Entity entity = entities.get(entityId);
if (entity == null) {
continue;
}
if (isEntityEmpty(entity)) {
entities.remove(entityId);
}
}
tableToBuckets.getOrDefault(bucket.getTable(), Int2ObjectMaps.emptyMap()).getOrDefault(bucket.getBucket(), Collections.emptyList()).remove(bucket);
storage.removeBucket(bucket.getId());
}
use of com.bakdata.conquery.models.query.entity.Entity in project conquery by bakdata.
the class TableExportQueryPlan method execute.
@Override
public Optional<MultilineEntityResult> execute(QueryExecutionContext ctx, Entity entity) {
Optional<? extends EntityResult> result = subPlan.execute(ctx, entity);
if (result.isEmpty() || tables.isEmpty()) {
return Optional.empty();
}
List<Object[]> results = new ArrayList<>();
final int totalColumns = positions.values().stream().mapToInt(i -> i).max().getAsInt() + 1;
for (TableExportDescription exportDescription : tables) {
for (Bucket bucket : ctx.getEntityBucketsForTable(entity, exportDescription.getTable())) {
int entityId = entity.getId();
if (!bucket.containsEntity(entityId)) {
continue;
}
int start = bucket.getEntityStart(entityId);
int end = bucket.getEntityEnd(entityId);
for (int event = start; event < end; event++) {
// Export Full-table if it has no validity date.
if (exportDescription.getValidityDateColumn() != null && !bucket.eventIsContainedIn(event, exportDescription.getValidityDateColumn(), CDateSet.create(dateRange))) {
continue;
}
Object[] entry = new Object[totalColumns];
for (Column column : exportDescription.getTable().getColumns()) {
if (!bucket.has(event, column)) {
continue;
}
if (column.equals(exportDescription.getValidityDateColumn())) {
entry[0] = List.of(bucket.getAsDateRange(event, column));
} else {
entry[positions.get(column)] = bucket.createScriptValue(event, column);
}
}
results.add(entry);
}
}
}
return Optional.of(new MultilineEntityResult(entity.getId(), results));
}
use of com.bakdata.conquery.models.query.entity.Entity in project conquery by bakdata.
the class FormQueryPlan method execute.
@Override
public Optional<MultilineEntityResult> execute(QueryExecutionContext ctx, Entity entity) {
if (!isOfInterest(entity)) {
// If the entity is not covered by the query generate a basic result line with constants but without features
return Optional.of(createResultForNotContained(entity, null));
}
List<Object[]> resultValues = new ArrayList<>(dateContexts.size());
for (DateContext dateContext : dateContexts) {
CDateSet dateRestriction = CDateSet.create(ctx.getDateRestriction());
dateRestriction.retainAll(dateContext.getDateRange());
// Reference the dates per sub-query, don't accumulate dates of all sub-queries
QueryExecutionContext innerContext = QueryUtils.determineDateAggregatorForContext(ctx, features::getValidityDateAggregator).withDateRestriction(dateRestriction);
features.init(ctx, entity);
Optional<SinglelineEntityResult> subResult = features.execute(innerContext, entity);
if (subResult.isEmpty()) {
resultValues.addAll(createResultForNotContained(entity, dateContext).listResultLines());
continue;
}
resultValues.addAll(ResultModifier.modify(subResult.get(), ResultModifier.existAggValuesSetterFor(features.getAggregators(), OptionalInt.of(0)).unaryAndThen(v -> addConstants(v, dateContext))).listResultLines());
}
return Optional.of(new MultilineEntityResult(entity.getId(), resultValues));
}
use of com.bakdata.conquery.models.query.entity.Entity in project conquery by bakdata.
the class FormQueryPlan method createResultForNotContained.
private MultilineEntityResult createResultForNotContained(Entity entity, DateContext dateContext) {
List<Object[]> result = new ArrayList<>();
result.add(new Object[features.getAggregatorSize()]);
return ResultModifier.modify(new MultilineEntityResult(entity.getId(), result), ResultModifier.existAggValuesSetterFor(getAggregators(), OptionalInt.of(0)).unaryAndThen(v -> addConstants(v, dateContext)));
}
use of com.bakdata.conquery.models.query.entity.Entity in project conquery by bakdata.
the class SerializationTests method executionQueryJobError.
@Test
public void executionQueryJobError() throws JSONException, IOException {
log.info("Beware, this test will print an ERROR message.");
ConqueryError error = new ConqueryError.ExecutionJobErrorWrapper(new Entity(5), new ConqueryError.UnknownError(null));
SerializationTestUtil.forType(ConqueryError.class).test(error);
}
Aggregations