Skip to content
Open
Show file tree
Hide file tree
Changes from 17 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions backend/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,11 @@
<artifactId>testcontainers-postgresql</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-clickhouse</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-solr</artifactId>
Expand All @@ -383,6 +388,12 @@
<artifactId>ngdbc</artifactId>
<version>2.17.10</version>
</dependency>
<dependency>
<groupId>com.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.9.8</version>
<classifier>all</classifier>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_dropwizard</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.jooq.Select;
import org.jooq.SelectConditionStep;
import org.jooq.Table;
import org.jooq.impl.DSL;

@RequiredArgsConstructor
public class SqlEntityResolver implements EntityResolver {
Expand Down Expand Up @@ -144,7 +145,8 @@ private Map<Integer, IdResolveInfo> resolveIds(String[][] values, List<Function<
Field<Integer> rowIndex = field(name(ROW_INDEX), Integer.class);
Field<String> externalPrimaryColumn = field(name(SharedAliases.PRIMARY_COLUMN.getAlias()), String.class);
Field<String> innerPrimaryColumn = field(name(idColumns.findPrimaryIdColumn().getField()), String.class);
Field<Boolean> isResolved = innerPrimaryColumn.isNotNull().as(IS_RESOLVED_ALIAS);
// Would prefer this to be `is not null`, but hana does not support that for fields
Field<Boolean> isResolved = case_().when(innerPrimaryColumn.isNull(), inline(false)).otherwise(inline(true)).as(IS_RESOLVED_ALIAS);

Table<Record> allIdsTable = table(name(idColumns.getTable()));

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.bakdata.conquery.models.config;

import com.bakdata.conquery.sql.conversion.dialect.DialectBundle;
import com.bakdata.conquery.sql.conversion.dialect.HanaDialectBundle;
import com.bakdata.conquery.sql.conversion.dialect.PostgreDialectBundle;
import com.bakdata.conquery.sql.conversion.dialect.clickhouse.ClickhouseDialectBundle;
import com.bakdata.conquery.sql.conversion.dialect.hana.HanaDialectBundle;
import com.bakdata.conquery.sql.conversion.dialect.pg.PostgreDialectBundle;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

Expand All @@ -15,13 +16,8 @@
@Getter
public enum Dialect {

/**
* Dialect for PostgreSQL database
*/
POSTGRESQL(new PostgreDialectBundle()),
/**
* Dialect for SAP HANA database
*/
CLICKHOUSE(new ClickhouseDialectBundle()),
HANA(new HanaDialectBundle());

private final DialectBundle dialectBundle;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ public Collection<ResultAsset> generateResultURLs(ManagedExecution exec, UriBuil
return Collections.emptyList();
}

if(singleExecution.getResultInfos() == null){
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das ist ein shortcircuit, in den logs ist es mir in den Tests aufgefallen für Formulare, dass das sonst eine Exception wirft. Ich würde mir das anschauen aber in einen separaten PR. Das ist schon länger ein Problem

return Collections.emptyList();
}

// Save id column count to later check if xlsx dimensions are feasible
idColumnsCount = exec.getConfig().getIdColumns().getIdResultInfos().size();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.bakdata.conquery.models.query.resultinfo.printers.PrinterFactory;
import com.bakdata.conquery.models.query.resultinfo.printers.common.OneToManyMappingPrinter;
import com.bakdata.conquery.models.types.ResultType;
import com.bakdata.conquery.sql.conversion.model.select.ClickhouseDistinctSelectConverter;
import com.bakdata.conquery.sql.conversion.model.select.DistinctSelectConverter;
import com.bakdata.conquery.sql.conversion.model.select.SelectConverter;
import com.bakdata.conquery.sql.execution.ResultSetProcessor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.bakdata.conquery.models.datasets.Table;
import com.bakdata.conquery.models.datasets.concepts.Concept;
import com.bakdata.conquery.models.datasets.concepts.Connector;
import com.bakdata.conquery.models.datasets.concepts.ValidityDate;
import com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeCache;
import com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeChild;
import com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeConnector;
Expand Down Expand Up @@ -95,7 +96,7 @@ public static CBlock createCBlock(ConceptTreeConnector connector, BucketId bucke
final int[][] mostSpecificChildren = calculateSpecificChildrenPaths(bucket, connector, bucketManager);
//TODO Object2LongMap
final Map<String, Long> includedConcepts = calculateConceptElementPathBloomFilter(bucket, mostSpecificChildren);
final Map<String, CDateRange> entitySpans = calculateEntityDateIndices(bucket);
final Map<String, CDateRange> entitySpans = calculateEntityDateIndices(bucket, connector);

final CBlock cBlock = new CBlock(bucketId, connector.getId(), includedConcepts, entitySpans, mostSpecificChildren);
return cBlock;
Expand Down Expand Up @@ -147,17 +148,10 @@ private static Map<String, Long> calculateConceptElementPathBloomFilter(Bucket b
*
* @implNote This is an unrolled implementation of {@link CDateRange#span(CDateRange)}.
*/
private static Map<String, CDateRange> calculateEntityDateIndices(Bucket bucket) {
private static Map<String, CDateRange> calculateEntityDateIndices(Bucket bucket, ConceptTreeConnector connector) {
final Map<String, CDateRange> spans = new HashMap<>();

final Table table = bucket.getTable().resolve();


for (Column column : table.getColumns()) {
if (!column.getType().isDateCompatible()) {
continue;
}

for (ValidityDate validityDate : connector.getValidityDates()) {
for (String entity : bucket.entities()) {
final int end = bucket.getEntityEnd(entity);

Expand All @@ -166,14 +160,14 @@ private static Map<String, CDateRange> calculateEntityDateIndices(Bucket bucket)
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;


for (int event = bucket.getEntityStart(entity); event < end; event++) {
if (!bucket.has(event, column)) {

final CDateRange range = validityDate.getValidityDate(event, bucket);

if(range == null) {
continue;
}

final CDateRange range = bucket.getAsDateRange(event, column);

final int minValue = range.getMinValue();

min = Math.min(min, minValue);
Expand All @@ -192,7 +186,6 @@ private static Map<String, CDateRange> calculateEntityDateIndices(Bucket bucket)
final CDateRange span = CDateRange.of(min, max);

spans.compute(entity, (ignored, current) -> current == null ? span : current.span(span));

}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.bakdata.conquery.models.query.resultinfo.printers.common;

import java.util.Collection;
import java.util.Objects;
import java.util.StringJoiner;

import com.bakdata.conquery.models.config.LocaleConfig;
Expand All @@ -24,7 +25,7 @@ public String apply(@NotNull Collection<T> f) {
continue;
}

joiner.add(listFormat.escapeListElement(elementPrinter.apply(obj).toString()));
joiner.add(listFormat.escapeListElement(Objects.toString(elementPrinter.apply(obj))));
}
return joiner.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@ private Selects getInvertSelects(QueryStep rowNumberStep, SqlIdColumns coalesced

Field<Date> rangeStart = DSL.coalesce(
QualifyingUtil.qualify(validityDate.getEnd(), ROWS_LEFT_TABLE_NAME),
functionProvider.toDateField(functionProvider.getMinDateExpression())
(functionProvider.getMinDateExpression())
).as(DateAggregationCte.RANGE_START);

Field<Date> rangeEnd = DSL.coalesce(
QualifyingUtil.qualify(validityDate.getStart(), ROWS_RIGHT_TABLE_NAME),
functionProvider.toDateField(functionProvider.getMaxDateExpression())
(functionProvider.getMaxDateExpression())
).as(DateAggregationCte.RANGE_END);

return Selects.builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ public QueryStep invertAggregatedIntervals(QueryStep baseStep, ConversionContext
Field<Object> maxDateRange = DSL.function(
"daterange",
Object.class,
this.functionProvider.toDateField(this.functionProvider.getMinDateExpression()),
this.functionProvider.toDateField(this.functionProvider.getMaxDateExpression()),
(this.functionProvider.getMinDateExpression()),
(this.functionProvider.getMaxDateExpression()),
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
(this.functionProvider.getMinDateExpression()),
(this.functionProvider.getMaxDateExpression()),
this.functionProvider.getMinDateExpression(),
this.functionProvider.getMaxDateExpression(),

DSL.inline("[]")
);

Expand Down
Loading
Loading