From dc0bce6f1ca4361a9dcecb3f05ecb3d846a74bb6 Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Mon, 7 Sep 2026 14:22:56 +0200 Subject: [PATCH] adds missing filtering for non-null conceptColumn in SqlMatchingStats --- .../sql/conquery/SqlMatchingStats.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conquery/SqlMatchingStats.java b/backend/src/main/java/com/bakdata/conquery/sql/conquery/SqlMatchingStats.java index e35d7babd7..cd092fd470 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conquery/SqlMatchingStats.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conquery/SqlMatchingStats.java @@ -1,5 +1,9 @@ package com.bakdata.conquery.sql.conquery; +import java.sql.Date; +import java.util.*; +import jakarta.validation.constraints.NotBlank; + import com.bakdata.conquery.models.common.daterange.CDateRange; import com.bakdata.conquery.models.datasets.Column; import com.bakdata.conquery.models.datasets.concepts.ConceptElement; @@ -18,7 +22,6 @@ import com.google.common.collect.Sets; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; -import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; @@ -26,9 +29,6 @@ import org.jooq.Record; import org.jooq.exception.DataAccessException; -import java.sql.Date; -import java.util.*; - import static org.jooq.impl.DSL.*; @Slf4j @@ -263,6 +263,18 @@ private SelectJoinStep createMatchingStatsStatement(TreeConcep Field[] validityDates = collectValidityDateFields(connector); + Name tableName = name(connector.getResolvedTable().getName()); + + Condition condition = noCondition(); + + if (connector.getColumn() != null) { + condition = field(name(tableName, name(connector.getColumn().getColumn()))).isNotNull(); + } + + if (connector.getCondition() != null) { + condition = condition.and(connector.getCondition().convertToSqlCondition(context).condition()); + } + SelectConditionStep connectorTable = dslContext.select( TablePrimaryColumnUtil.findPrimaryColumn(connector.getResolvedTable(), defaultPrimaryColumn).as(PID_FIELD), @@ -270,11 +282,11 @@ private SelectJoinStep createMatchingStatsStatement(TreeConcep least(positiveInfinity, validityDates).as(LB_FIELD), greatest(negativeInfinity, validityDates).as(UB_FIELD), CONCEPT_ID_FIELD) - .from(table(name(connector.getResolvedTable().getName()))) + .from(table(tableName)) .leftJoin(idsTableName(concept.getName())) // join onto the concept-ids table to assign the most specific id. .on(getJoinConditions(concept, context)) - .where(connector.getCondition() != null ? connector.getCondition().convertToSqlCondition(context).condition() : noCondition()); + .where(condition); connectorTables.add(connectorTable); }