From ab5d4b08e91dc9c843b71fac1b5ef7553a8f1ce0 Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Mon, 2 Jun 2025 15:09:15 +0200 Subject: [PATCH 01/32] adds warning to CachedStore, if there are duplicate keys (This can be due to seriliaziation errors - not misues of the underlying Store) --- .../io/storage/xodus/stores/CachedStore.java | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/io/storage/xodus/stores/CachedStore.java b/backend/src/main/java/com/bakdata/conquery/io/storage/xodus/stores/CachedStore.java index 744a2d1ff4..bab21b48c6 100644 --- a/backend/src/main/java/com/bakdata/conquery/io/storage/xodus/stores/CachedStore.java +++ b/backend/src/main/java/com/bakdata/conquery/io/storage/xodus/stores/CachedStore.java @@ -29,8 +29,6 @@ @ToString(onlyExplicitlyIncluded = true) public class CachedStore implements Store { - private static final ProgressBar PROGRESS_BAR = new ProgressBar(0); - private final LoadingCache cache; /** @@ -120,41 +118,36 @@ public void loadKeys() { log.info("BEGIN loading keys {}", this); - store.getAllKeys().forEach(keys::add); + store.getAllKeys().forEach(key -> { + boolean hasPrior = !keys.add(key); + if (hasPrior) { + log.warn("Multiple keys deserialize to `{}`", key); + } + }); log.debug("DONE loading keys from {} in {}", this, stopwatch); } - @Override - public Stream getAllKeys() { - return (Stream) Arrays.stream(keys.toArray()); - } - @Override public void loadData() { final LongAdder totalSize = new LongAdder(); final int count = count(); - final ProgressBar bar; - - if (count > 100) { - synchronized (PROGRESS_BAR) { - bar = PROGRESS_BAR; - bar.addMaxValue(count); - } - } - else { - bar = null; - } + final ProgressBar bar = count > 100 ? new ProgressBar(100) : null; log.info("BEGIN loading store {}", this); - final Stopwatch timer = Stopwatch.createStarted(); + final Set dupes = new HashSet<>(); + store.forEach((key, value, size) -> { try { totalSize.add(size); added(key, value); + + if (!dupes.add(key)) { + log.warn("Multiple Keys deserialize to `{}`", key); + } } catch (RuntimeException e) { if (e.getCause() != null && e.getCause() instanceof IdReferenceResolvingException) { @@ -183,6 +176,11 @@ public Stream getAll() { return getAllKeys().map(cache::get); } + @Override + public Stream getAllKeys() { + return (Stream) Arrays.stream(keys.toArray()); + } + @Override public void clear() { store.clear(); From ce371b60d9d1a60fb37e07b544467b563f5bbf57 Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Mon, 2 Jun 2025 17:00:03 +0200 Subject: [PATCH 02/32] Fixes importing for FilterTests --- .../apiv1/query/ArrayConceptQuery.java | 2 + .../common/DateRangeStringPrinter.java | 4 + .../conquery/sql/conversion/Conversions.java | 23 ++- .../integration/ConqueryIntegrationTests.java | 2 +- .../integration/json/SqlTestDataImporter.java | 31 +++- .../integration/sql/CsvTableImporter.java | 92 ++++++---- ...RESTRICTION_WITHOUT_VALIDITYDATE.test.json | 166 +++++++++--------- 7 files changed, 191 insertions(+), 129 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/apiv1/query/ArrayConceptQuery.java b/backend/src/main/java/com/bakdata/conquery/apiv1/query/ArrayConceptQuery.java index 54165ed347..7cdceff32b 100644 --- a/backend/src/main/java/com/bakdata/conquery/apiv1/query/ArrayConceptQuery.java +++ b/backend/src/main/java/com/bakdata/conquery/apiv1/query/ArrayConceptQuery.java @@ -26,6 +26,7 @@ import lombok.NoArgsConstructor; import lombok.NonNull; import lombok.Setter; +import lombok.ToString; import lombok.extern.slf4j.Slf4j; /** @@ -38,6 +39,7 @@ @CPSType(id = "ARRAY_CONCEPT_QUERY", base = QueryDescription.class) @Slf4j @NoArgsConstructor(access = AccessLevel.PRIVATE, onConstructor_ = {@JsonCreator}) +@ToString public class ArrayConceptQuery extends Query { @NotEmpty diff --git a/backend/src/main/java/com/bakdata/conquery/models/query/resultinfo/printers/common/DateRangeStringPrinter.java b/backend/src/main/java/com/bakdata/conquery/models/query/resultinfo/printers/common/DateRangeStringPrinter.java index 8c4003ff5c..74c474d0b1 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/query/resultinfo/printers/common/DateRangeStringPrinter.java +++ b/backend/src/main/java/com/bakdata/conquery/models/query/resultinfo/printers/common/DateRangeStringPrinter.java @@ -20,6 +20,10 @@ public DateRangeStringPrinter(PrintSettings printSettings, String negativeInf, S @Override public String apply(@NotNull List f) { + if (f.isEmpty()) { + return null; + } + Preconditions.checkArgument(f.size() == 2, "Expected a list with 2 elements, one min, one max. The list was: %s ", f); final Integer min = f.get(0); diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/Conversions.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/Conversions.java index d8c64532bb..50116dea6e 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/Conversions.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/Conversions.java @@ -1,8 +1,8 @@ package com.bakdata.conquery.sql.conversion; import java.util.List; +import java.util.Optional; -import com.google.common.collect.MoreCollectors; import lombok.Getter; /** @@ -23,9 +23,24 @@ protected Conversions(List> converters) { } public R convert(C node, X context) { - return converters.stream() - .flatMap(converter -> converter.tryConvert(node, context).stream()) - .collect(MoreCollectors.onlyElement()); + R converted = null; + for (Converter converter : converters) { + Optional maybeConverted = converter.tryConvert(node, context); + if (maybeConverted.isPresent()) { + if (converted == null) { + converted = maybeConverted.get(); + } + else { + throw new IllegalStateException("Multiple Converters for %s".formatted(node)); + } + } + } + + if (converted == null) { + throw new IllegalStateException("No converter found for %s".formatted(node)); + } + + return converted; } } diff --git a/backend/src/test/java/com/bakdata/conquery/integration/ConqueryIntegrationTests.java b/backend/src/test/java/com/bakdata/conquery/integration/ConqueryIntegrationTests.java index 89ddb15661..023b056d21 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/ConqueryIntegrationTests.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/ConqueryIntegrationTests.java @@ -13,7 +13,7 @@ public class ConqueryIntegrationTests extends IntegrationTests { - public static final String DEFAULT_SQL_TEST_ROOT = "tests/sql/"; + public static final String DEFAULT_SQL_TEST_ROOT = "tests/"; public static final TestDataImporter WORKER_TEST_DATA_IMPORTER = new WorkerTestDataImporter(); public ConqueryIntegrationTests() { diff --git a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java index 90211c9b65..645efbe8de 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java @@ -1,11 +1,17 @@ package com.bakdata.conquery.integration.json; +import static com.bakdata.conquery.integration.common.LoadingUtil.importInternToExternMappers; + import java.util.Collection; +import java.util.Collections; +import com.bakdata.conquery.integration.common.LoadingUtil; import com.bakdata.conquery.integration.common.RequiredData; import com.bakdata.conquery.integration.common.RequiredTable; import com.bakdata.conquery.integration.json.filter.FilterTest; import com.bakdata.conquery.integration.sql.CsvTableImporter; +import com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeConnector; +import com.bakdata.conquery.models.identifiable.ids.specific.TableId; import com.bakdata.conquery.util.support.StandaloneSupport; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; @@ -45,8 +51,29 @@ public void importFormTestData(StandaloneSupport support, FormTest test) throws } @Override - public void importFilterTestData(StandaloneSupport support, FilterTest filterTest) { - throw new UnsupportedOperationException("Not implemented yet."); + public void importFilterTestData(StandaloneSupport support, FilterTest test) throws Exception { + RequiredData content = test.getContent(); + + importInternToExternMappers(support, test.getInternToExternMappings()); + importSearchIndexes(support, test.getSearchIndices()); + importTables(support, content.getTables(), content.isAutoConcept()); + + test.setConnector(ConqueryTestSpec.parseSubTree( + support, + test.getRawConnector(), + ConceptTreeConnector.class, + conn -> { + conn.setTable(new TableId(support.getDataset().getDataset(), FilterTest.TABLE_NAME)); + conn.setConcept(test.getConcept()); + }, + true + ) + ); + test.getConcept().setConnectors(Collections.singletonList((ConceptTreeConnector) test.getConnector())); + + waitUntilDone(support, () -> LoadingUtil.uploadConcept(support, support.getDataset(), test.getConcept())); + importTableContents(support, content.getTables()); + } @Override diff --git a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java index 1fe3b0662f..5117cccf8d 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java @@ -1,5 +1,15 @@ package com.bakdata.conquery.integration.sql; +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.Date; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + import com.bakdata.conquery.integration.common.RequiredColumn; import com.bakdata.conquery.integration.common.RequiredTable; import com.bakdata.conquery.integration.common.ResourceFile; @@ -12,15 +22,6 @@ import com.bakdata.conquery.models.preproc.parser.specific.DateRangeParser; import com.google.common.base.Strings; import com.univocity.parsers.csv.CsvParser; -import java.math.BigDecimal; -import java.sql.Connection; -import java.sql.Date; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.jooq.DSLContext; @@ -47,7 +48,7 @@ public class CsvTableImporter { public CsvTableImporter(DSLContext dslContext, TestSqlDialect testSqlDialect, DatabaseConfig databaseConfig) { this.dslContext = dslContext; this.dateRangeParser = new DateRangeParser(new ConqueryConfig()); - this.csvReader = new CSVConfig().withSkipHeader(true).createParser(); + this.csvReader = new CSVConfig().withParseHeaders(true).createParser(); this.testSqlDialect = testSqlDialect; this.databaseConfig = databaseConfig; } @@ -73,20 +74,39 @@ public void importTableIntoDatabase(RequiredTable requiredTable) { }); } - private void insertValuesIntoTable(Table table, List> columns, List content, Statement statement) throws SQLException { - // encountered empty new line - if (content.isEmpty()) { - return; - } - log.debug("Inserting into table: {}", content); - testSqlDialect.getTestFunctionProvider().insertValuesIntoTable(table, columns, content, statement, dslContext); + private List getAllRequiredColumns(RequiredTable table) { + ArrayList requiredColumns = new ArrayList<>(); + requiredColumns.add(table.getPrimaryColumn()); + requiredColumns.addAll(Arrays.stream(table.getColumns()).toList()); + return requiredColumns; } - private void createTable(Table table, List> columns, Statement statement) throws SQLException { - String createTableStatement = testSqlDialect.getTestFunctionProvider().createTableStatement(table, columns, dslContext); + private List> createFieldsForColumns(List requiredColumns) { + return requiredColumns.stream() + .map(this::createField) + .collect(Collectors.toList()); + } - log.debug("Creating table: {}", createTableStatement); - statement.execute(createTableStatement); + @SneakyThrows + private List getTablesContentFromCSV(ResourceFile csvFile, List requiredColumns) { + + List> castedContent = new ArrayList<>(); + + List records = csvReader.parseAllRecords(csvFile.stream()); + + for (com.univocity.parsers.common.record.Record record : records) { + List castEntriesOfRow = new ArrayList<>(requiredColumns.size()); + + for (RequiredColumn column : requiredColumns) { + castEntriesOfRow.add(castEntryAccordingToColumnType(record.getValue(column.getName(), null), column.getType())); + } + + castedContent.add(castEntriesOfRow); + } + + return castedContent.stream() + .map(DSL::row) + .toList(); } private void dropTable(Table table, Statement statement) { @@ -99,17 +119,20 @@ private void dropTable(Table table, Statement statement) { } } - private List> createFieldsForColumns(List requiredColumns) { - return requiredColumns.stream() - .map(this::createField) - .collect(Collectors.toList()); + private void createTable(Table table, List> columns, Statement statement) throws SQLException { + String createTableStatement = testSqlDialect.getTestFunctionProvider().createTableStatement(table, columns, dslContext); + + log.debug("Creating table: {}", createTableStatement); + statement.execute(createTableStatement); } - private List getAllRequiredColumns(RequiredTable table) { - ArrayList requiredColumns = new ArrayList<>(); - requiredColumns.add(table.getPrimaryColumn()); - requiredColumns.addAll(Arrays.stream(table.getColumns()).toList()); - return requiredColumns; + private void insertValuesIntoTable(Table table, List> columns, List content, Statement statement) throws SQLException { + // encountered empty new line + if (content.isEmpty()) { + return; + } + log.debug("Inserting into table: {}", content); + testSqlDialect.getTestFunctionProvider().insertValuesIntoTable(table, columns, content, statement, dslContext); } private Field createField(RequiredColumn requiredColumn) { @@ -131,15 +154,6 @@ private Field createField(RequiredColumn requiredColumn) { return DSL.field(DSL.name(requiredColumn.getName()), dataType); } - @SneakyThrows - private List getTablesContentFromCSV(ResourceFile csvFile, List requiredColumns) { - List rawContent = this.csvReader.parseAll(csvFile.stream()); - List> castedContent = this.castContent(rawContent, requiredColumns); - return castedContent.stream() - .map(DSL::row) - .toList(); - } - /** * Casts all values of each row to the corresponding type of the column the value refers to. */ diff --git a/backend/src/test/resources/tests/query/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE.test.json b/backend/src/test/resources/tests/query/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE.test.json index 42e0e2dfff..9c5db6eefb 100644 --- a/backend/src/test/resources/tests/query/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE.test.json +++ b/backend/src/test/resources/tests/query/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE.test.json @@ -1,88 +1,88 @@ { - "type": "QUERY_TEST", - "label": "CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE Test", - "expectedCsv": "tests/query/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE/expected.csv", - "query": { - "type": "CONCEPT_QUERY", - "root": { - "type": "DATE_RESTRICTION", - "dateRange": { - "min": "2017-01-01", - "max": "2017-12-31" - }, - "child": { - "type": "CONCEPT", - "ids": [ - "test_tree.test_child1" - ], - "tables": [ - { - "id": "test_tree.test_column", - "filters": [], - "selects": [ - "test_tree.test_column.test_select" - ] - } - ] - } - } - }, - "concepts": [ - { - "label": "test_tree", - "type": "TREE", - "connectors": { - "label": "tree_label", - "name": "test_column", - "column": "test_table.test_column", - "selects": [ - { - "column": "test_table.test_column", - "default": true, - "label": "Ausgabe test", - "name": "test_select", - "type": "FIRST" - } - ] - }, - "children": [ - { - "label": "test_child1", - "description": " ", - "condition": { - "type": "PREFIX_LIST", - "prefixes": "A1" - }, - "children": [] - }, - { - "label": "test_child2", - "description": " ", - "condition": { - "type": "PREFIX_LIST", - "prefixes": "B2" - }, - "children": [] - } - ] - } - ], - "content": { + "type": "QUERY_TEST", + "label": "CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE Test", + "expectedCsv": "tests/query/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE/expected.csv", + "query": { + "type": "CONCEPT_QUERY", + "root": { + "type": "DATE_RESTRICTION", + "dateRange": { + "min": "2017-01-01", + "max": "2017-12-31" + }, + "child": { + "type": "CONCEPT", + "ids": [ + "test_tree.test_child1" + ], "tables": [ - { - "csv": "tests/query/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE/content.csv", - "name": "test_table", - "primaryColumn": { - "name": "pid", - "type": "STRING" - }, - "columns": [ - { - "name": "test_column", - "type": "STRING" - } - ] - } + { + "id": "test_tree.test_column", + "filters": [], + "selects": [ + "test_tree.test_column.test_select" + ] + } ] + } } + }, + "concepts": [ + { + "label": "test_tree", + "type": "TREE", + "connectors": { + "label": "tree_label", + "name": "test_column", + "column": "test_table.test_column", + "selects": [ + { + "column": "test_table.test_column", + "default": true, + "label": "Ausgabe test", + "name": "test_select", + "type": "FIRST" + } + ] + }, + "children": [ + { + "label": "test_child1", + "description": " ", + "condition": { + "type": "PREFIX_LIST", + "prefixes": "A1" + }, + "children": [] + }, + { + "label": "test_child2", + "description": " ", + "condition": { + "type": "PREFIX_LIST", + "prefixes": "B2" + }, + "children": [] + } + ] + } + ], + "content": { + "tables": [ + { + "csv": "tests/query/CONCEPT_DATE_RESTRICTION_WITHOUT_VALIDITYDATE/content.csv", + "name": "test_table", + "primaryColumn": { + "name": "pid", + "type": "STRING" + }, + "columns": [ + { + "name": "test_column", + "type": "STRING" + } + ] + } + ] + } } \ No newline at end of file From a3a7d78f411cc97980f6a74d6639842eecb40300 Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 3 Jun 2025 09:29:32 +0200 Subject: [PATCH 03/32] minor corrections --- .../sql/conversion/query/FormConversionHelper.java | 10 +++++++++- .../ENTITY_EXPORT_TESTS/SIMPLE_TREECONCEPT_Query.json | 4 ++-- .../tests/query/ENTITY_EXPORT_TESTS/expected.csv | 3 ++- .../sql/filter/number_money/integer_range/content.csv | 2 +- .../tests/sql/selects/first/money/content.csv | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/FormConversionHelper.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/FormConversionHelper.java index af31541d95..8a728a72ff 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/FormConversionHelper.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/FormConversionHelper.java @@ -63,7 +63,15 @@ public QueryStep convertPrerequisite(Query query, ConversionContext context) { .collect(Collectors.toList()); // filter out entries with a null validity date - Condition dateNotNullCondition = prerequisiteSelects.getValidityDate().get().isNotNull(); + Optional columnDateRange = prerequisiteSelects.getValidityDate(); + Condition dateNotNullCondition; + + if (columnDateRange.isPresent()) { + dateNotNullCondition = columnDateRange.get().isNotNull(); + } + else { + dateNotNullCondition = DSL.falseCondition(); + } return QueryStep.builder() .cteName(FormCteStep.EXTRACT_IDS.getSuffix()) diff --git a/backend/src/test/resources/tests/query/ENTITY_EXPORT_TESTS/SIMPLE_TREECONCEPT_Query.json b/backend/src/test/resources/tests/query/ENTITY_EXPORT_TESTS/SIMPLE_TREECONCEPT_Query.json index 0a4989dd63..dffd6a986d 100644 --- a/backend/src/test/resources/tests/query/ENTITY_EXPORT_TESTS/SIMPLE_TREECONCEPT_Query.json +++ b/backend/src/test/resources/tests/query/ENTITY_EXPORT_TESTS/SIMPLE_TREECONCEPT_Query.json @@ -7,11 +7,11 @@ "root": { "type": "CONCEPT", "ids": [ - "tree1.child1" + "tree1.child_a" ], "tables": [ { - "id": "tree1.connectors", + "id": "tree1.connector", "filters": [] } ] diff --git a/backend/src/test/resources/tests/query/ENTITY_EXPORT_TESTS/expected.csv b/backend/src/test/resources/tests/query/ENTITY_EXPORT_TESTS/expected.csv index 7fefa3e585..907f60e27c 100644 --- a/backend/src/test/resources/tests/query/ENTITY_EXPORT_TESTS/expected.csv +++ b/backend/src/test/resources/tests/query/ENTITY_EXPORT_TESTS/expected.csv @@ -1 +1,2 @@ -FILE IS UNUSED! \ No newline at end of file +result,dates +1,{2013-11-10/2013-11-10} \ No newline at end of file diff --git a/backend/src/test/resources/tests/sql/filter/number_money/integer_range/content.csv b/backend/src/test/resources/tests/sql/filter/number_money/integer_range/content.csv index 1cb67fbcf4..7c12a957cb 100644 --- a/backend/src/test/resources/tests/sql/filter/number_money/integer_range/content.csv +++ b/backend/src/test/resources/tests/sql/filter/number_money/integer_range/content.csv @@ -1,4 +1,4 @@ -pid,nr +pid,money 1,50 2,250 3,150 diff --git a/backend/src/test/resources/tests/sql/selects/first/money/content.csv b/backend/src/test/resources/tests/sql/selects/first/money/content.csv index c2833413b3..ebc4f56650 100644 --- a/backend/src/test/resources/tests/sql/selects/first/money/content.csv +++ b/backend/src/test/resources/tests/sql/selects/first/money/content.csv @@ -1,4 +1,4 @@ -pid,nr +pid,money 1,50 2,250 3,150 From 538496001eb97cdbfed99287d60a493c46725d2c Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 3 Jun 2025 09:45:58 +0200 Subject: [PATCH 04/32] minor corrections --- .../conquery/integration/sql/CsvTableImporter.java | 4 +++- .../SIMPLE_TREECONCEPT_Query.test.json | 13 ++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java index 5117cccf8d..5072bc3b3a 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java @@ -186,7 +186,9 @@ private Object castEntryAccordingToColumnType(String entry, MajorTypeId type) { case DATE -> Date.valueOf(entry); case DATE_RANGE -> { CDateRange dateRange = this.dateRangeParser.parse(entry); - yield DateRange.dateRange(Date.valueOf(dateRange.getMin()), Date.valueOf(dateRange.getMax())); + yield DateRange.dateRange(dateRange.getMin() != null ? Date.valueOf(dateRange.getMin()) : null, + dateRange.getMax() != null ? Date.valueOf(dateRange.getMax()) : null + ); } }; } diff --git a/backend/src/test/resources/tests/query/COMPOUND_DATERANGE_TEST/SIMPLE_TREECONCEPT_Query.test.json b/backend/src/test/resources/tests/query/COMPOUND_DATERANGE_TEST/SIMPLE_TREECONCEPT_Query.test.json index 1b2cf8ed1e..3d100c2a94 100644 --- a/backend/src/test/resources/tests/query/COMPOUND_DATERANGE_TEST/SIMPLE_TREECONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/query/COMPOUND_DATERANGE_TEST/SIMPLE_TREECONCEPT_Query.test.json @@ -1,5 +1,8 @@ { "type": "QUERY_TEST", + "sqlSpec": { + "isEnabled": false + }, "label": "COMPOUND_DATERANGE Test", "expectedCsv": "tests/query/COMPOUND_DATERANGE_TEST/expected.csv", "query": { @@ -56,11 +59,11 @@ "name": "behandlung", "type": "DATE_RANGE", "outputDescription": { - "allowOpen": true, - "startColumn": "behandlung_start", - "endColumn": "behandlung_ende", - "name": "behandlung", - "operation": "COMPOUND_DATE_RANGE" + "allowOpen": true, + "startColumn": "behandlung_start", + "endColumn": "behandlung_ende", + "name": "behandlung", + "operation": "COMPOUND_DATE_RANGE" } } ] From 666d64e9a0eb662ea8d52640b689cbdb66c22319 Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 3 Jun 2025 09:49:08 +0200 Subject: [PATCH 05/32] minor corrections --- .../resources/tests/query/NUMBER_SEMICOLON/NUMBER.test.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/src/test/resources/tests/query/NUMBER_SEMICOLON/NUMBER.test.json b/backend/src/test/resources/tests/query/NUMBER_SEMICOLON/NUMBER.test.json index 44e8ebc0de..36906c8126 100644 --- a/backend/src/test/resources/tests/query/NUMBER_SEMICOLON/NUMBER.test.json +++ b/backend/src/test/resources/tests/query/NUMBER_SEMICOLON/NUMBER.test.json @@ -4,6 +4,9 @@ "delimeter" : ";" } }, + "sqlSpec": { + "isEnabled": false + }, "type": "QUERY_TEST", "label": "NUMBER_QUERY Test", "expectedCsv": "tests/query/NUMBER_SEMICOLON/expected.csv", From dfe693e104c632cca5b1e2e79cf0a4a1483901bd Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 3 Jun 2025 13:54:34 +0200 Subject: [PATCH 06/32] trivial fixes where coalesce to NULL was missing --- .../models/query/DateAggregationMode.java | 2 +- .../cqelement/concept/CQConceptConverter.java | 2 +- .../CountQuartersSqlAggregator.java | 202 +++++++++--------- .../model/aggregator/CountSqlAggregator.java | 45 ++-- .../model/select/ExistsSqlSelect.java | 3 +- .../integration/sql/CsvTableImporter.java | 17 +- .../DATE_DISTANCE_ERSTER.test.json | 185 ++++++++-------- 7 files changed, 215 insertions(+), 241 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/models/query/DateAggregationMode.java b/backend/src/main/java/com/bakdata/conquery/models/query/DateAggregationMode.java index 604c0f0b6a..d54bf4242f 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/query/DateAggregationMode.java +++ b/backend/src/main/java/com/bakdata/conquery/models/query/DateAggregationMode.java @@ -24,5 +24,5 @@ public enum DateAggregationMode { * Merge or intersect the dates depending on certain nodes in the query plan (OR -> MERGE, AND -> INTERSECT, * NOT -> INVERT) */ - LOGICAL; + LOGICAL } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java index e326f535d7..f6d816b691 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java @@ -171,7 +171,7 @@ private static boolean dateRestrictionApplicable(boolean dateRestrictionRequired private static Optional collectConditionFilters(List> conceptElements, CQTable cqTable, SqlFunctionProvider functionProvider) { return collectConditions(conceptElements, cqTable, functionProvider) .stream() - .reduce(WhereCondition::or) + .reduce(WhereCondition::and) .map(whereCondition -> new SqlFilters( ConnectorSqlSelects.none(), WhereClauses.builder().preprocessingCondition(whereCondition).build() diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountQuartersSqlAggregator.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountQuartersSqlAggregator.java index 664abdbe64..c93504f88b 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountQuartersSqlAggregator.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountQuartersSqlAggregator.java @@ -9,6 +9,7 @@ import com.bakdata.conquery.models.datasets.concepts.filters.specific.CountQuartersFilter; import com.bakdata.conquery.models.datasets.concepts.select.connector.specific.CountQuartersSelect; import com.bakdata.conquery.models.events.MajorTypeId; +import com.bakdata.conquery.models.identifiable.ids.specific.ColumnId; import com.bakdata.conquery.sql.conversion.cqelement.concept.ConceptCteStep; import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorSqlTables; import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext; @@ -32,96 +33,19 @@ public class CountQuartersSqlAggregator implements SelectConverter, FilterConverter, SqlAggregator { - @Override - public ConnectorSqlSelects connectorSelect(CountQuartersSelect countQuartersSelect, SelectContext selectContext) { - - String alias = selectContext.getNameGenerator().selectName(countQuartersSelect); - ConnectorSqlTables tables = selectContext.getTables(); - SqlFunctionProvider functionProvider = selectContext.getFunctionProvider(); - StratificationFunctions stratificationFunctions = StratificationFunctions.create(selectContext.getConversionContext()); - - CommonAggregationSelect countAggregationSelect; - if (countQuartersSelect.isSingleColumnDaterange()) { - Column countColumn = countQuartersSelect.getColumn().resolve(); - countAggregationSelect = countColumn.getType() == MajorTypeId.DATE_RANGE - ? createSingleDaterangeColumnAggregationSelect(countColumn, alias, tables, functionProvider, stratificationFunctions) - : createSingleDateColumnAggregationSelect(countColumn, alias, tables, functionProvider); - } - else { - Column startColumn = countQuartersSelect.getStartColumn().resolve(); - Column endColumn = countQuartersSelect.getEndColumn().resolve(); - countAggregationSelect = createTwoDateColumnAggregationSelect(startColumn, endColumn, alias, tables, functionProvider, stratificationFunctions); - } - - String finalPredecessor = tables.getPredecessor(ConceptCteStep.AGGREGATION_FILTER); - ExtractingSqlSelect finalSelect = countAggregationSelect.getGroupBy().qualify(finalPredecessor); - - return ConnectorSqlSelects.builder() - .preprocessingSelects(countAggregationSelect.getRootSelects()) - .aggregationSelect(countAggregationSelect.getGroupBy()) - .finalSelect(finalSelect) - .build(); - } - - @Override - public SqlFilters convertToSqlFilter(CountQuartersFilter countQuartersFilter, FilterContext filterContext) { - - String alias = filterContext.getNameGenerator().selectName(countQuartersFilter); - ConnectorSqlTables tables = filterContext.getTables(); - SqlFunctionProvider functionProvider = filterContext.getFunctionProvider(); - StratificationFunctions stratificationFunctions = StratificationFunctions.create(filterContext.getConversionContext()); - - CommonAggregationSelect countAggregationSelect; - if (countQuartersFilter.isSingleColumnDaterange()) { - Column countColumn = countQuartersFilter.getColumn().resolve(); - countAggregationSelect = countColumn.getType() == MajorTypeId.DATE_RANGE - ? createSingleDaterangeColumnAggregationSelect(countColumn, alias, tables, functionProvider, stratificationFunctions) - : createSingleDateColumnAggregationSelect(countColumn, alias, tables, functionProvider); - } - else { - Column startColumn = countQuartersFilter.getStartColumn().resolve(); - Column endColumn = countQuartersFilter.getEndColumn().resolve(); - countAggregationSelect = createTwoDateColumnAggregationSelect(startColumn, endColumn, alias, tables, functionProvider, stratificationFunctions); - } - ConnectorSqlSelects selects = ConnectorSqlSelects.builder() - .preprocessingSelects(countAggregationSelect.getRootSelects()) - .aggregationSelect(countAggregationSelect.getGroupBy()) - .build(); - - String predecessorTableName = tables.getPredecessor(ConceptCteStep.AGGREGATION_FILTER); - Field qualifiedCountSelect = countAggregationSelect.getGroupBy().qualify(predecessorTableName).select(); - CountCondition countCondition = new CountCondition(qualifiedCountSelect, filterContext.getValue()); - WhereClauses whereClauses = WhereClauses.builder() - .groupFilter(countCondition) - .build(); - - return new SqlFilters(selects, whereClauses); - } - - @Override - public Condition convertForTableExport(CountQuartersFilter filter, FilterContext filterContext) { - Param field = DSL.val(1); // no grouping, count is always 1 per row - return new CountCondition(field, filterContext.getValue()).condition(); - } - private static CommonAggregationSelect createSingleDateColumnAggregationSelect( Column countColumn, String alias, ConnectorSqlTables tables, - SqlFunctionProvider functionProvider - ) { + SqlFunctionProvider functionProvider) { + ExtractingSqlSelect rootSelect = new ExtractingSqlSelect<>(tables.getRootTable(), countColumn.getName(), Date.class); Field qualifiedRootSelect = rootSelect.qualify(tables.cteName(ConceptCteStep.EVENT_FILTER)).select(); - FieldWrapper countQuartersAggregation = new FieldWrapper<>( - DSL.countDistinct(functionProvider.yearQuarter(qualifiedRootSelect)).as(alias), - countColumn.getName() - ); - - return CommonAggregationSelect.builder() - .rootSelect(rootSelect) - .groupBy(countQuartersAggregation) - .build(); + FieldWrapper countQuartersAggregation = + new FieldWrapper<>(DSL.nullif(DSL.countDistinct(functionProvider.yearQuarter(qualifiedRootSelect)), 0).as(alias), countColumn.getName()); + + return CommonAggregationSelect.builder().rootSelect(rootSelect).groupBy(countQuartersAggregation).build(); } private static CommonAggregationSelect createSingleDaterangeColumnAggregationSelect( @@ -129,10 +53,9 @@ private static CommonAggregationSelect createSingleDaterangeColumnAg String alias, ConnectorSqlTables tables, SqlFunctionProvider functionProvider, - StratificationFunctions stratificationFunctions - ) { - String rootTable = tables.getRootTable(); - ColumnDateRange daterange = ColumnDateRange.of(DSL.field(DSL.name(rootTable, countColumn.getName()))); + StratificationFunctions stratificationFunctions) { + + ColumnDateRange daterange = ColumnDateRange.of(DSL.field(DSL.name(tables.getRootTable(), countColumn.getName()))); Field quarterStart = stratificationFunctions.lowerBoundQuarterStart(daterange); Field nextQuarterStart = stratificationFunctions.upperBoundQuarterEnd(daterange); @@ -146,14 +69,14 @@ private static CommonAggregationSelect createTwoDateColumnAggregatio String alias, ConnectorSqlTables tables, SqlFunctionProvider functionProvider, - StratificationFunctions stratificationFunctions - ) { - String rootTable = tables.getRootTable(); - Field startDate = DSL.field(DSL.name(rootTable, startColumn.getName()), Date.class); - Field endDate = DSL.field(DSL.name(rootTable, endColumn.getName()), Date.class); + StratificationFunctions stratificationFunctions) { + + Field startDate = DSL.field(DSL.name(tables.getRootTable(), startColumn.getName()), Date.class); + Field endDate = DSL.field(DSL.name(tables.getRootTable(), endColumn.getName()), Date.class); Field quarterStart = stratificationFunctions.jumpToQuarterStart(startDate); Field nextQuarterStart = stratificationFunctions.jumpToNextQuarterStart(endDate); + return sumQuarterCount(quarterStart, nextQuarterStart, alias, tables, functionProvider); } @@ -162,24 +85,99 @@ private static CommonAggregationSelect sumQuarterCount( Field nextQuarterStart, String alias, ConnectorSqlTables tables, - SqlFunctionProvider functionProvider - ) { + SqlFunctionProvider functionProvider) { Field quarterCount = calcQuarterCount(quarterStart, nextQuarterStart, alias, functionProvider); FieldWrapper quarterCountWrapper = new FieldWrapper<>(quarterCount); Field qualifiedQuarterCount = quarterCountWrapper.qualify(tables.cteName(ConceptCteStep.EVENT_FILTER)).select(); - FieldWrapper quarterCountAggregation = new FieldWrapper<>(DSL.sum(qualifiedQuarterCount).as(alias)); + FieldWrapper quarterCountAggregation = new FieldWrapper<>(DSL.nullif(DSL.sum(qualifiedQuarterCount), BigDecimal.ZERO).as(alias)); - return CommonAggregationSelect.builder() - .rootSelect(quarterCountWrapper) - .groupBy(quarterCountAggregation) - .build(); + return CommonAggregationSelect.builder().rootSelect(quarterCountWrapper).groupBy(quarterCountAggregation).build(); } private static Field calcQuarterCount(Field quarterStart, Field nextQuarterStart, String alias, SqlFunctionProvider functionProvider) { - return functionProvider.dateDistance(ChronoUnit.MONTHS, quarterStart, nextQuarterStart) - .divide(Interval.QUARTER_INTERVAL.getAmount()) - .as(alias); + return functionProvider.dateDistance(ChronoUnit.MONTHS, quarterStart, nextQuarterStart).divide(Interval.QUARTER_INTERVAL.getAmount()).as(alias); + } + + private static CommonAggregationSelect buildSqlSelect( + ColumnId column, + ColumnId startColumn, + ColumnId endColumn, + String alias, + ConnectorSqlTables tables, + SqlFunctionProvider functionProvider, + StratificationFunctions stratificationFunctions) { + + if (column == null) { + return createTwoDateColumnAggregationSelect(startColumn.resolve(), endColumn.resolve(), alias, tables, functionProvider, stratificationFunctions); + } + + Column countColumn = column.resolve(); + if (countColumn.getType() == MajorTypeId.DATE_RANGE) { + return createSingleDaterangeColumnAggregationSelect(countColumn, + alias, + tables, + functionProvider, + stratificationFunctions + ); + } + + return createSingleDateColumnAggregationSelect(countColumn, alias, tables, functionProvider); + } + + @Override + public ConnectorSqlSelects connectorSelect(CountQuartersSelect countQuartersSelect, SelectContext selectContext) { + + CommonAggregationSelect countAggregationSelect = + buildSqlSelect(countQuartersSelect.getColumn(), + countQuartersSelect.getStartColumn(), + countQuartersSelect.getEndColumn(), + selectContext.getNameGenerator().selectName(countQuartersSelect), + selectContext.getTables(), + selectContext.getFunctionProvider(), + StratificationFunctions.create(selectContext.getConversionContext()) + ); + + String finalPredecessor = selectContext.getTables().getPredecessor(ConceptCteStep.AGGREGATION_FILTER); + ExtractingSqlSelect finalSelect = countAggregationSelect.getGroupBy().qualify(finalPredecessor); + + return ConnectorSqlSelects.builder() + .preprocessingSelects(countAggregationSelect.getRootSelects()) + .aggregationSelect(countAggregationSelect.getGroupBy()) + .finalSelect(finalSelect) + .build(); + } + + @Override + public SqlFilters convertToSqlFilter(CountQuartersFilter countQuartersFilter, FilterContext filterContext) { + + CommonAggregationSelect countAggregationSelect = + buildSqlSelect(countQuartersFilter.getColumn(), + countQuartersFilter.getStartColumn(), + countQuartersFilter.getEndColumn(), + filterContext.getNameGenerator().selectName(countQuartersFilter), + filterContext.getTables(), + filterContext.getFunctionProvider(), + StratificationFunctions.create(filterContext.getConversionContext()) + ); + + ConnectorSqlSelects selects = ConnectorSqlSelects.builder() + .preprocessingSelects(countAggregationSelect.getRootSelects()) + .aggregationSelect(countAggregationSelect.getGroupBy()) + .build(); + + String predecessorTableName = filterContext.getTables().getPredecessor(ConceptCteStep.AGGREGATION_FILTER); + Field qualifiedCountSelect = countAggregationSelect.getGroupBy().qualify(predecessorTableName).select(); + CountCondition countCondition = new CountCondition(qualifiedCountSelect, filterContext.getValue()); + WhereClauses whereClauses = WhereClauses.builder().groupFilter(countCondition).build(); + + return new SqlFilters(selects, whereClauses); + } + + @Override + public Condition convertForTableExport(CountQuartersFilter filter, FilterContext filterContext) { + Param field = DSL.val(1); // no grouping, count is always 1 per row + return new CountCondition(field, filterContext.getValue()).condition(); } } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountSqlAggregator.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountSqlAggregator.java index 9e519583e2..9790f95bb6 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountSqlAggregator.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountSqlAggregator.java @@ -25,15 +25,6 @@ @NoArgsConstructor public class CountSqlAggregator implements SelectConverter, FilterConverter, SqlAggregator { - public enum CountType { - DEFAULT, - DISTINCT; - - public static CountType fromBoolean(boolean value) { - return value ? DISTINCT : DEFAULT; - } - } - @Override public ConnectorSqlSelects connectorSelect(CountSelect countSelect, SelectContext selectContext) { @@ -54,6 +45,23 @@ public ConnectorSqlSelects connectorSelect(CountSelect countSelect, SelectContex .build(); } + private CommonAggregationSelect createCountAggregationSelect(Column countColumn, CountType countType, String alias, ConnectorSqlTables tables) { + + ExtractingSqlSelect rootSelect = new ExtractingSqlSelect<>(tables.getRootTable(), countColumn.getName(), Object.class); + + + Field qualifiedRootSelect = rootSelect.qualify(tables.getPredecessor(ConceptCteStep.AGGREGATION_SELECT)).select(); + Field countField = countType == CountType.DISTINCT + ? DSL.countDistinct(qualifiedRootSelect) + : DSL.count(qualifiedRootSelect); + FieldWrapper countGroupBy = new FieldWrapper<>(DSL.nullif(countField, 0).as(alias), countColumn.getName()); + + return CommonAggregationSelect.builder() + .rootSelect(rootSelect) + .groupBy(countGroupBy) + .build(); + } + @Override public SqlFilters convertToSqlFilter(CountFilter countFilter, FilterContext filterContext) { @@ -83,20 +91,13 @@ public Condition convertForTableExport(CountFilter countFilter, FilterContext createCountAggregationSelect(Column countColumn, CountType countType, String alias, ConnectorSqlTables tables) { - - ExtractingSqlSelect rootSelect = new ExtractingSqlSelect<>(tables.getRootTable(), countColumn.getName(), Object.class); - - Field qualifiedRootSelect = rootSelect.qualify(tables.getPredecessor(ConceptCteStep.AGGREGATION_SELECT)).select(); - Field countField = countType == CountType.DISTINCT - ? DSL.countDistinct(qualifiedRootSelect) - : DSL.count(qualifiedRootSelect); - FieldWrapper countGroupBy = new FieldWrapper<>(countField.as(alias), countColumn.getName()); + public enum CountType { + DEFAULT, + DISTINCT; - return CommonAggregationSelect.builder() - .rootSelect(rootSelect) - .groupBy(countGroupBy) - .build(); + public static CountType fromBoolean(boolean value) { + return value ? DISTINCT : DEFAULT; + } } } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java index a9a279115b..fd31e1603d 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java @@ -2,6 +2,7 @@ import java.util.Collections; import java.util.List; + import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import org.jooq.Field; @@ -48,6 +49,6 @@ public SingleColumnSqlSelect qualify(final String qualifier) { @Override public SqlSelect connectorAggregate() { - return new ExistsSqlSelect(DSL.max(select()).as(alias), alias); + return new ExistsSqlSelect(DSL.max(DSL.coalesce(select(), DSL.value(0))).as(alias), alias); } } diff --git a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java index 5072bc3b3a..a7aa4010b9 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java @@ -98,7 +98,7 @@ private List getTablesContentFromCSV(ResourceFile csvFile, List castEntriesOfRow = new ArrayList<>(requiredColumns.size()); for (RequiredColumn column : requiredColumns) { - castEntriesOfRow.add(castEntryAccordingToColumnType(record.getValue(column.getName(), null), column.getType())); + castEntriesOfRow.add(castEntryAccordingToColumnType(record.getString(column.getName()), column.getType())); } castedContent.add(castEntriesOfRow); @@ -154,21 +154,6 @@ private Field createField(RequiredColumn requiredColumn) { return DSL.field(DSL.name(requiredColumn.getName()), dataType); } - /** - * Casts all values of each row to the corresponding type of the column the value refers to. - */ - private List> castContent(List rawContent, List requiredColumns) { - List> castedContent = new ArrayList<>(rawContent.size()); - for (String[] row : rawContent) { - List castEntriesOfRow = new ArrayList<>(row.length); - for (int i = 0; i < row.length; i++) { - MajorTypeId type = requiredColumns.get(i).getType(); - castEntriesOfRow.add(this.castEntryAccordingToColumnType(row[i], type)); - } - castedContent.add(castEntriesOfRow); - } - return castedContent; - } private Object castEntryAccordingToColumnType(String entry, MajorTypeId type) { diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_ERSTER.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_ERSTER.test.json index 07e912aa96..7877affb3f 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_ERSTER.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_ERSTER.test.json @@ -1,101 +1,90 @@ -{ - "type":"QUERY_TEST", - "label":"DATE_DISTANCE_ERSTER Test", - "expectedCsv":"tests/query/DATE_DISTANCE/expected-erster.csv", - "query":{ - "type":"CONCEPT_QUERY", - "root":{ - "type":"DATE_RESTRICTION", - "dateRange":{ - "min":"2011-01-01", - "max":"2011-01-01" - }, - "child":{ - "type":"OR", - "children":[ - { - "type":"CONCEPT", - "ids":[ - "alter" - ], - "label":"Alter", - "excludeFromTimeAggregation":false, - "tables":[ - { - "id":"alter.alterxy", - "selects":[ - - ], - "filters":[ - { - "filter":"alter.alterxy.alterseinschrankung", - "type":"INTEGER_RANGE", - "value":{ - "min":"11", - "max":"11" - } - } - ] - } - ], - "selects":[ - - ] - } - ] - } - } - }, - "concepts":[ - { - "label":"alter", - "type":"TREE", - "connectors":[ - { - "label":"alterxy", - "table":"table1", - "validityDates":{ - "label":"erster", - "column":"table1.erster" - }, - "filters":{ - "label":"alterseinschrankung", - "description":"Geburtsdatum", - "column":"table1.geburtsdatum", - "type":"DATE_DISTANCE" - } - } - ] - } - ], - "content":{ - "tables":[ - { - "csv":"tests/query/DATE_DISTANCE/content.csv", - "name":"table1", - "primaryColumn":{ - "name":"pid", - "type":"STRING" - }, - "columns":[ - { - "name":"geburtsdatum", - "type":"DATE" - }, - { - "name":"erster", - "type":"DATE" - }, - { - "name":"letzter", - "type":"DATE" - }, - { - "name":"versichertenzeit", - "type":"DATE_RANGE" - } +{ + "type": "QUERY_TEST", + "label": "DATE_DISTANCE_ERSTER Test", + "expectedCsv": "tests/query/DATE_DISTANCE/expected-erster.csv", + "query": { + "type": "CONCEPT_QUERY", + "root": { + "type": "DATE_RESTRICTION", + "dateRange": { + "min": "2011-01-01", + "max": "2011-01-01" + }, + "child": { + "type": "CONCEPT", + "ids": [ + "alter" + ], + "tables": [ + { + "id": "alter.alterxy", + "filters": [ + { + "filter": "alter.alterxy.alterseinschrankung", + "type": "INTEGER_RANGE", + "value": { + "min": "11", + "max": "11" + } + } ] - } + } + ], + "selects": [ + ] + } + } + }, + "concepts": [ + { + "label": "alter", + "type": "TREE", + "connectors": [ + { + "label": "alterxy", + "table": "table1", + "validityDates": { + "label": "erster", + "column": "table1.erster" + }, + "filters": { + "label": "alterseinschrankung", + "description": "Geburtsdatum", + "column": "table1.geburtsdatum", + "type": "DATE_DISTANCE" + } + } ] - } + } + ], + "content": { + "tables": [ + { + "csv": "tests/query/DATE_DISTANCE/content.csv", + "name": "table1", + "primaryColumn": { + "name": "pid", + "type": "STRING" + }, + "columns": [ + { + "name": "geburtsdatum", + "type": "DATE" + }, + { + "name": "erster", + "type": "DATE" + }, + { + "name": "letzter", + "type": "DATE" + }, + { + "name": "versichertenzeit", + "type": "DATE_RANGE" + } + ] + } + ] + } } \ No newline at end of file From eb587d1adb2755abf8c4f3d4f4bfb3c12b1ba60e Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 3 Jun 2025 16:19:29 +0200 Subject: [PATCH 07/32] fix order of AllValuesAggregator test --- .../aggregators/specific/value/AllValuesAggregator.java | 9 +++++---- .../tests/aggregator/VALUES_AGGREGATOR/expected.csv | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/models/query/queryplan/aggregators/specific/value/AllValuesAggregator.java b/backend/src/main/java/com/bakdata/conquery/models/query/queryplan/aggregators/specific/value/AllValuesAggregator.java index 555ba49e0d..1303266432 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/query/queryplan/aggregators/specific/value/AllValuesAggregator.java +++ b/backend/src/main/java/com/bakdata/conquery/models/query/queryplan/aggregators/specific/value/AllValuesAggregator.java @@ -1,14 +1,15 @@ package com.bakdata.conquery.models.query.queryplan.aggregators.specific.value; import java.util.HashSet; +import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import com.bakdata.conquery.models.datasets.Column; import com.bakdata.conquery.models.events.Bucket; import com.bakdata.conquery.models.query.QueryExecutionContext; import com.bakdata.conquery.models.query.entity.Entity; import com.bakdata.conquery.models.query.queryplan.aggregators.SingleColumnAggregator; -import com.google.common.collect.ImmutableSet; import lombok.ToString; /** @@ -17,7 +18,7 @@ * @param Value type of the column. */ @ToString(callSuper = true, onlyExplicitlyIncluded = true) -public class AllValuesAggregator extends SingleColumnAggregator> { +public class AllValuesAggregator extends SingleColumnAggregator> { private final Set entries = new HashSet<>(); @@ -38,8 +39,8 @@ public void consumeEvent(Bucket bucket, int event) { } @Override - public Set createAggregationResult() { - return entries.isEmpty() ? null : ImmutableSet.copyOf(entries); + public List createAggregationResult() { + return entries.isEmpty() ? null : entries.stream().sorted().collect(Collectors.toList()); } } diff --git a/backend/src/test/resources/tests/aggregator/VALUES_AGGREGATOR/expected.csv b/backend/src/test/resources/tests/aggregator/VALUES_AGGREGATOR/expected.csv index 56e632dfff..93fed2ef79 100644 --- a/backend/src/test/resources/tests/aggregator/VALUES_AGGREGATOR/expected.csv +++ b/backend/src/test/resources/tests/aggregator/VALUES_AGGREGATOR/expected.csv @@ -3,4 +3,4 @@ result,dates,concept select 2,{2010-07-15/2010-07-15}, 3,{2012-01-01/2012-01-02},"{f,m}" 4,{2012-01-01/2012-01-04},"{f,m}" -5,{2012-01-01/2012-01-04},"{m ,f,f ,m}" \ No newline at end of file +5,{2012-01-01/2012-01-04},"{f,f ,m,m }" \ No newline at end of file From a123a2b9f07474689b98be33ad366c9e0601492a Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 3 Jun 2025 16:19:50 +0200 Subject: [PATCH 08/32] use coalesce for createEmptyRangeForNullValues --- .../cqelement/aggregation/PostgreSqlDateAggregator.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/aggregation/PostgreSqlDateAggregator.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/aggregation/PostgreSqlDateAggregator.java index 8386331d4f..a4033388cd 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/aggregation/PostgreSqlDateAggregator.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/aggregation/PostgreSqlDateAggregator.java @@ -104,7 +104,7 @@ private ColumnDateRange getAggregatedValidityDate(DateAggregationDates dateAggre String aggregatingOperator = switch (dateAggregationAction) { case MERGE -> " + "; case INTERSECT -> " * "; - default -> throw new IllegalStateException("Unexpected aggregation mode: " + dateAggregationAction); + case BLOCK, NEGATE -> throw new IllegalStateException("Unexpected aggregation mode: " + dateAggregationAction); }; String aggregatedExpression = dateAggregationDates.qualify(joinedStepCteName) @@ -118,8 +118,7 @@ private ColumnDateRange getAggregatedValidityDate(DateAggregationDates dateAggre } private static String createEmptyRangeForNullValues(Field field) { - return DSL.when(field.isNull(), DSL.field("'{}'::{0}", DSL.keyword("datemultirange"))) - .otherwise(field) + return DSL.coalesce(field, DSL.field("'{}'::{0}", DSL.keyword("datemultirange"))) .toString(); } From 831f57504fda52a6f0d1fccb9818838b46614bfa Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 3 Jun 2025 16:20:29 +0200 Subject: [PATCH 09/32] Fix boolean Parsing for CsvTableImporter --- .../parser/specific/BooleanParser.java | 6 ++++++ .../integration/sql/CsvTableImporter.java | 19 +++++++++++-------- .../sql/dialect/HanaSqlIntegrationTests.java | 5 ++++- .../dialect/PostgreSqlIntegrationTests.java | 4 +++- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/models/preproc/parser/specific/BooleanParser.java b/backend/src/main/java/com/bakdata/conquery/models/preproc/parser/specific/BooleanParser.java index d974ed2c72..048127c22d 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/preproc/parser/specific/BooleanParser.java +++ b/backend/src/main/java/com/bakdata/conquery/models/preproc/parser/specific/BooleanParser.java @@ -9,6 +9,7 @@ import com.bakdata.conquery.models.preproc.parser.ColumnValues; import com.bakdata.conquery.models.preproc.parser.Parser; import lombok.ToString; +import org.jetbrains.annotations.NotNull; @ToString(callSuper = true) public class BooleanParser extends Parser { @@ -19,6 +20,11 @@ public BooleanParser(ConqueryConfig config) { @Override protected Boolean parseValue(@Nonnull String value) throws ParsingException { + return parseBoolean(value); + } + + @NotNull + public static Boolean parseBoolean(@NotNull String value) { return switch (value) { case "J", "true", "1" -> true; case "N", "false", "0" -> false; diff --git a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java index a7aa4010b9..8071630f50 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java @@ -19,7 +19,8 @@ import com.bakdata.conquery.models.config.ConqueryConfig; import com.bakdata.conquery.models.config.DatabaseConfig; import com.bakdata.conquery.models.events.MajorTypeId; -import com.bakdata.conquery.models.preproc.parser.specific.DateRangeParser; +import com.bakdata.conquery.models.preproc.parser.specific.BooleanParser; +import com.bakdata.conquery.util.DateReader; import com.google.common.base.Strings; import com.univocity.parsers.csv.CsvParser; import lombok.SneakyThrows; @@ -40,14 +41,14 @@ public class CsvTableImporter { private static final int DEFAULT_VARCHAR_LENGTH = 25; // HANA will use 1 as default otherwise private final DSLContext dslContext; - private final DateRangeParser dateRangeParser; + private final DateReader dateReader; private final CsvParser csvReader; private final TestSqlDialect testSqlDialect; private final DatabaseConfig databaseConfig; - public CsvTableImporter(DSLContext dslContext, TestSqlDialect testSqlDialect, DatabaseConfig databaseConfig) { + public CsvTableImporter(DSLContext dslContext, TestSqlDialect testSqlDialect, DatabaseConfig databaseConfig, ConqueryConfig config) { this.dslContext = dslContext; - this.dateRangeParser = new DateRangeParser(new ConqueryConfig()); + this.dateReader = config.getLocale().getDateReader(); this.csvReader = new CSVConfig().withParseHeaders(true).createParser(); this.testSqlDialect = testSqlDialect; this.databaseConfig = databaseConfig; @@ -98,7 +99,9 @@ private List getTablesContentFromCSV(ResourceFile csvFile, List castEntriesOfRow = new ArrayList<>(requiredColumns.size()); for (RequiredColumn column : requiredColumns) { - castEntriesOfRow.add(castEntryAccordingToColumnType(record.getString(column.getName()), column.getType())); + String raw = record.getString(column.getName()); + Object parsed = castEntryAccordingToColumnType(raw, column.getType()); + castEntriesOfRow.add(parsed); } castedContent.add(castEntriesOfRow); @@ -164,13 +167,13 @@ private Object castEntryAccordingToColumnType(String entry, MajorTypeId type) { return switch (type) { case STRING -> entry; - case BOOLEAN -> Boolean.valueOf(entry); + case BOOLEAN -> BooleanParser.parseBoolean(entry); case INTEGER -> Integer.valueOf(entry); case REAL -> Float.valueOf(entry); case DECIMAL, MONEY -> new BigDecimal(entry); - case DATE -> Date.valueOf(entry); + case DATE -> dateReader.parseToLocalDate(entry); case DATE_RANGE -> { - CDateRange dateRange = this.dateRangeParser.parse(entry); + CDateRange dateRange = dateReader.parseToCDateRange(entry); yield DateRange.dateRange(dateRange.getMin() != null ? Date.valueOf(dateRange.getMin()) : null, dateRange.getMax() != null ? Date.valueOf(dateRange.getMax()) : null ); diff --git a/backend/src/test/java/com/bakdata/conquery/integration/sql/dialect/HanaSqlIntegrationTests.java b/backend/src/test/java/com/bakdata/conquery/integration/sql/dialect/HanaSqlIntegrationTests.java index c6d9e81c23..53b6f48e09 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/sql/dialect/HanaSqlIntegrationTests.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/sql/dialect/HanaSqlIntegrationTests.java @@ -21,6 +21,7 @@ import com.bakdata.conquery.integration.json.TestDataImporter; import com.bakdata.conquery.integration.sql.CsvTableImporter; import com.bakdata.conquery.integration.sql.testcontainer.hana.HanaContainer; +import com.bakdata.conquery.models.config.ConqueryConfig; import com.bakdata.conquery.models.config.DatabaseConfig; import com.bakdata.conquery.models.config.Dialect; import com.bakdata.conquery.sql.DSLContextWrapper; @@ -79,7 +80,9 @@ public Stream sqlBackendTests() { DatabaseConfig databaseConfig = provider.getDatabaseConfig(); TestSqlConnectorConfig config = provider.getSqlConnectorConfig(); TestHanaDialect testHanaDialect = new TestHanaDialect(); - TestDataImporter testDataImporter = new SqlTestDataImporter(new CsvTableImporter(dslContextWrapper.getDslContext(), testHanaDialect, databaseConfig)); + TestDataImporter testDataImporter = new SqlTestDataImporter(new CsvTableImporter(dslContextWrapper.getDslContext(), testHanaDialect, databaseConfig, + new ConqueryConfig() + )); return Stream.concat( super.sqlProgrammaticTests(databaseConfig, config, testDataImporter), diff --git a/backend/src/test/java/com/bakdata/conquery/integration/sql/dialect/PostgreSqlIntegrationTests.java b/backend/src/test/java/com/bakdata/conquery/integration/sql/dialect/PostgreSqlIntegrationTests.java index b7583d900b..edbd1ee406 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/sql/dialect/PostgreSqlIntegrationTests.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/sql/dialect/PostgreSqlIntegrationTests.java @@ -9,6 +9,7 @@ import com.bakdata.conquery.integration.IntegrationTests; import com.bakdata.conquery.integration.json.SqlTestDataImporter; import com.bakdata.conquery.integration.sql.CsvTableImporter; +import com.bakdata.conquery.models.config.ConqueryConfig; import com.bakdata.conquery.models.config.DatabaseConfig; import com.bakdata.conquery.models.config.Dialect; import com.bakdata.conquery.models.error.ConqueryError; @@ -75,7 +76,8 @@ static void before() { sqlConfig = new TestSqlConnectorConfig(databaseConfig); dslContextWrapper = DslContextFactory.create(databaseConfig, sqlConfig, null); testSqlDialect = new TestPostgreSqlDialect(); - testDataImporter = new SqlTestDataImporter(new CsvTableImporter(dslContextWrapper.getDslContext(), testSqlDialect, databaseConfig)); + //TODO (FK): Move creation to IntegrationTests, such that ConqueryConfig is the one used in the test - with the respective overrides. + testDataImporter = new SqlTestDataImporter(new CsvTableImporter(dslContextWrapper.getDslContext(), testSqlDialect, databaseConfig, new ConqueryConfig())); } @AfterAll From bc40de4b295fe39360ba2509cae97c2e14179f5e Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 3 Jun 2025 16:21:14 +0200 Subject: [PATCH 10/32] Cleanup --- .../model/aggregator/CountSqlAggregator.java | 19 ++++++------------- .../tests/filter/PREFIX/PREFIX.test.json | 3 +++ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountSqlAggregator.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountSqlAggregator.java index 9790f95bb6..4e44bee9d3 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountSqlAggregator.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountSqlAggregator.java @@ -29,11 +29,11 @@ public class CountSqlAggregator implements SelectConverter, FilterC public ConnectorSqlSelects connectorSelect(CountSelect countSelect, SelectContext selectContext) { ConnectorSqlTables tables = selectContext.getTables(); - CountType countType = CountType.fromBoolean(countSelect.isDistinct()); + boolean distinct = countSelect.isDistinct(); Column countColumn = countSelect.getColumn().resolve(); String alias = selectContext.getNameGenerator().selectName(countSelect); - CommonAggregationSelect countAggregationSelect = createCountAggregationSelect(countColumn, countType, alias, tables); + CommonAggregationSelect countAggregationSelect = createCountAggregationSelect(countColumn, distinct, alias, tables); String finalPredecessor = tables.getPredecessor(ConceptCteStep.AGGREGATION_FILTER); ExtractingSqlSelect finalSelect = countAggregationSelect.getGroupBy().qualify(finalPredecessor); @@ -45,13 +45,13 @@ public ConnectorSqlSelects connectorSelect(CountSelect countSelect, SelectContex .build(); } - private CommonAggregationSelect createCountAggregationSelect(Column countColumn, CountType countType, String alias, ConnectorSqlTables tables) { + private CommonAggregationSelect createCountAggregationSelect(Column countColumn, boolean distinct, String alias, ConnectorSqlTables tables) { ExtractingSqlSelect rootSelect = new ExtractingSqlSelect<>(tables.getRootTable(), countColumn.getName(), Object.class); Field qualifiedRootSelect = rootSelect.qualify(tables.getPredecessor(ConceptCteStep.AGGREGATION_SELECT)).select(); - Field countField = countType == CountType.DISTINCT + Field countField = distinct ? DSL.countDistinct(qualifiedRootSelect) : DSL.count(qualifiedRootSelect); FieldWrapper countGroupBy = new FieldWrapper<>(DSL.nullif(countField, 0).as(alias), countColumn.getName()); @@ -66,11 +66,11 @@ private CommonAggregationSelect createCountAggregationSelect(Column cou public SqlFilters convertToSqlFilter(CountFilter countFilter, FilterContext filterContext) { ConnectorSqlTables tables = filterContext.getTables(); - CountType countType = CountType.fromBoolean(countFilter.isDistinct()); + boolean distinct = countFilter.isDistinct(); Column countColumn = countFilter.getColumn().resolve(); String alias = filterContext.getNameGenerator().selectName(countFilter); - CommonAggregationSelect countAggregationSelect = createCountAggregationSelect(countColumn, countType, alias, tables); + CommonAggregationSelect countAggregationSelect = createCountAggregationSelect(countColumn, distinct, alias, tables); ConnectorSqlSelects selects = ConnectorSqlSelects.builder() .preprocessingSelects(countAggregationSelect.getRootSelects()) .aggregationSelect(countAggregationSelect.getGroupBy()) @@ -91,13 +91,6 @@ public Condition convertForTableExport(CountFilter countFilter, FilterContext Date: Tue, 3 Jun 2025 16:32:28 +0200 Subject: [PATCH 11/32] fixes importing of previous results --- .../integration/json/SqlTestDataImporter.java | 6 +++ .../query/REUSED_QUERY/REUSED_Query.test.json | 40 +---------------- .../tests/query/REUSED_QUERY/content.csv | 44 +++++++++---------- 3 files changed, 30 insertions(+), 60 deletions(-) diff --git a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java index 645efbe8de..5783fd558a 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java @@ -30,12 +30,15 @@ public void importQueryTestData(StandaloneSupport support, QueryTest test) throw RequiredData content = test.getContent(); content.getTables().add(ALL_IDS_TABLE); importSecondaryIds(support, content.getSecondaryIds()); + importSearchIndexes(support, test.getSearchIndexes()); importTables(support, content.getTables(), true); importConcepts(support, test.getRawConcepts()); importTableContents(support, content.getTables()); importSearchIndexes(support, test.getSearchIndexes()); importIdMapping(support, content); + + importPreviousQueries(support, content); } @Override @@ -43,6 +46,7 @@ public void importFormTestData(StandaloneSupport support, FormTest test) throws RequiredData content = test.getContent(); content.getTables().add(ALL_IDS_TABLE); importSecondaryIds(support, content.getSecondaryIds()); + importTables(support, content.getTables(), true); importConcepts(support, test.getRawConcepts()); importTableContents(support, content.getTables()); @@ -73,6 +77,8 @@ public void importFilterTestData(StandaloneSupport support, FilterTest test) thr waitUntilDone(support, () -> LoadingUtil.uploadConcept(support, support.getDataset(), test.getConcept())); importTableContents(support, content.getTables()); + importIdMapping(support, content); + } diff --git a/backend/src/test/resources/tests/query/REUSED_QUERY/REUSED_Query.test.json b/backend/src/test/resources/tests/query/REUSED_QUERY/REUSED_Query.test.json index fca4406e36..c4e72e4c55 100644 --- a/backend/src/test/resources/tests/query/REUSED_QUERY/REUSED_Query.test.json +++ b/backend/src/test/resources/tests/query/REUSED_QUERY/REUSED_Query.test.json @@ -10,39 +10,7 @@ } }, "concepts": [ - { - "label": "test_tree", - "type": "TREE", - "connectors": { - "label": "tree_label", - "name": "test_column", - "column": "test_table.test_column", - "validityDates": { - "label": "datum", - "column": "test_table.datum" - } - }, - "children": [ - { - "label": "test_child1", - "description": " ", - "condition": { - "type": "PREFIX_LIST", - "prefixes": "A1" - }, - "children": [] - }, - { - "label": "test_child2", - "description": " ", - "condition": { - "type": "PREFIX_LIST", - "prefixes": "B2" - }, - "children": [] - } - ] - } + ], "content": { "tables": [ @@ -55,11 +23,7 @@ }, "columns": [ { - "name": "datum", - "type": "DATE" - }, - { - "name": "test_column", + "name": "empty_column", "type": "STRING" } ] diff --git a/backend/src/test/resources/tests/query/REUSED_QUERY/content.csv b/backend/src/test/resources/tests/query/REUSED_QUERY/content.csv index 6d8efde058..781a199354 100644 --- a/backend/src/test/resources/tests/query/REUSED_QUERY/content.csv +++ b/backend/src/test/resources/tests/query/REUSED_QUERY/content.csv @@ -1,22 +1,22 @@ -pid,datum,test_column -15,2001-01-01,a -2,2001-01-01,a -5,2001-01-01,a -6,2001-01-01,a -27,2001-01-01,a -31,2001-01-01,a -32,2001-01-01,a -40,2001-01-01,a -58,2001-01-01,a -64,2001-01-01,a -68,2001-01-01,a -9978,2001-01-01,a -9977,2001-01-01,a -9974,2001-01-01,a -9969,2001-01-01,a -9962,2001-01-01,a -9944,2001-01-01,a -9926,2001-01-01,a -9896,2001-01-01,a -9893,2001-01-01,a -9886,2001-01-01,a \ No newline at end of file +pid,empty_column +15, +2, +5, +6, +27, +31, +32, +40, +58, +64, +68, +9978, +9977, +9974, +9969, +9962, +9944, +9926, +9896, +9893, +9886, \ No newline at end of file From 34b41d005c997397d7719fbaceabab5acac8fcc5 Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 3 Jun 2025 17:03:44 +0200 Subject: [PATCH 12/32] Fixes importing of AllIdsTable --- .../conquery/io/result/csv/CsvRenderer.java | 26 ++--- .../model/filter/NumberFilterConverter.java | 4 +- .../integration/json/SqlTestDataImporter.java | 6 +- .../integration/sql/CsvTableImporter.java | 96 ++++++++++++++----- .../src/test/resources/shared/entities.csv | 16 ++-- .../test/resources/shared/entities.table.json | 4 +- .../TEMPORAL_VIRTUAL_CONCEPT_Query.test.json | 3 + .../query/TABLE_EXPORT/TABLE_EXPORT.test.json | 3 + .../TEMPORAL_VIRTUAL_CONCEPT_Query.test.json | 3 + .../TEMPORAL_VIRTUAL_CONCEPT_Query.test.json | 3 + .../TEMPORAL_VIRTUAL_CONCEPT_Query.test.json | 3 + .../TEMPORAL_VIRTUAL_CONCEPT_Query.test.json | 3 + .../TEMPORAL_VIRTUAL_CONCEPT_Query.test.json | 3 + .../TEMPORAL_VIRTUAL_CONCEPT_Query.test.json | 3 + .../sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.json | 3 +- .../QUARTERS_AFTER/REL_EXPORT_FORM.json | 3 +- .../QUARTERS_NEUTRAL/REL_EXPORT_FORM.json | 3 +- .../form/RELATIVE/SIMPLE/REL_EXPORT_FORM.json | 3 +- .../test/resources/tests/sql/yes/cqyes.json | 2 +- .../test/resources/tests/sql/yes/entities.csv | 8 ++ .../test/resources/tests/sql/yes/no-op.csv | 2 - 21 files changed, 141 insertions(+), 59 deletions(-) create mode 100644 backend/src/test/resources/tests/sql/yes/entities.csv delete mode 100644 backend/src/test/resources/tests/sql/yes/no-op.csv diff --git a/backend/src/main/java/com/bakdata/conquery/io/result/csv/CsvRenderer.java b/backend/src/main/java/com/bakdata/conquery/io/result/csv/CsvRenderer.java index f7d7a9422b..4da2d4f7d8 100644 --- a/backend/src/main/java/com/bakdata/conquery/io/result/csv/CsvRenderer.java +++ b/backend/src/main/java/com/bakdata/conquery/io/result/csv/CsvRenderer.java @@ -36,8 +36,9 @@ public void toCSV(List idHeaders, List infos, Stream infos, Stream results, PrintSettings printSettings, - PrinterFactory printerFactory) { + private void createCSVBody( + PrintSettings cfg, List infos, Stream results, PrintSettings printSettings, + PrinterFactory printerFactory) { final Printer[] printers = infos.stream().map(info -> info.createPrinter(printerFactory, printSettings)).toArray(Printer[]::new); results.map(result -> Pair.of(cfg.getIdMapper().map(result), result)) @@ -52,20 +53,19 @@ private void createCSVBody(PrintSettings cfg, List infos, Stream filter, FilterContext Column column = filter.getColumn().resolve(); String tableName = column.getTable().getName(); String columnName = column.getName(); - Field field = DSL.field(DSL.name(tableName, columnName), Number.class); + Class numberClass = NumberMapUtil.getType(column); + + Field field = DSL.field(DSL.name(tableName, columnName), numberClass); IRange range = filterContext.getValue(); return new NumberCondition(field, range).condition(); diff --git a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java index 5783fd558a..47b6931f8a 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java @@ -25,10 +25,11 @@ public class SqlTestDataImporter implements TestDataImporter { private final CsvTableImporter csvTableImporter; + @Override public void importQueryTestData(StandaloneSupport support, QueryTest test) throws Exception { RequiredData content = test.getContent(); - content.getTables().add(ALL_IDS_TABLE); + importSecondaryIds(support, content.getSecondaryIds()); importSearchIndexes(support, test.getSearchIndexes()); importTables(support, content.getTables(), true); @@ -44,7 +45,6 @@ public void importQueryTestData(StandaloneSupport support, QueryTest test) throw @Override public void importFormTestData(StandaloneSupport support, FormTest test) throws Exception { RequiredData content = test.getContent(); - content.getTables().add(ALL_IDS_TABLE); importSecondaryIds(support, content.getSecondaryIds()); importTables(support, content.getTables(), true); @@ -84,6 +84,8 @@ public void importFilterTestData(StandaloneSupport support, FilterTest test) thr @Override public void importTableContents(StandaloneSupport support, Collection tables) throws Exception { + csvTableImporter.importAllIds(tables); + for (RequiredTable table : tables) { csvTableImporter.importTableIntoDatabase(table); } diff --git a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java index 8071630f50..6047a44fa5 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java @@ -7,7 +7,11 @@ import java.sql.Statement; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import com.bakdata.conquery.integration.common.RequiredColumn; @@ -54,6 +58,72 @@ public CsvTableImporter(DSLContext dslContext, TestSqlDialect testSqlDialect, Da this.databaseConfig = databaseConfig; } + public void importAllIds(Collection tables) { + + Set allIds = tables.stream() + .flatMap(table -> collectAllIds(table.getCsv(), table.getPrimaryColumn()).stream()) + .collect(Collectors.toSet()); + + Table table = DSL.table(DSL.name("entities")); + List> columns = List.of(DSL.field("pid", String.class)); + + List content = allIds.stream() + .map(Collections::singletonList) + .map(DSL::row) + .toList(); + + // we directly use JDBC because JOOQ can't cope with some custom types like daterange + dslContext.connection((Connection connection) -> { + try (Statement statement = connection.createStatement()) { + dropTable(table, statement); + createTable(table, columns, statement); + insertValuesIntoTable(table, columns, content, statement); + } + }); + } + + @SneakyThrows + public Set collectAllIds(ResourceFile csvFile, RequiredColumn idColumn) { + Set allIds = new HashSet<>(); + + List records = csvReader.parseAllRecords(csvFile.stream()); + + for (com.univocity.parsers.common.record.Record record : records) { + + String raw = record.getString(idColumn.getName()); + + allIds.add(raw); + } + + return allIds; + } + + private void dropTable(Table table, Statement statement) { + try { + String dropTableStatement = testSqlDialect.getTestFunctionProvider().createDropTableStatement(table, dslContext); + statement.execute(dropTableStatement); + } + catch (SQLException e) { + log.debug("Dropping table {} failed.", table.getName(), e); + } + } + + private void createTable(Table table, List> columns, Statement statement) throws SQLException { + String createTableStatement = testSqlDialect.getTestFunctionProvider().createTableStatement(table, columns, dslContext); + + log.debug("Creating table: {}", createTableStatement); + statement.execute(createTableStatement); + } + + private void insertValuesIntoTable(Table table, List> columns, List content, Statement statement) throws SQLException { + // encountered empty new line + if (content.isEmpty()) { + return; + } + log.debug("Inserting into table: {}", content); + testSqlDialect.getTestFunctionProvider().insertValuesIntoTable(table, columns, content, statement, dslContext); + } + /** * Imports the table into the database that is connected to the {@link org.jooq.DSLContext DSLContext} * of this {@link com.bakdata.conquery.integration.sql.CsvTableImporter CSVTableImporter}. @@ -112,32 +182,6 @@ private List getTablesContentFromCSV(ResourceFile csvFile, List table, Statement statement) { - try { - String dropTableStatement = testSqlDialect.getTestFunctionProvider().createDropTableStatement(table, dslContext); - statement.execute(dropTableStatement); - } - catch (SQLException e) { - log.debug("Dropping table {} failed.", table.getName(), e); - } - } - - private void createTable(Table table, List> columns, Statement statement) throws SQLException { - String createTableStatement = testSqlDialect.getTestFunctionProvider().createTableStatement(table, columns, dslContext); - - log.debug("Creating table: {}", createTableStatement); - statement.execute(createTableStatement); - } - - private void insertValuesIntoTable(Table table, List> columns, List content, Statement statement) throws SQLException { - // encountered empty new line - if (content.isEmpty()) { - return; - } - log.debug("Inserting into table: {}", content); - testSqlDialect.getTestFunctionProvider().insertValuesIntoTable(table, columns, content, statement, dslContext); - } - private Field createField(RequiredColumn requiredColumn) { DataType dataType = switch (requiredColumn.getType()) { case STRING -> SQLDataType.VARCHAR(DEFAULT_VARCHAR_LENGTH); diff --git a/backend/src/test/resources/shared/entities.csv b/backend/src/test/resources/shared/entities.csv index 514b00398a..f796a72611 100644 --- a/backend/src/test/resources/shared/entities.csv +++ b/backend/src/test/resources/shared/entities.csv @@ -1,8 +1,8 @@ -pid,datum -1,2012-01-01 -2,2013-11-10 -3,2013-11-10 -4,2013-11-10 -5,2013-11-10 -6,2013-11-10 -23,2014-01-01 +pid,empty +1, +2, +3, +4, +5, +6, +23, diff --git a/backend/src/test/resources/shared/entities.table.json b/backend/src/test/resources/shared/entities.table.json index c6a2561f58..8941d9bc95 100644 --- a/backend/src/test/resources/shared/entities.table.json +++ b/backend/src/test/resources/shared/entities.table.json @@ -7,8 +7,8 @@ }, "columns": [ { - "name": "datum", - "type": "DATE" + "name": "empty", + "type": "STRING" } ] } diff --git a/backend/src/test/resources/tests/query/QUERY_AND_NOT_TEMPORAL_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json b/backend/src/test/resources/tests/query/QUERY_AND_NOT_TEMPORAL_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json index 4ac00dbe2f..62efe2f32b 100644 --- a/backend/src/test/resources/tests/query/QUERY_AND_NOT_TEMPORAL_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/query/QUERY_AND_NOT_TEMPORAL_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json @@ -1,5 +1,8 @@ { "type": "QUERY_TEST", + "sqlSpec": { + "isEnabled": false + }, "label": "TEMPORAL_BEFORE_CONCEPT_QUERY Test", "expectedCsv": "tests/query/QUERY_AND_NOT_TEMPORAL_SAME_CONCEPT_QUERY/expected.csv", "query": { diff --git a/backend/src/test/resources/tests/query/TABLE_EXPORT/TABLE_EXPORT.test.json b/backend/src/test/resources/tests/query/TABLE_EXPORT/TABLE_EXPORT.test.json index 4b78d2cf0b..d1917c2762 100644 --- a/backend/src/test/resources/tests/query/TABLE_EXPORT/TABLE_EXPORT.test.json +++ b/backend/src/test/resources/tests/query/TABLE_EXPORT/TABLE_EXPORT.test.json @@ -1,6 +1,9 @@ { "type": "QUERY_TEST", "label": "TABLE_EXPORT Test", + "sqlSpec": { + "isEnabled": false + }, "expectedCsv": "tests/query/TABLE_EXPORT/expected.csv", "query": { "type": "TABLE_EXPORT", diff --git a/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_AGGREGATED_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json b/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_AGGREGATED_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json index fa4e043ae4..15a1bddf26 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_AGGREGATED_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_AGGREGATED_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json @@ -1,5 +1,8 @@ { "type": "QUERY_TEST", + "sqlSpec": { + "isEnabled": false + }, "label": "Temporal Before (with Aggregation)", "expectedCsv": "tests/query/TEMPORAL_BEFORE_AGGREGATED_CONCEPT_QUERY/expected.csv", "query": { diff --git a/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json b/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json index 0246cf26b3..55d683048f 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json @@ -1,5 +1,8 @@ { "type": "QUERY_TEST", + "sqlSpec": { + "isEnabled": false + }, "label": "Temporal Before", "expectedCsv": "tests/query/TEMPORAL_BEFORE_CONCEPT_QUERY/expected.csv", "query": { diff --git a/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_OR_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json b/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_OR_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json index b8f02dfdf1..53559ae3c1 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_OR_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL_BEFORE_OR_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json @@ -1,5 +1,8 @@ { "type": "QUERY_TEST", + "sqlSpec": { + "isEnabled": false + }, "label": "Temporal Before or Same", "expectedCsv": "tests/query/TEMPORAL_BEFORE_OR_SAME_CONCEPT_QUERY/expected.csv", "query": { diff --git a/backend/src/test/resources/tests/query/TEMPORAL_DAYS_BEFORE_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json b/backend/src/test/resources/tests/query/TEMPORAL_DAYS_BEFORE_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json index 4b0a7b18ef..4d95cb9ed1 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL_DAYS_BEFORE_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL_DAYS_BEFORE_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json @@ -1,5 +1,8 @@ { "type": "QUERY_TEST", + "sqlSpec": { + "isEnabled": false + }, "label": "Temporal Days Before", "expectedCsv": "tests/query/TEMPORAL_DAYS_BEFORE_CONCEPT_QUERY/expected.csv", "query": { diff --git a/backend/src/test/resources/tests/query/TEMPORAL_DAYS_BEFORE_OR_NEVER_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json b/backend/src/test/resources/tests/query/TEMPORAL_DAYS_BEFORE_OR_NEVER_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json index b42072cde3..bce8efdc9a 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL_DAYS_BEFORE_OR_NEVER_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL_DAYS_BEFORE_OR_NEVER_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json @@ -1,5 +1,8 @@ { "type": "QUERY_TEST", + "sqlSpec": { + "isEnabled": false + }, "label": "Temporal Before or Never", "expectedCsv": "tests/query/TEMPORAL_DAYS_BEFORE_OR_NEVER_CONCEPT_QUERY/expected.csv", "query": { diff --git a/backend/src/test/resources/tests/query/TEMPORAL_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json b/backend/src/test/resources/tests/query/TEMPORAL_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json index 6129bba3e6..65bdf84673 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL_SAME_CONCEPT_QUERY/TEMPORAL_VIRTUAL_CONCEPT_Query.test.json @@ -1,6 +1,9 @@ { "type": "QUERY_TEST", "label": "Temporal Same", + "sqlSpec": { + "isEnabled": false + }, "expectedCsv": "tests/query/TEMPORAL_SAME_CONCEPT_QUERY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.json b/backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.json index 82054082ed..7dec9628c2 100644 --- a/backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.json +++ b/backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.json @@ -36,7 +36,8 @@ ], "content": { "tables": [ - "/shared/vers_stamm.table.json" + "/shared/vers_stamm.table.json", + "/shared/entities.table.json" ], "previousQueryResults": [ "tests/form/EXPORT_FORM/RELATIVE/SIMPLE/query_results_1.csv" diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.json index 708ecc5a77..bbecd2ee47 100644 --- a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.json +++ b/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.json @@ -36,7 +36,8 @@ ], "content": { "tables": [ - "/shared/vers_stamm.table.json" + "/shared/vers_stamm.table.json", + "/shared/entities.table.json" ], "previousQueryResults": [ "tests/form/EXPORT_FORM/RELATIVE/SIMPLE/query_results_1.csv" diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.json index 11bff2e768..23978ec5c8 100644 --- a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.json +++ b/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.json @@ -36,7 +36,8 @@ ], "content": { "tables": [ - "/shared/vers_stamm.table.json" + "/shared/vers_stamm.table.json", + "/shared/entities.table.json" ], "previousQueryResults": [ "tests/form/EXPORT_FORM/RELATIVE/SIMPLE/query_results_1.csv" diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.json index 32a5bc3e57..10b50e2328 100644 --- a/backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.json +++ b/backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.json @@ -36,7 +36,8 @@ ], "content": { "tables": [ - "/shared/vers_stamm.table.json" + "/shared/vers_stamm.table.json", + "/shared/entities.table.json" ], "previousQueryResults": [ "tests/form/EXPORT_FORM/RELATIVE/SIMPLE/query_results_1.csv" diff --git a/backend/src/test/resources/tests/sql/yes/cqyes.json b/backend/src/test/resources/tests/sql/yes/cqyes.json index e5d28e42d0..213c64f0dc 100644 --- a/backend/src/test/resources/tests/sql/yes/cqyes.json +++ b/backend/src/test/resources/tests/sql/yes/cqyes.json @@ -13,7 +13,7 @@ "content": { "tables": [ { - "csv": "tests/sql/yes/no-op.csv", + "csv": "tests/sql/yes/entities.csv", "name": "no-op", "primaryColumn": { "name": "pid", diff --git a/backend/src/test/resources/tests/sql/yes/entities.csv b/backend/src/test/resources/tests/sql/yes/entities.csv new file mode 100644 index 0000000000..0ddcb9f291 --- /dev/null +++ b/backend/src/test/resources/tests/sql/yes/entities.csv @@ -0,0 +1,8 @@ +pid,datum +1, +2, +23, +3, +4, +5, +6, diff --git a/backend/src/test/resources/tests/sql/yes/no-op.csv b/backend/src/test/resources/tests/sql/yes/no-op.csv deleted file mode 100644 index d9a4329883..0000000000 --- a/backend/src/test/resources/tests/sql/yes/no-op.csv +++ /dev/null @@ -1,2 +0,0 @@ -pid,datum -irrelevant_id_for_cqyes,2013-11-10 From d6e9a504e18c6dc6eb86cc221961a42cbcb9f23e Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Mon, 30 Jun 2025 17:28:07 +0200 Subject: [PATCH 13/32] Fixes loading of SqlTestDataImporter.java by inherint from WorkerTestDataImporter and unifiying that. --- .../integration/common/LoadingUtil.java | 4 +- .../integration/json/SqlTestDataImporter.java | 75 +------------------ .../json/WorkerTestDataImporter.java | 6 +- 3 files changed, 5 insertions(+), 80 deletions(-) diff --git a/backend/src/test/java/com/bakdata/conquery/integration/common/LoadingUtil.java b/backend/src/test/java/com/bakdata/conquery/integration/common/LoadingUtil.java index 9cd0d2ede6..03debe6132 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/common/LoadingUtil.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/common/LoadingUtil.java @@ -166,9 +166,7 @@ public static void uploadConcept(StandaloneSupport support, Dataset dataset, Con } public static void importTableContents(StandaloneSupport support, Collection tables) throws Exception { - List cqpps = generateCqpp(support, tables); - - importCqppFiles(support, cqpps); + support.getTestImporter().importTableContents(support, tables); } public static List generateCqpp(StandaloneSupport support, Collection tables) throws Exception { diff --git a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java index 47b6931f8a..cb07b7a6fa 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlTestDataImporter.java @@ -1,87 +1,20 @@ package com.bakdata.conquery.integration.json; -import static com.bakdata.conquery.integration.common.LoadingUtil.importInternToExternMappers; - import java.util.Collection; -import java.util.Collections; -import com.bakdata.conquery.integration.common.LoadingUtil; -import com.bakdata.conquery.integration.common.RequiredData; import com.bakdata.conquery.integration.common.RequiredTable; -import com.bakdata.conquery.integration.json.filter.FilterTest; import com.bakdata.conquery.integration.sql.CsvTableImporter; -import com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeConnector; -import com.bakdata.conquery.models.identifiable.ids.specific.TableId; import com.bakdata.conquery.util.support.StandaloneSupport; import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @Slf4j @RequiredArgsConstructor -public class SqlTestDataImporter implements TestDataImporter { - - private static final RequiredTable ALL_IDS_TABLE = importRequiredTable("/shared/entities.table.json"); +public class SqlTestDataImporter extends WorkerTestDataImporter { private final CsvTableImporter csvTableImporter; - @Override - public void importQueryTestData(StandaloneSupport support, QueryTest test) throws Exception { - RequiredData content = test.getContent(); - - importSecondaryIds(support, content.getSecondaryIds()); - importSearchIndexes(support, test.getSearchIndexes()); - importTables(support, content.getTables(), true); - importConcepts(support, test.getRawConcepts()); - importTableContents(support, content.getTables()); - - importSearchIndexes(support, test.getSearchIndexes()); - importIdMapping(support, content); - - importPreviousQueries(support, content); - } - - @Override - public void importFormTestData(StandaloneSupport support, FormTest test) throws Exception { - RequiredData content = test.getContent(); - importSecondaryIds(support, content.getSecondaryIds()); - - importTables(support, content.getTables(), true); - importConcepts(support, test.getRawConcepts()); - importTableContents(support, content.getTables()); - importIdMapping(support, content); - importPreviousQueries(support, content); - } - - @Override - public void importFilterTestData(StandaloneSupport support, FilterTest test) throws Exception { - RequiredData content = test.getContent(); - - importInternToExternMappers(support, test.getInternToExternMappings()); - importSearchIndexes(support, test.getSearchIndices()); - importTables(support, content.getTables(), content.isAutoConcept()); - - test.setConnector(ConqueryTestSpec.parseSubTree( - support, - test.getRawConnector(), - ConceptTreeConnector.class, - conn -> { - conn.setTable(new TableId(support.getDataset().getDataset(), FilterTest.TABLE_NAME)); - conn.setConcept(test.getConcept()); - }, - true - ) - ); - test.getConcept().setConnectors(Collections.singletonList((ConceptTreeConnector) test.getConnector())); - - waitUntilDone(support, () -> LoadingUtil.uploadConcept(support, support.getDataset(), test.getConcept())); - importTableContents(support, content.getTables()); - importIdMapping(support, content); - - - } - @Override public void importTableContents(StandaloneSupport support, Collection tables) throws Exception { csvTableImporter.importAllIds(tables); @@ -90,10 +23,4 @@ public void importTableContents(StandaloneSupport support, Collection LoadingUtil.importTableContents(support, content.getTables())); + waitUntilDone(support, () -> importTableContents(support, content.getTables())); importIdMapping(support, content); importPreviousQueries(support, content); waitUntilDone(support, () -> LoadingUtil.updateMatchingStats(support)); @@ -40,7 +40,7 @@ public void importFormTestData(StandaloneSupport support, FormTest test) throws importSecondaryIds(support, content.getSecondaryIds()); importTables(support, content.getTables(), content.isAutoConcept()); importConcepts(support, test.getRawConcepts()); - waitUntilDone(support, () -> LoadingUtil.importTableContents(support, content.getTables())); + waitUntilDone(support, () -> importTableContents(support, content.getTables())); importIdMapping(support, content); importPreviousQueries(support, content); } @@ -69,7 +69,7 @@ public void importFilterTestData(StandaloneSupport support, FilterTest test) thr test.getConcept().setConnectors(Collections.singletonList((ConceptTreeConnector) test.getConnector())); waitUntilDone(support, () -> LoadingUtil.uploadConcept(support, support.getDataset(), test.getConcept())); - waitUntilDone(support, () -> LoadingUtil.importTableContents(support, content.getTables())); + waitUntilDone(support, () -> importTableContents(support, content.getTables())); waitUntilDone(support, () -> LoadingUtil.updateMatchingStats(support)); } From 8b96457cef2f3420abd0333f0ac9f2abe653ced4 Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Mon, 30 Jun 2025 17:28:16 +0200 Subject: [PATCH 14/32] Disable some tests --- .../SIMPLE_VIRTUAL_CONCEPT_Query.test.json | 3 + .../query/NUMBER_NEGATION/NUMBER.test.json | 164 +++++++++--------- .../SIMPLE_TREECONCEPT_Query.json | 9 +- ..._TREECONCEPT_GROOVY_Query_groovy.test.json | 162 +++++++++-------- .../SUM_EMPTY_DATE_CONCEPT_QUERY.test.json | 158 +++++++++-------- 5 files changed, 257 insertions(+), 239 deletions(-) diff --git a/backend/src/test/resources/tests/aggregator/PREFIX_AGGREGATOR/SIMPLE_VIRTUAL_CONCEPT_Query.test.json b/backend/src/test/resources/tests/aggregator/PREFIX_AGGREGATOR/SIMPLE_VIRTUAL_CONCEPT_Query.test.json index 1b06a5c362..ae2eb30053 100644 --- a/backend/src/test/resources/tests/aggregator/PREFIX_AGGREGATOR/SIMPLE_VIRTUAL_CONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/aggregator/PREFIX_AGGREGATOR/SIMPLE_VIRTUAL_CONCEPT_Query.test.json @@ -2,6 +2,9 @@ "type": "QUERY_TEST", "label": "PREFIX_AGGREGATOR Test", "expectedCsv": "tests/aggregator/PREFIX_AGGREGATOR/expected.csv", + "sqlSpec": { + "isEnabled": false + }, "query": { "type": "CONCEPT_QUERY", "root": { diff --git a/backend/src/test/resources/tests/query/NUMBER_NEGATION/NUMBER.test.json b/backend/src/test/resources/tests/query/NUMBER_NEGATION/NUMBER.test.json index 2774a22864..88b5b14697 100644 --- a/backend/src/test/resources/tests/query/NUMBER_NEGATION/NUMBER.test.json +++ b/backend/src/test/resources/tests/query/NUMBER_NEGATION/NUMBER.test.json @@ -1,91 +1,89 @@ -{ - "type":"QUERY_TEST", - "label":"NUMBER_NEGATION_QUERY Test", - "expectedCsv":"tests/query/NUMBER_NEGATION/expected.csv", - "query":{ - "type":"CONCEPT_QUERY", +{ + "type": "QUERY_TEST", + "label": "NUMBER_NEGATION_QUERY Test", + "expectedCsv": "tests/query/NUMBER_NEGATION/expected.csv", + "query": { + "type": "CONCEPT_QUERY", "root": { - "type":"NEGATION", - "child":{ - "type": "AND", - "children": [ - { - "type":"DATE_RESTRICTION", - "dateRange":{ - "min":"2014-02-12", - "max":"2014-12-13" + "type": "NEGATION", + "child": { + "type": "AND", + "children": [ + { + "type": "DATE_RESTRICTION", + "dateRange": { + "min": "2014-02-12", + "max": "2014-12-13" }, - "child":{ - - "ids":[ - "number" - ], - "type":"CONCEPT", - "label":"vs", - "tables":[ - { - "id":"number.number_connector", - "filters":[ - { - "filter":"number.number_connector.value", - "type":"REAL_RANGE", - "value":{ - "min": 1, - "max": 1 - } - } - ] - } - ] - - } - } - ] - } - } - }, - "concepts":[ - { - "label":"number", - "type":"TREE", - "connectors":[ - { - "label":"number_connector", - "table":"table1", - "validityDates":{ - "label":"datum", - "column":"table1.datum" - }, - "filters":{ - "label":"value", - "description":"xy", - "column":"table1.value", - "type":"NUMBER" - } + "child": { + "ids": [ + "number" + ], + "type": "CONCEPT", + "label": "vs", + "tables": [ + { + "id": "number.number_connector", + "filters": [ + { + "filter": "number.number_connector.value", + "type": "REAL_RANGE", + "value": { + "min": 1, + "max": 1 + } + } + ] + } + ] } - ] + } + ] } - ], - "content":{ - "tables":[ - { - "csv":"tests/query/NUMBER_NEGATION/content.csv", - "name":"table1", - "primaryColumn":{ - "name":"pid", - "type":"STRING" - }, - "columns": [ + } + }, + "concepts": [ + { + "label": "number", + "type": "TREE", + "connectors": [ { - "name": "value", - "type": "REAL" - }, - { - "name": "datum", - "type": "DATE_RANGE" + "label": "number_connector", + "table": "table1", + "validityDates": { + "label": "datum", + "column": "table1.datum" + }, + "filters": { + "label": "value", + "description": "xy", + "column": "table1.value", + "type": "NUMBER" + } } ] - } - ] - } + } + ], + "content": { + "tables": [ + { + "csv": "tests/query/NUMBER_NEGATION/content.csv", + "name": "table1", + "primaryColumn": { + "name": "pid", + "type": "STRING" + }, + "columns": [ + { + "name": "value", + "type": "REAL" + }, + { + "name": "datum", + "type": "DATE_RANGE" + } + ] + } + ] + } } \ No newline at end of file diff --git a/backend/src/test/resources/tests/query/QUERY_STATISTICS_TESTS/SIMPLE_TREECONCEPT_Query.json b/backend/src/test/resources/tests/query/QUERY_STATISTICS_TESTS/SIMPLE_TREECONCEPT_Query.json index cad17eed49..1af111a74b 100644 --- a/backend/src/test/resources/tests/query/QUERY_STATISTICS_TESTS/SIMPLE_TREECONCEPT_Query.json +++ b/backend/src/test/resources/tests/query/QUERY_STATISTICS_TESTS/SIMPLE_TREECONCEPT_Query.json @@ -2,6 +2,9 @@ "type": "QUERY_TEST", "label": "QUERY_STATISTICS_TESTS Test", "expectedCsv": "tests/query/QUERY_STATISTICS_TESTS/expected.csv", + "sqlSpec": { + "isEnabled": false + }, "query": { "type": "CONCEPT_QUERY", "root": { @@ -13,7 +16,7 @@ { "id": "concept.connector", "filters": [], - "selects" : [ + "selects": [ "concept.connector.date", "concept.connector.string", "concept.connector.mapped", @@ -51,7 +54,7 @@ "name": "date", "column": "table.date", "type": "DISTINCT", - "description" : "This is a Description!" + "description": "This is a Description!" }, { "name": "string", @@ -62,7 +65,7 @@ "name": "mapped", "column": "table.string", "type": "DISTINCT", - "mapping" : "mapping" + "mapping": "mapping" }, { "name": "int", diff --git a/backend/src/test/resources/tests/query/SIMPLE_TREECONCEPT_GROOVY_QUERY/SIMPLE_TREECONCEPT_GROOVY_Query_groovy.test.json b/backend/src/test/resources/tests/query/SIMPLE_TREECONCEPT_GROOVY_QUERY/SIMPLE_TREECONCEPT_GROOVY_Query_groovy.test.json index e61362405c..90be0925b7 100644 --- a/backend/src/test/resources/tests/query/SIMPLE_TREECONCEPT_GROOVY_QUERY/SIMPLE_TREECONCEPT_GROOVY_Query_groovy.test.json +++ b/backend/src/test/resources/tests/query/SIMPLE_TREECONCEPT_GROOVY_QUERY/SIMPLE_TREECONCEPT_GROOVY_Query_groovy.test.json @@ -1,79 +1,95 @@ { - "type": "QUERY_TEST", - "label": "SIMPLE_TREECONCEPT_GROOVY_QUERY Test", - "expectedCsv": "tests/query/SIMPLE_TREECONCEPT_GROOVY_QUERY/expected.csv", - "query": { - "type": "CONCEPT_QUERY", - "root": { - "type": "CONCEPT", - "ids": [ - "test_tree.test_child1.test_child1_1" - ], - "label": "test_child1_1", - "tables": [ - { - "id": "test_tree.test_column", - "filters": [] - } - ] + "type": "QUERY_TEST", + "label": "SIMPLE_TREECONCEPT_GROOVY_QUERY Test", + "expectedCsv": "tests/query/SIMPLE_TREECONCEPT_GROOVY_QUERY/expected.csv", + "sqlSpec": { + "isEnabled": false + }, + "query": { + "type": "CONCEPT_QUERY", + "root": { + "type": "CONCEPT", + "ids": [ + "test_tree.test_child1.test_child1_1" + ], + "label": "test_child1_1", + "tables": [ + { + "id": "test_tree.test_column", + "filters": [] + } + ] + } + }, + "concepts": [ + { + "label": "test_tree", + "type": "TREE", + "connectors": { + "label": "tree_label", + "name": "test_column", + "column": "test_table_groovy.test_column", + "validityDates": { + "label": "datum", + "column": "test_table_groovy.datum" } - }, - "concepts": [ + }, + "children": [ + { + "label": "test_child1", + "description": " ", + "condition": { + "type": "GROOVY", + "script": "row['groovy_column']==1" + }, + "children": [ + { + "label": "test_child1_1", + "description": " ", + "condition": { + "type": "PREFIX_LIST", + "prefixes": "2" + }, + "children": [] + } + ] + }, { - "label": "test_tree", - "type":"TREE", - "connectors": { - "label": "tree_label", - "name": "test_column", - "column": "test_table_groovy.test_column", - "validityDates": {"label": "datum" ,"column": "test_table_groovy.datum"} - }, - "children": [ - { - "label": "test_child1", - "description": " ", - "condition": {"type": "GROOVY", "script": "row['groovy_column']==1"}, - "children": [ - { - "label": "test_child1_1", - "description": " ", - "condition": {"type": "PREFIX_LIST", "prefixes": "2"}, - "children": [] - }] - }, - { - "label": "test_child2", - "description": " ", - "condition": {"type": "PREFIX_LIST", "prefixes": "3"}, - "children": [] - } - ] + "label": "test_child2", + "description": " ", + "condition": { + "type": "PREFIX_LIST", + "prefixes": "3" + }, + "children": [] } - ], - "content": { - "tables": [ - { - "csv": "tests/query/SIMPLE_TREECONCEPT_GROOVY_QUERY/content.csv", - "name": "test_table_groovy", - "primaryColumn": { - "name": "pid", - "type": "STRING" - }, - "columns": [ - { - "name": "datum", - "type": "DATE" - }, - { - "name": "test_column", - "type": "STRING" - }, - { - "name": "groovy_column", - "type": "INTEGER" - } - ] - } - ] + ] } + ], + "content": { + "tables": [ + { + "csv": "tests/query/SIMPLE_TREECONCEPT_GROOVY_QUERY/content.csv", + "name": "test_table_groovy", + "primaryColumn": { + "name": "pid", + "type": "STRING" + }, + "columns": [ + { + "name": "datum", + "type": "DATE" + }, + { + "name": "test_column", + "type": "STRING" + }, + { + "name": "groovy_column", + "type": "INTEGER" + } + ] + } + ] + } } diff --git a/backend/src/test/resources/tests/query/SUM_EMPTY_DATE_CONCEPT_QUERY/SUM_EMPTY_DATE_CONCEPT_QUERY.test.json b/backend/src/test/resources/tests/query/SUM_EMPTY_DATE_CONCEPT_QUERY/SUM_EMPTY_DATE_CONCEPT_QUERY.test.json index 7389547f56..06d3cfea91 100644 --- a/backend/src/test/resources/tests/query/SUM_EMPTY_DATE_CONCEPT_QUERY/SUM_EMPTY_DATE_CONCEPT_QUERY.test.json +++ b/backend/src/test/resources/tests/query/SUM_EMPTY_DATE_CONCEPT_QUERY/SUM_EMPTY_DATE_CONCEPT_QUERY.test.json @@ -1,88 +1,86 @@ -{ - "type":"QUERY_TEST", - "label":"SUM_EMPTY_DATE_CONCEPT_QUERY Test", - "expectedCsv":"tests/query/SUM_EMPTY_DATE_CONCEPT_QUERY/expected.csv", - "query":{ - "type":"CONCEPT_QUERY", +{ + "type": "QUERY_TEST", + "label": "SUM_EMPTY_DATE_CONCEPT_QUERY Test", + "expectedCsv": "tests/query/SUM_EMPTY_DATE_CONCEPT_QUERY/expected.csv", + "query": { + "type": "CONCEPT_QUERY", "root": { "type": "AND", "children": [ { - "type":"DATE_RESTRICTION", - "dateRange":{ - "min":"2010-01-01", - "max":"2010-01-31" - }, - "child":{ - - "ids":[ - "sum" - ], - "type":"CONCEPT", - "label":"vs", - "tables":[ - { - "id":"sum.sum_connector", - "filters":[ - { - "filter":"sum.sum_connector.value", - "type":"REAL_RANGE", - "value":{ - "min": 2, - "max": 2 - } - } - ] - } - ] - - } - } - ] - } - }, - "concepts":[ - { - "label":"sum", - "type":"TREE", - "connectors":[ - { - "label":"sum_connector", - "table":"table1", - "validityDates":{ - "label":"datum", - "column":"table1.datum" - }, - "filters":{ - "label":"value", - "description":"xy", - "column":"table1.value", - "type":"SUM" - } - } - ] - } - ], - "content":{ - "tables":[ - { - "csv":"tests/query/SUM_EMPTY_DATE_CONCEPT_QUERY/content.csv", - "name":"table1", - "primaryColumn":{ - "name":"pid", - "type":"STRING" - }, - "columns": [ - { - "name": "value", - "type": "REAL" - }, - { - "name": "datum", - "type": "DATE" + "type": "DATE_RESTRICTION", + "dateRange": { + "min": "2010-01-01", + "max": "2010-01-31" + }, + "child": { + "ids": [ + "sum" + ], + "type": "CONCEPT", + "label": "vs", + "tables": [ + { + "id": "sum.sum_connector", + "filters": [ + { + "filter": "sum.sum_connector.value", + "type": "REAL_RANGE", + "value": { + "min": 2, + "max": 2 + } + } + ] + } + ] + } } ] - } + } + }, + "concepts": [ + { + "label": "sum", + "type": "TREE", + "connectors": [ + { + "label": "sum_connector", + "table": "table1", + "validityDates": { + "label": "datum", + "column": "table1.datum" + }, + "filters": { + "label": "value", + "description": "xy", + "column": "table1.value", + "type": "SUM" + } + } ] - } + } + ], + "content": { + "tables": [ + { + "csv": "tests/query/SUM_EMPTY_DATE_CONCEPT_QUERY/content.csv", + "name": "table1", + "primaryColumn": { + "name": "pid", + "type": "STRING" + }, + "columns": [ + { + "name": "value", + "type": "REAL" + }, + { + "name": "datum", + "type": "DATE" + } + ] + } + ] + } } \ No newline at end of file From 0f56b1b34e63f1fc4efbf1a8156b98563e20c77a Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 1 Jul 2025 13:39:56 +0200 Subject: [PATCH 15/32] fixes scanning for tests in sql mode => .test.json --- .../tests/sql/and/different_concept/{and.json => and.test.json} | 0 .../{and_same_concept.json => and_same_concept.test.json} | 0 .../tests/sql/combined/{combined.json => combined.test.json} | 0 ...on_date_column.json => date_restriction_date_column.test.json} | 0 ...dity_date.json => date_restriction_no_validity_date.test.json} | 0 .../{daterange_column.spec.json => daterange_column.test.json} | 0 .../only_max/{only_max.spec.json => only_max.test.json} | 0 .../only_min/{only_min.spec.json => only_min.test.json} | 0 .../{daterange_column.spec.json => daterange_column.test.json} | 0 ...on_simple_date.json => date_restriction_simple_date.test.json} | 0 .../{big_multi_select.spec.json => big_multi_select.test.json} | 0 .../tests/sql/filter/count/{count.json => count.test.json} | 0 .../{count_distinct.json => count_distinct.test.json} | 0 .../date_range/{count_quarters.json => count_quarters.test.json} | 0 .../{daterange_column.spec.json => daterange_column.test.json} | 0 .../single_date/{count_quarters.json => count_quarters.test.json} | 0 .../centuries/{centuries.spec.json => centuries.test.json} | 0 ...restriction.spec.json => days_with_date_restriction.test.json} | 0 ...e_restriction.json => days_without_date_restriction.test.json} | 0 .../decades/{decades.spec.json => decades.test.json} | 0 .../date_distance/months/{months.spec.json => months.test.json} | 0 .../date_distance/years/{years.spec.json => years.test.json} | 0 .../tests/sql/filter/flag/{flag.spec.json => flag.test.json} | 0 .../{multi_select.spec.json => multi_select.test.json} | 0 .../sql/filter/number/{number.spec.json => number.test.json} | 0 .../{number_money.spec.json => number_money.test.json} | 0 .../{number_only_max.spec.json => number_only_max.test.json} | 0 .../{number_only_min.spec.json => number_only_min.test.json} | 0 .../{single_select.spec.json => single_select.test.json} | 0 .../filter/sum/diffsum/{diffsum.spec.json => diffsum.test.json} | 0 .../distinct/{distinct-sum.spec.json => distinct-sum.test.json} | 0 .../resources/tests/sql/filter/sum/{sum.json => sum.test.json} | 0 .../ALIGNMENT/{QUARTER YEAR.json => QUARTER YEAR.test.json} | 0 .../ABSOLUT/ALIGNMENT/{QUARTER_DAY.json => QUARTER_DAY.test.json} | 0 .../ALIGNMENT/{YEAR QUARTER.json => YEAR QUARTER.test.json} | 0 .../ABSOLUT/ALIGNMENT/{YEAR YEAR.json => YEAR YEAR.test.json} | 0 .../{MULTIPLE_FEATURES.json => MULTIPLE_FEATURES.test.json} | 0 ...D_CONNECTOR.json => MULTIPLE_FEATURES_AND_CONNECTOR.test.json} | 0 ...OR_CONNECTOR.json => MULTIPLE_FEATURES_OR_CONNECTOR.test.json} | 0 ...M_SECONDARY_ID.json => ABS_EXPORT_FORM_SECONDARY_ID.test.json} | 0 .../SIMPLE/{ABS_EXPORT_FORM.json => ABS_EXPORT_FORM.test.json} | 0 ...ORM_WITH_SELECT.json => ABS_EXPORT_FORM_WITH_SELECT.test.json} | 0 .../LOGICAL/{ABS_EXPORT_FORM.json => ABS_EXPORT_FORM.test.json} | 0 .../{ABS_EXPORT_FORM.json => ABS_EXPORT_FORM.test.json} | 0 .../SECONDARY_ID/{SECONDARY_ID.json => SECONDARY_ID.test.json} | 0 .../SIMPLE/{ABS_EXPORT_FORM.json => ABS_EXPORT_FORM.test.json} | 0 ...ORM_WITH_SELECT.json => ABS_EXPORT_FORM_WITH_SELECT.test.json} | 0 ..._SECONDARY_ID.json => FULL_EXPORT_FORM_SECONDARY_ID.test.json} | 0 .../sql/form/RELATIVE/DAYS_NEUTRAL/{DAYS.json => DAYS.test.json} | 0 .../{REL_EXPORT_FORM.json => REL_EXPORT_FORM.test.json} | 0 .../{REL_EXPORT_FORM.json => REL_EXPORT_FORM.test.json} | 0 .../SECONDARY_ID/{SECONDARY_ID.json => SECONDARY_ID.test.json} | 0 .../SIMPLE/{REL_EXPORT_FORM.json => REL_EXPORT_FORM.test.json} | 0 .../{multiple_tables.spec.json => multiple_tables.test.json} | 0 .../tests/sql/nested/{nested.spec.json => nested.test.json} | 0 .../test/resources/tests/sql/not/{not.spec.json => not.test.json} | 0 .../tests/sql/not/with_sibling/{not.spec.json => not.test.json} | 0 .../tests/sql/or/different_concept/{or.spec.json => or.test.json} | 0 .../{or_same_concept.spec.json => or_same_concept.test.json} | 0 .../secondary_id/{SECONDARY_IDS.json => SECONDARY_IDS.test.json} | 0 .../{SECONDARY_IDS.json => SECONDARY_IDS.test.json} | 0 ...CONDARY_IDS_EXCLUDED.json => SECONDARY_IDS_EXCLUDED.test.json} | 0 .../{SECONDARY_IDS_MIXED.json => SECONDARY_IDS_MIXED.test.json} | 0 .../{single_connector.json => single_connector.test.json} | 0 .../{two_connectors.json => two_connectors.test.json} | 0 .../tests/sql/selects/count/{count.json => count.test.json} | 0 .../{count_distinct.json => count_distinct.test.json} | 0 .../date_range/{count_quarters.json => count_quarters.test.json} | 0 .../{daterange_column.spec.json => daterange_column.test.json} | 0 .../single_date/{count_quarters.json => count_quarters.test.json} | 0 .../centuries/{centuries.spec.json => centuries.test.json} | 0 ...restriction.spec.json => days_with_date_restriction.test.json} | 0 ...e_restriction.json => days_without_date_restriction.test.json} | 0 .../decades/{decades.spec.json => decades.test.json} | 0 .../date_distance/months/{months.spec.json => months.test.json} | 0 .../date_distance/years/{years.spec.json => years.test.json} | 0 .../selects/date_union/{date_union.json => date_union.test.json} | 0 .../sql/selects/distinct/{distinct.json => distinct.test.json} | 0 .../exists_on_connector/{exists.spec.json => exists.test.json} | 0 ...ther_selects.spec.json => exists_with_other_selects.test.json} | 0 .../exists/single_exists/{exists.spec.json => exists.test.json} | 0 .../first/date/{number_date.spec.json => number_date.test.json} | 0 .../money/{number_money.spec.json => number_money.test.json} | 0 .../sql/selects/first/number/{first.spec.json => first.test.json} | 0 .../tests/sql/selects/flag/{flag.spec.json => flag.test.json} | 0 .../tests/sql/selects/last/{last.spec.json => last.test.json} | 0 .../sql/selects/random/{random.spec.json => random.test.json} | 0 .../{same_select.json => same_select.test.json} | 0 .../selects/sum/diffsum/{diffsum.spec.json => diffsum.test.json} | 0 .../distinct/{distinct-sum.spec.json => distinct-sum.test.json} | 0 .../duration_sum/{duration_sum.json => duration_sum.test.json} | 0 .../{duration_sum.json => duration_sum.test.json} | 0 .../resources/tests/sql/selects/sum/{sum.json => sum.test.json} | 0 .../aggregation/block/and/{none.spec.json => none.test.json} | 0 .../aggregation/block/not/{negate.spec.json => negate.test.json} | 0 .../intersect/{intersect.spec.json => intersect.test.json} | 0 .../aggregation/merge/{merge.spec.json => merge.test.json} | 0 .../aggregation/negate/{negate.spec.json => negate.test.json} | 0 .../{no_validity_date.spec.json => no_validity_date.test.json} | 0 .../only_1_date/{only_1_date.spec.json => only_1_date.test.json} | 0 ...validity_date_default.json => validity_date_default.test.json} | 0 ...ICTION.json => EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json} | 0 ...STRICTION.json => EVENT_DATE_AGGREGATOR_RESTRICTION.test.json} | 0 ...lidity_date_excluded.json => validity_date_excluded.test.json} | 0 .../multirange/{multi_range.spec.json => multi_range.test.json} | 0 .../tests/sql/tree/nested/{nested.spec.json => nested.test.json} | 0 .../{prefix_range.spec.json => prefix_range.test.json} | 0 .../with_parent/{with_parent.spec.json => with_parent.test.json} | 0 .../test/resources/tests/sql/yes/{cqyes.json => cqyes.test.json} | 0 109 files changed, 0 insertions(+), 0 deletions(-) rename backend/src/test/resources/tests/sql/and/different_concept/{and.json => and.test.json} (100%) rename backend/src/test/resources/tests/sql/and/same_concept/{and_same_concept.json => and_same_concept.test.json} (100%) rename backend/src/test/resources/tests/sql/combined/{combined.json => combined.test.json} (100%) rename backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/{date_restriction_date_column.json => date_restriction_date_column.test.json} (100%) rename backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/{date_restriction_no_validity_date.json => date_restriction_no_validity_date.test.json} (100%) rename backend/src/test/resources/tests/sql/date_restriction/daterange/{daterange_column.spec.json => daterange_column.test.json} (100%) rename backend/src/test/resources/tests/sql/date_restriction/only_max/{only_max.spec.json => only_max.test.json} (100%) rename backend/src/test/resources/tests/sql/date_restriction/only_min/{only_min.spec.json => only_min.test.json} (100%) rename backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/{daterange_column.spec.json => daterange_column.test.json} (100%) rename backend/src/test/resources/tests/sql/date_restriction/simple_date/{date_restriction_simple_date.json => date_restriction_simple_date.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/big_multi_select/{big_multi_select.spec.json => big_multi_select.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/count/{count.json => count.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/count_distinct/{count_distinct.json => count_distinct.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/count_quarters/date_range/{count_quarters.json => count_quarters.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/count_quarters/postgres/{daterange_column.spec.json => daterange_column.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/count_quarters/single_date/{count_quarters.json => count_quarters.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/date_distance/centuries/{centuries.spec.json => centuries.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/{days_with_date_restriction.spec.json => days_with_date_restriction.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/{days_without_date_restriction.json => days_without_date_restriction.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/date_distance/decades/{decades.spec.json => decades.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/date_distance/months/{months.spec.json => months.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/date_distance/years/{years.spec.json => years.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/flag/{flag.spec.json => flag.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/multi_select/{multi_select.spec.json => multi_select.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/number/{number.spec.json => number.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/number_money/integer_range/{number_money.spec.json => number_money.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/number_only_max/{number_only_max.spec.json => number_only_max.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/number_only_min/{number_only_min.spec.json => number_only_min.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/single_select/{single_select.spec.json => single_select.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/sum/diffsum/{diffsum.spec.json => diffsum.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/sum/distinct/{distinct-sum.spec.json => distinct-sum.test.json} (100%) rename backend/src/test/resources/tests/sql/filter/sum/{sum.json => sum.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/{QUARTER YEAR.json => QUARTER YEAR.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/{QUARTER_DAY.json => QUARTER_DAY.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/{YEAR QUARTER.json => YEAR QUARTER.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/{YEAR YEAR.json => YEAR YEAR.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/{MULTIPLE_FEATURES.json => MULTIPLE_FEATURES.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/{MULTIPLE_FEATURES_AND_CONNECTOR.json => MULTIPLE_FEATURES_AND_CONNECTOR.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/{MULTIPLE_FEATURES_OR_CONNECTOR.json => MULTIPLE_FEATURES_OR_CONNECTOR.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/SECONDARY_ID/{ABS_EXPORT_FORM_SECONDARY_ID.json => ABS_EXPORT_FORM_SECONDARY_ID.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/{ABS_EXPORT_FORM.json => ABS_EXPORT_FORM.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/{ABS_EXPORT_FORM_WITH_SELECT.json => ABS_EXPORT_FORM_WITH_SELECT.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL/{ABS_EXPORT_FORM.json => ABS_EXPORT_FORM.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/{ABS_EXPORT_FORM.json => ABS_EXPORT_FORM.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ENTITY_DATE/SECONDARY_ID/{SECONDARY_ID.json => SECONDARY_ID.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/{ABS_EXPORT_FORM.json => ABS_EXPORT_FORM.test.json} (100%) rename backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/{ABS_EXPORT_FORM_WITH_SELECT.json => ABS_EXPORT_FORM_WITH_SELECT.test.json} (100%) rename backend/src/test/resources/tests/sql/form/FULL_EXPORT_FORM/{FULL_EXPORT_FORM_SECONDARY_ID.json => FULL_EXPORT_FORM_SECONDARY_ID.test.json} (100%) rename backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/{DAYS.json => DAYS.test.json} (100%) rename backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/{REL_EXPORT_FORM.json => REL_EXPORT_FORM.test.json} (100%) rename backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/{REL_EXPORT_FORM.json => REL_EXPORT_FORM.test.json} (100%) rename backend/src/test/resources/tests/sql/form/RELATIVE/SECONDARY_ID/{SECONDARY_ID.json => SECONDARY_ID.test.json} (100%) rename backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/{REL_EXPORT_FORM.json => REL_EXPORT_FORM.test.json} (100%) rename backend/src/test/resources/tests/sql/multiple_tables/{multiple_tables.spec.json => multiple_tables.test.json} (100%) rename backend/src/test/resources/tests/sql/nested/{nested.spec.json => nested.test.json} (100%) rename backend/src/test/resources/tests/sql/not/{not.spec.json => not.test.json} (100%) rename backend/src/test/resources/tests/sql/not/with_sibling/{not.spec.json => not.test.json} (100%) rename backend/src/test/resources/tests/sql/or/different_concept/{or.spec.json => or.test.json} (100%) rename backend/src/test/resources/tests/sql/or/same_concept/{or_same_concept.spec.json => or_same_concept.test.json} (100%) rename backend/src/test/resources/tests/sql/secondary_id/{SECONDARY_IDS.json => SECONDARY_IDS.test.json} (100%) rename backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/{SECONDARY_IDS.json => SECONDARY_IDS.test.json} (100%) rename backend/src/test/resources/tests/sql/secondary_id/excluded/{SECONDARY_IDS_EXCLUDED.json => SECONDARY_IDS_EXCLUDED.test.json} (100%) rename backend/src/test/resources/tests/sql/secondary_id/mixed/{SECONDARY_IDS_MIXED.json => SECONDARY_IDS_MIXED.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/concept_values/{single_connector.json => single_connector.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/concept_values/{two_connectors.json => two_connectors.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/count/{count.json => count.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/count_distinct/{count_distinct.json => count_distinct.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/count_quarters/date_range/{count_quarters.json => count_quarters.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/count_quarters/postgres/{daterange_column.spec.json => daterange_column.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/count_quarters/single_date/{count_quarters.json => count_quarters.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/date_distance/centuries/{centuries.spec.json => centuries.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/{days_with_date_restriction.spec.json => days_with_date_restriction.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/{days_without_date_restriction.json => days_without_date_restriction.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/date_distance/decades/{decades.spec.json => decades.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/date_distance/months/{months.spec.json => months.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/date_distance/years/{years.spec.json => years.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/date_union/{date_union.json => date_union.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/distinct/{distinct.json => distinct.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/{exists.spec.json => exists.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/{exists_with_other_selects.spec.json => exists_with_other_selects.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/exists/single_exists/{exists.spec.json => exists.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/first/date/{number_date.spec.json => number_date.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/first/money/{number_money.spec.json => number_money.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/first/number/{first.spec.json => first.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/flag/{flag.spec.json => flag.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/last/{last.spec.json => last.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/random/{random.spec.json => random.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/same_select_2_times/{same_select.json => same_select.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/sum/diffsum/{diffsum.spec.json => diffsum.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/sum/distinct/{distinct-sum.spec.json => distinct-sum.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/sum/duration_sum/{duration_sum.json => duration_sum.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/{duration_sum.json => duration_sum.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/sum/{sum.json => sum.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/{none.spec.json => none.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/{negate.spec.json => negate.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/{intersect.spec.json => intersect.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/{merge.spec.json => merge.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/{negate.spec.json => negate.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/{no_validity_date.spec.json => no_validity_date.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/{only_1_date.spec.json => only_1_date.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/default/{validity_date_default.json => validity_date_default.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/{EVENT_DATE_AGGREGATOR_NO_RESTRICTION.json => EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/{EVENT_DATE_AGGREGATOR_RESTRICTION.json => EVENT_DATE_AGGREGATOR_RESTRICTION.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/{validity_date_excluded.json => validity_date_excluded.test.json} (100%) rename backend/src/test/resources/tests/sql/selects/validity_date/multirange/{multi_range.spec.json => multi_range.test.json} (100%) rename backend/src/test/resources/tests/sql/tree/nested/{nested.spec.json => nested.test.json} (100%) rename backend/src/test/resources/tests/sql/tree/prefix_range/{prefix_range.spec.json => prefix_range.test.json} (100%) rename backend/src/test/resources/tests/sql/tree/with_parent/{with_parent.spec.json => with_parent.test.json} (100%) rename backend/src/test/resources/tests/sql/yes/{cqyes.json => cqyes.test.json} (100%) diff --git a/backend/src/test/resources/tests/sql/and/different_concept/and.json b/backend/src/test/resources/tests/sql/and/different_concept/and.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/and/different_concept/and.json rename to backend/src/test/resources/tests/sql/and/different_concept/and.test.json diff --git a/backend/src/test/resources/tests/sql/and/same_concept/and_same_concept.json b/backend/src/test/resources/tests/sql/and/same_concept/and_same_concept.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/and/same_concept/and_same_concept.json rename to backend/src/test/resources/tests/sql/and/same_concept/and_same_concept.test.json diff --git a/backend/src/test/resources/tests/sql/combined/combined.json b/backend/src/test/resources/tests/sql/combined/combined.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/combined/combined.json rename to backend/src/test/resources/tests/sql/combined/combined.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/date_restriction_date_column.json b/backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/date_restriction_date_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/date_restriction_date_column.json rename to backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/date_restriction_date_column.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/date_restriction_no_validity_date.json b/backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/date_restriction_no_validity_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/date_restriction_no_validity_date.json rename to backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/date_restriction_no_validity_date.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/daterange/daterange_column.spec.json b/backend/src/test/resources/tests/sql/date_restriction/daterange/daterange_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/daterange/daterange_column.spec.json rename to backend/src/test/resources/tests/sql/date_restriction/daterange/daterange_column.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/only_max/only_max.spec.json b/backend/src/test/resources/tests/sql/date_restriction/only_max/only_max.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/only_max/only_max.spec.json rename to backend/src/test/resources/tests/sql/date_restriction/only_max/only_max.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/only_min/only_min.spec.json b/backend/src/test/resources/tests/sql/date_restriction/only_min/only_min.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/only_min/only_min.spec.json rename to backend/src/test/resources/tests/sql/date_restriction/only_min/only_min.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/daterange_column.spec.json b/backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/daterange_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/daterange_column.spec.json rename to backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/daterange_column.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/simple_date/date_restriction_simple_date.json b/backend/src/test/resources/tests/sql/date_restriction/simple_date/date_restriction_simple_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/simple_date/date_restriction_simple_date.json rename to backend/src/test/resources/tests/sql/date_restriction/simple_date/date_restriction_simple_date.test.json diff --git a/backend/src/test/resources/tests/sql/filter/big_multi_select/big_multi_select.spec.json b/backend/src/test/resources/tests/sql/filter/big_multi_select/big_multi_select.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/big_multi_select/big_multi_select.spec.json rename to backend/src/test/resources/tests/sql/filter/big_multi_select/big_multi_select.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count/count.json b/backend/src/test/resources/tests/sql/filter/count/count.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count/count.json rename to backend/src/test/resources/tests/sql/filter/count/count.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count_distinct/count_distinct.json b/backend/src/test/resources/tests/sql/filter/count_distinct/count_distinct.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_distinct/count_distinct.json rename to backend/src/test/resources/tests/sql/filter/count_distinct/count_distinct.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/date_range/count_quarters.json b/backend/src/test/resources/tests/sql/filter/count_quarters/date_range/count_quarters.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/date_range/count_quarters.json rename to backend/src/test/resources/tests/sql/filter/count_quarters/date_range/count_quarters.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/postgres/daterange_column.spec.json b/backend/src/test/resources/tests/sql/filter/count_quarters/postgres/daterange_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/postgres/daterange_column.spec.json rename to backend/src/test/resources/tests/sql/filter/count_quarters/postgres/daterange_column.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/single_date/count_quarters.json b/backend/src/test/resources/tests/sql/filter/count_quarters/single_date/count_quarters.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/single_date/count_quarters.json rename to backend/src/test/resources/tests/sql/filter/count_quarters/single_date/count_quarters.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/centuries/centuries.spec.json b/backend/src/test/resources/tests/sql/filter/date_distance/centuries/centuries.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/centuries/centuries.spec.json rename to backend/src/test/resources/tests/sql/filter/date_distance/centuries/centuries.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/days_with_date_restriction.spec.json b/backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/days_with_date_restriction.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/days_with_date_restriction.spec.json rename to backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/days_with_date_restriction.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/days_without_date_restriction.json b/backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/days_without_date_restriction.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/days_without_date_restriction.json rename to backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/days_without_date_restriction.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/decades/decades.spec.json b/backend/src/test/resources/tests/sql/filter/date_distance/decades/decades.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/decades/decades.spec.json rename to backend/src/test/resources/tests/sql/filter/date_distance/decades/decades.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/months/months.spec.json b/backend/src/test/resources/tests/sql/filter/date_distance/months/months.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/months/months.spec.json rename to backend/src/test/resources/tests/sql/filter/date_distance/months/months.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/years/years.spec.json b/backend/src/test/resources/tests/sql/filter/date_distance/years/years.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/years/years.spec.json rename to backend/src/test/resources/tests/sql/filter/date_distance/years/years.test.json diff --git a/backend/src/test/resources/tests/sql/filter/flag/flag.spec.json b/backend/src/test/resources/tests/sql/filter/flag/flag.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/flag/flag.spec.json rename to backend/src/test/resources/tests/sql/filter/flag/flag.test.json diff --git a/backend/src/test/resources/tests/sql/filter/multi_select/multi_select.spec.json b/backend/src/test/resources/tests/sql/filter/multi_select/multi_select.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/multi_select/multi_select.spec.json rename to backend/src/test/resources/tests/sql/filter/multi_select/multi_select.test.json diff --git a/backend/src/test/resources/tests/sql/filter/number/number.spec.json b/backend/src/test/resources/tests/sql/filter/number/number.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number/number.spec.json rename to backend/src/test/resources/tests/sql/filter/number/number.test.json diff --git a/backend/src/test/resources/tests/sql/filter/number_money/integer_range/number_money.spec.json b/backend/src/test/resources/tests/sql/filter/number_money/integer_range/number_money.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_money/integer_range/number_money.spec.json rename to backend/src/test/resources/tests/sql/filter/number_money/integer_range/number_money.test.json diff --git a/backend/src/test/resources/tests/sql/filter/number_only_max/number_only_max.spec.json b/backend/src/test/resources/tests/sql/filter/number_only_max/number_only_max.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_only_max/number_only_max.spec.json rename to backend/src/test/resources/tests/sql/filter/number_only_max/number_only_max.test.json diff --git a/backend/src/test/resources/tests/sql/filter/number_only_min/number_only_min.spec.json b/backend/src/test/resources/tests/sql/filter/number_only_min/number_only_min.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_only_min/number_only_min.spec.json rename to backend/src/test/resources/tests/sql/filter/number_only_min/number_only_min.test.json diff --git a/backend/src/test/resources/tests/sql/filter/single_select/single_select.spec.json b/backend/src/test/resources/tests/sql/filter/single_select/single_select.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/single_select/single_select.spec.json rename to backend/src/test/resources/tests/sql/filter/single_select/single_select.test.json diff --git a/backend/src/test/resources/tests/sql/filter/sum/diffsum/diffsum.spec.json b/backend/src/test/resources/tests/sql/filter/sum/diffsum/diffsum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/diffsum/diffsum.spec.json rename to backend/src/test/resources/tests/sql/filter/sum/diffsum/diffsum.test.json diff --git a/backend/src/test/resources/tests/sql/filter/sum/distinct/distinct-sum.spec.json b/backend/src/test/resources/tests/sql/filter/sum/distinct/distinct-sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/distinct/distinct-sum.spec.json rename to backend/src/test/resources/tests/sql/filter/sum/distinct/distinct-sum.test.json diff --git a/backend/src/test/resources/tests/sql/filter/sum/sum.json b/backend/src/test/resources/tests/sql/filter/sum/sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/sum.json rename to backend/src/test/resources/tests/sql/filter/sum/sum.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER YEAR.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER YEAR.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER YEAR.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER YEAR.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER_DAY.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER_DAY.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER_DAY.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER_DAY.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR QUARTER.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR QUARTER.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR QUARTER.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR QUARTER.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR YEAR.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR YEAR.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR YEAR.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR YEAR.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.json b/backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.json rename to backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.json rename to backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.json rename to backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.json b/backend/src/test/resources/tests/sql/form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.json rename to backend/src/test/resources/tests/sql/form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.json rename to backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.json b/backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.json rename to backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json diff --git a/backend/src/test/resources/tests/sql/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.json b/backend/src/test/resources/tests/sql/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.json rename to backend/src/test/resources/tests/sql/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.json b/backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.json rename to backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.test.json diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.json rename to backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.json rename to backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/SECONDARY_ID/SECONDARY_ID.json b/backend/src/test/resources/tests/sql/form/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/SECONDARY_ID/SECONDARY_ID.json rename to backend/src/test/resources/tests/sql/form/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.json b/backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.json rename to backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/multiple_tables/multiple_tables.spec.json b/backend/src/test/resources/tests/sql/multiple_tables/multiple_tables.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/multiple_tables/multiple_tables.spec.json rename to backend/src/test/resources/tests/sql/multiple_tables/multiple_tables.test.json diff --git a/backend/src/test/resources/tests/sql/nested/nested.spec.json b/backend/src/test/resources/tests/sql/nested/nested.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/nested/nested.spec.json rename to backend/src/test/resources/tests/sql/nested/nested.test.json diff --git a/backend/src/test/resources/tests/sql/not/not.spec.json b/backend/src/test/resources/tests/sql/not/not.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/not/not.spec.json rename to backend/src/test/resources/tests/sql/not/not.test.json diff --git a/backend/src/test/resources/tests/sql/not/with_sibling/not.spec.json b/backend/src/test/resources/tests/sql/not/with_sibling/not.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/not/with_sibling/not.spec.json rename to backend/src/test/resources/tests/sql/not/with_sibling/not.test.json diff --git a/backend/src/test/resources/tests/sql/or/different_concept/or.spec.json b/backend/src/test/resources/tests/sql/or/different_concept/or.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/or/different_concept/or.spec.json rename to backend/src/test/resources/tests/sql/or/different_concept/or.test.json diff --git a/backend/src/test/resources/tests/sql/or/same_concept/or_same_concept.spec.json b/backend/src/test/resources/tests/sql/or/same_concept/or_same_concept.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/or/same_concept/or_same_concept.spec.json rename to backend/src/test/resources/tests/sql/or/same_concept/or_same_concept.test.json diff --git a/backend/src/test/resources/tests/sql/secondary_id/SECONDARY_IDS.json b/backend/src/test/resources/tests/sql/secondary_id/SECONDARY_IDS.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/SECONDARY_IDS.json rename to backend/src/test/resources/tests/sql/secondary_id/SECONDARY_IDS.test.json diff --git a/backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/SECONDARY_IDS.json b/backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/SECONDARY_IDS.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/SECONDARY_IDS.json rename to backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/SECONDARY_IDS.test.json diff --git a/backend/src/test/resources/tests/sql/secondary_id/excluded/SECONDARY_IDS_EXCLUDED.json b/backend/src/test/resources/tests/sql/secondary_id/excluded/SECONDARY_IDS_EXCLUDED.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/excluded/SECONDARY_IDS_EXCLUDED.json rename to backend/src/test/resources/tests/sql/secondary_id/excluded/SECONDARY_IDS_EXCLUDED.test.json diff --git a/backend/src/test/resources/tests/sql/secondary_id/mixed/SECONDARY_IDS_MIXED.json b/backend/src/test/resources/tests/sql/secondary_id/mixed/SECONDARY_IDS_MIXED.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/mixed/SECONDARY_IDS_MIXED.json rename to backend/src/test/resources/tests/sql/secondary_id/mixed/SECONDARY_IDS_MIXED.test.json diff --git a/backend/src/test/resources/tests/sql/selects/concept_values/single_connector.json b/backend/src/test/resources/tests/sql/selects/concept_values/single_connector.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/concept_values/single_connector.json rename to backend/src/test/resources/tests/sql/selects/concept_values/single_connector.test.json diff --git a/backend/src/test/resources/tests/sql/selects/concept_values/two_connectors.json b/backend/src/test/resources/tests/sql/selects/concept_values/two_connectors.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/concept_values/two_connectors.json rename to backend/src/test/resources/tests/sql/selects/concept_values/two_connectors.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count/count.json b/backend/src/test/resources/tests/sql/selects/count/count.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count/count.json rename to backend/src/test/resources/tests/sql/selects/count/count.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count_distinct/count_distinct.json b/backend/src/test/resources/tests/sql/selects/count_distinct/count_distinct.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_distinct/count_distinct.json rename to backend/src/test/resources/tests/sql/selects/count_distinct/count_distinct.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/date_range/count_quarters.json b/backend/src/test/resources/tests/sql/selects/count_quarters/date_range/count_quarters.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/date_range/count_quarters.json rename to backend/src/test/resources/tests/sql/selects/count_quarters/date_range/count_quarters.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/postgres/daterange_column.spec.json b/backend/src/test/resources/tests/sql/selects/count_quarters/postgres/daterange_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/postgres/daterange_column.spec.json rename to backend/src/test/resources/tests/sql/selects/count_quarters/postgres/daterange_column.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/single_date/count_quarters.json b/backend/src/test/resources/tests/sql/selects/count_quarters/single_date/count_quarters.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/single_date/count_quarters.json rename to backend/src/test/resources/tests/sql/selects/count_quarters/single_date/count_quarters.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/centuries/centuries.spec.json b/backend/src/test/resources/tests/sql/selects/date_distance/centuries/centuries.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/centuries/centuries.spec.json rename to backend/src/test/resources/tests/sql/selects/date_distance/centuries/centuries.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/days_with_date_restriction.spec.json b/backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/days_with_date_restriction.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/days_with_date_restriction.spec.json rename to backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/days_with_date_restriction.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/days_without_date_restriction.json b/backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/days_without_date_restriction.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/days_without_date_restriction.json rename to backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/days_without_date_restriction.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/decades/decades.spec.json b/backend/src/test/resources/tests/sql/selects/date_distance/decades/decades.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/decades/decades.spec.json rename to backend/src/test/resources/tests/sql/selects/date_distance/decades/decades.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/months/months.spec.json b/backend/src/test/resources/tests/sql/selects/date_distance/months/months.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/months/months.spec.json rename to backend/src/test/resources/tests/sql/selects/date_distance/months/months.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/years/years.spec.json b/backend/src/test/resources/tests/sql/selects/date_distance/years/years.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/years/years.spec.json rename to backend/src/test/resources/tests/sql/selects/date_distance/years/years.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_union/date_union.json b/backend/src/test/resources/tests/sql/selects/date_union/date_union.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_union/date_union.json rename to backend/src/test/resources/tests/sql/selects/date_union/date_union.test.json diff --git a/backend/src/test/resources/tests/sql/selects/distinct/distinct.json b/backend/src/test/resources/tests/sql/selects/distinct/distinct.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/distinct/distinct.json rename to backend/src/test/resources/tests/sql/selects/distinct/distinct.test.json diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/exists.spec.json b/backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/exists.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/exists.spec.json rename to backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/exists.test.json diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/exists_with_other_selects.spec.json b/backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/exists_with_other_selects.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/exists_with_other_selects.spec.json rename to backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/exists_with_other_selects.test.json diff --git a/backend/src/test/resources/tests/sql/selects/exists/single_exists/exists.spec.json b/backend/src/test/resources/tests/sql/selects/exists/single_exists/exists.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/single_exists/exists.spec.json rename to backend/src/test/resources/tests/sql/selects/exists/single_exists/exists.test.json diff --git a/backend/src/test/resources/tests/sql/selects/first/date/number_date.spec.json b/backend/src/test/resources/tests/sql/selects/first/date/number_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/date/number_date.spec.json rename to backend/src/test/resources/tests/sql/selects/first/date/number_date.test.json diff --git a/backend/src/test/resources/tests/sql/selects/first/money/number_money.spec.json b/backend/src/test/resources/tests/sql/selects/first/money/number_money.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/money/number_money.spec.json rename to backend/src/test/resources/tests/sql/selects/first/money/number_money.test.json diff --git a/backend/src/test/resources/tests/sql/selects/first/number/first.spec.json b/backend/src/test/resources/tests/sql/selects/first/number/first.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/number/first.spec.json rename to backend/src/test/resources/tests/sql/selects/first/number/first.test.json diff --git a/backend/src/test/resources/tests/sql/selects/flag/flag.spec.json b/backend/src/test/resources/tests/sql/selects/flag/flag.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/flag/flag.spec.json rename to backend/src/test/resources/tests/sql/selects/flag/flag.test.json diff --git a/backend/src/test/resources/tests/sql/selects/last/last.spec.json b/backend/src/test/resources/tests/sql/selects/last/last.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/last/last.spec.json rename to backend/src/test/resources/tests/sql/selects/last/last.test.json diff --git a/backend/src/test/resources/tests/sql/selects/random/random.spec.json b/backend/src/test/resources/tests/sql/selects/random/random.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/random/random.spec.json rename to backend/src/test/resources/tests/sql/selects/random/random.test.json diff --git a/backend/src/test/resources/tests/sql/selects/same_select_2_times/same_select.json b/backend/src/test/resources/tests/sql/selects/same_select_2_times/same_select.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/same_select_2_times/same_select.json rename to backend/src/test/resources/tests/sql/selects/same_select_2_times/same_select.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/diffsum/diffsum.spec.json b/backend/src/test/resources/tests/sql/selects/sum/diffsum/diffsum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/diffsum/diffsum.spec.json rename to backend/src/test/resources/tests/sql/selects/sum/diffsum/diffsum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/distinct/distinct-sum.spec.json b/backend/src/test/resources/tests/sql/selects/sum/distinct/distinct-sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/distinct/distinct-sum.spec.json rename to backend/src/test/resources/tests/sql/selects/sum/distinct/distinct-sum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/duration_sum/duration_sum.json b/backend/src/test/resources/tests/sql/selects/sum/duration_sum/duration_sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/duration_sum/duration_sum.json rename to backend/src/test/resources/tests/sql/selects/sum/duration_sum/duration_sum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/duration_sum.json b/backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/duration_sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/duration_sum.json rename to backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/duration_sum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/sum.json b/backend/src/test/resources/tests/sql/selects/sum/sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/sum.json rename to backend/src/test/resources/tests/sql/selects/sum/sum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/none.spec.json b/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/none.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/none.spec.json rename to backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/none.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/negate.spec.json b/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/negate.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/negate.spec.json rename to backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/negate.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/intersect.spec.json b/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/intersect.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/intersect.spec.json rename to backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/intersect.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/merge.spec.json b/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/merge.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/merge.spec.json rename to backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/merge.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/negate.spec.json b/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/negate.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/negate.spec.json rename to backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/negate.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/no_validity_date.spec.json b/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/no_validity_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/no_validity_date.spec.json rename to backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/no_validity_date.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/only_1_date.spec.json b/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/only_1_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/only_1_date.spec.json rename to backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/only_1_date.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/default/validity_date_default.json b/backend/src/test/resources/tests/sql/selects/validity_date/default/validity_date_default.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/default/validity_date_default.json rename to backend/src/test/resources/tests/sql/selects/validity_date/default/validity_date_default.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.json b/backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.json rename to backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.json b/backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.json rename to backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/validity_date_excluded.json b/backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/validity_date_excluded.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/validity_date_excluded.json rename to backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/validity_date_excluded.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/multirange/multi_range.spec.json b/backend/src/test/resources/tests/sql/selects/validity_date/multirange/multi_range.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/multirange/multi_range.spec.json rename to backend/src/test/resources/tests/sql/selects/validity_date/multirange/multi_range.test.json diff --git a/backend/src/test/resources/tests/sql/tree/nested/nested.spec.json b/backend/src/test/resources/tests/sql/tree/nested/nested.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/tree/nested/nested.spec.json rename to backend/src/test/resources/tests/sql/tree/nested/nested.test.json diff --git a/backend/src/test/resources/tests/sql/tree/prefix_range/prefix_range.spec.json b/backend/src/test/resources/tests/sql/tree/prefix_range/prefix_range.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/tree/prefix_range/prefix_range.spec.json rename to backend/src/test/resources/tests/sql/tree/prefix_range/prefix_range.test.json diff --git a/backend/src/test/resources/tests/sql/tree/with_parent/with_parent.spec.json b/backend/src/test/resources/tests/sql/tree/with_parent/with_parent.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/tree/with_parent/with_parent.spec.json rename to backend/src/test/resources/tests/sql/tree/with_parent/with_parent.test.json diff --git a/backend/src/test/resources/tests/sql/yes/cqyes.json b/backend/src/test/resources/tests/sql/yes/cqyes.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/yes/cqyes.json rename to backend/src/test/resources/tests/sql/yes/cqyes.test.json From cee41a52fe6749f8e37e7be575dc2891c5d3afdc Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 1 Jul 2025 16:24:08 +0200 Subject: [PATCH 16/32] Disable some tests --- .../integration/IntegrationTests.java | 2 +- .../CONCEPT_VALUES_RESOLVED.test.json | 3 + .../AND.test.json | 3 + .../ARRAY_CONCEPT_QUERY/ARRAY_Query.test.json | 199 +++++++++--------- 4 files changed, 108 insertions(+), 99 deletions(-) diff --git a/backend/src/test/java/com/bakdata/conquery/integration/IntegrationTests.java b/backend/src/test/java/com/bakdata/conquery/integration/IntegrationTests.java index f9ec952a71..5956f6a4fe 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/IntegrationTests.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/IntegrationTests.java @@ -52,7 +52,7 @@ public class IntegrationTests { public static final ObjectMapper MAPPER; public static final String JSON_TEST_PATTERN = ".*\\.test\\.json$"; - public static final String SQL_TEST_PATTERN = ".*\\.json$"; + public static final String SQL_TEST_PATTERN = ".*\\.test\\.json$"; private static final ObjectWriter CONFIG_WRITER; static { diff --git a/backend/src/test/resources/tests/aggregator/CONCEPT_COLUMN_SELECTS/CONCEPT_VALUES_RESOLVED.test.json b/backend/src/test/resources/tests/aggregator/CONCEPT_COLUMN_SELECTS/CONCEPT_VALUES_RESOLVED.test.json index a98482ec1c..26e835b5b9 100644 --- a/backend/src/test/resources/tests/aggregator/CONCEPT_COLUMN_SELECTS/CONCEPT_VALUES_RESOLVED.test.json +++ b/backend/src/test/resources/tests/aggregator/CONCEPT_COLUMN_SELECTS/CONCEPT_VALUES_RESOLVED.test.json @@ -1,6 +1,9 @@ { "type": "QUERY_TEST", "label": "CONCEPT_VALUES (Resolved) Test", + "sqlSpec": { + "isEnabled": false + }, "expectedCsv": "tests/aggregator/CONCEPT_COLUMN_SELECTS/expected_resolved.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR_AGGREGATED/AND.test.json b/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR_AGGREGATED/AND.test.json index e64e06c75d..f67cb03e5b 100644 --- a/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR_AGGREGATED/AND.test.json +++ b/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR_AGGREGATED/AND.test.json @@ -2,6 +2,9 @@ "type": "QUERY_TEST", "label": "EXISTS_AGGREGATOR & NUMBER Test", "expectedCsv": "tests/aggregator/EXISTS_AGGREGATOR_AGGREGATED/expected.csv", + "sqlSpec": { + "isEnabled": false + }, "query": { "type": "ARRAY_CONCEPT_QUERY", "dateAggregationMode": "MERGE", diff --git a/backend/src/test/resources/tests/query/ARRAY_CONCEPT_QUERY/ARRAY_Query.test.json b/backend/src/test/resources/tests/query/ARRAY_CONCEPT_QUERY/ARRAY_Query.test.json index cd7d10e1ed..72c220d9a4 100644 --- a/backend/src/test/resources/tests/query/ARRAY_CONCEPT_QUERY/ARRAY_Query.test.json +++ b/backend/src/test/resources/tests/query/ARRAY_CONCEPT_QUERY/ARRAY_Query.test.json @@ -1,108 +1,111 @@ { - "type": "QUERY_TEST", - "label": "ARRAY_CONCEPT_QUERY Test", - "expectedCsv": "tests/query/ARRAY_CONCEPT_QUERY/expected.csv", - "query": { - "type": "ARRAY_CONCEPT_QUERY", - "dateAggregationMode": "MERGE", - "childQueries": [ + "type": "QUERY_TEST", + "label": "ARRAY_CONCEPT_QUERY Test", + "expectedCsv": "tests/query/ARRAY_CONCEPT_QUERY/expected.csv", + "sqlSpec": { + "isEnabled": false + }, + "query": { + "type": "ARRAY_CONCEPT_QUERY", + "dateAggregationMode": "MERGE", + "childQueries": [ + { + "type": "CONCEPT_QUERY", + "root": { + "ids": [ + "select" + ], + "type": "CONCEPT", + "label": "select", + "tables": [ { - "type": "CONCEPT_QUERY", - "root": { - "ids": [ - "select" - ], - "type": "CONCEPT", - "label": "select", - "tables": [ - { - "id": "select.connector", - "selects": [ - "select.connector.count_genders" - ] - } - ] - } - }, - { - "type": "CONCEPT_QUERY", - "root": { - "ids": [ - "select" - ], - "type": "CONCEPT", - "label": "select", - "tables": [ - { - "id": "select.connector", - "filters":[ - { - "type": "INTEGER_RANGE", - "filter":"select.connector.geschlecht", - "value": { - "min": 2, - "max": 6 - } - } - ], - "selects": [ - "select.connector.count_genders" - ] - } - ] - } + "id": "select.connector", + "selects": [ + "select.connector.count_genders" + ] } - ] - }, - "concepts": [ - { - "label": "select", - "type": "TREE", - "connectors": [ + ] + } + }, + { + "type": "CONCEPT_QUERY", + "root": { + "ids": [ + "select" + ], + "type": "CONCEPT", + "label": "select", + "tables": [ + { + "id": "select.connector", + "filters": [ { - "label": "connector", - "table": "table1", - "validityDates": { - "label": "datum", - "column": "table1.datum" - }, - "filters": { - "label": "geschlecht", - "type": "COUNT", - "column": "table1.geschlecht", - "distinct": false - }, - "selects": [ - { - "name": "count_genders", - "type": "COUNT", - "column": "table1.geschlecht" - } - ] + "type": "INTEGER_RANGE", + "filter": "select.connector.geschlecht", + "value": { + "min": 2, + "max": 6 + } } - ] + ], + "selects": [ + "select.connector.count_genders" + ] + } + ] } - ], - "content": { - "tables": [ + } + ] + }, + "concepts": [ + { + "label": "select", + "type": "TREE", + "connectors": [ + { + "label": "connector", + "table": "table1", + "validityDates": { + "label": "datum", + "column": "table1.datum" + }, + "filters": { + "label": "geschlecht", + "type": "COUNT", + "column": "table1.geschlecht", + "distinct": false + }, + "selects": [ { - "csv": "tests/query/ARRAY_CONCEPT_QUERY/content.csv", - "name": "table1", - "primaryColumn": { - "name": "pid", - "type": "STRING" - }, - "columns": [ - { - "name": "datum", - "type": "DATE" - }, - { - "name": "geschlecht", - "type": "STRING" - } - ] + "name": "count_genders", + "type": "COUNT", + "column": "table1.geschlecht" } - ] + ] + } + ] } + ], + "content": { + "tables": [ + { + "csv": "tests/query/ARRAY_CONCEPT_QUERY/content.csv", + "name": "table1", + "primaryColumn": { + "name": "pid", + "type": "STRING" + }, + "columns": [ + { + "name": "datum", + "type": "DATE" + }, + { + "name": "geschlecht", + "type": "STRING" + } + ] + } + ] + } } \ No newline at end of file From d5661e5c4e383a8d2d4cf21eba257ca6f2f693a9 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Wed, 2 Jul 2025 09:26:28 +0200 Subject: [PATCH 17/32] fix: treat no validity date as +/- inf --- .../cqelement/concept/CQConceptConverter.java | 19 +++++++++---------- .../cqelement/concept/TablePath.java | 4 ++-- .../dialect/HanaSqlFunctionProvider.java | 5 +++++ .../dialect/PostgreSqlFunctionProvider.java | 5 +++++ .../dialect/SqlFunctionProvider.java | 5 +++++ 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java index f6d816b691..ef56359d25 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java @@ -1,13 +1,5 @@ package com.bakdata.conquery.sql.conversion.cqelement.concept; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.Stream; - import com.bakdata.conquery.apiv1.query.concept.filter.CQTable; import com.bakdata.conquery.apiv1.query.concept.specific.CQConcept; import com.bakdata.conquery.models.datasets.Column; @@ -43,6 +35,13 @@ import com.bakdata.conquery.sql.conversion.model.select.SqlSelect; import com.bakdata.conquery.util.TablePrimaryColumnUtil; import com.google.common.base.Preconditions; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.jooq.Condition; import org.jooq.Field; import org.jooq.Record; @@ -150,10 +149,10 @@ public static SqlIdColumns convertIds(CQConcept cqConcept, CQTable cqTable, Conv } private static Optional convertValidityDate(CQTable cqTable, String connectorLabel, ConversionContext context) { + SqlFunctionProvider functionProvider = context.getSqlDialect().getFunctionProvider(); if (Objects.isNull(cqTable.findValidityDate())) { - return Optional.empty(); + return Optional.of(functionProvider.maxRange().asValidityDateRange(connectorLabel)); } - SqlFunctionProvider functionProvider = context.getSqlDialect().getFunctionProvider(); ColumnDateRange validityDate; if (context.getDateRestrictionRange() != null) { validityDate = functionProvider.forValidityDate(cqTable.findValidityDate(), context.getDateRestrictionRange()).asValidityDateRange(connectorLabel); diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java index 2c7a1bdea5..64041ad9b3 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java @@ -87,8 +87,8 @@ private static TablePathInfo collectConnectorTables(CQConcept cqConcept, CQTable tableInfo.addWithDefaultMapping(MANDATORY_STEPS); boolean eventDateSelectsPresent = cqTable.getSelects().stream().map(SelectId::resolve).anyMatch(Select::isEventDateSelect); - // no validity date aggregation possible nor necessary - if (cqTable.findValidityDate() == null || (!cqConcept.isAggregateEventDates() && !eventDateSelectsPresent)) { + // no validity date aggregation necessary + if (!cqConcept.isAggregateEventDates() && !eventDateSelectsPresent) { return tableInfo; } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/HanaSqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/HanaSqlFunctionProvider.java index 29f800e979..e353f9cc3a 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/HanaSqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/HanaSqlFunctionProvider.java @@ -111,6 +111,11 @@ public ColumnDateRange forValidityDate(ValidityDate validityDate) { return toColumnDateRange(validityDate); } + @Override + public ColumnDateRange maxRange() { + throw new UnsupportedOperationException("Not implemented yet"); + } + @Override public ColumnDateRange forValidityDate(ValidityDate validityDate, CDateRange dateRestriction) { diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java index 32ea34f4e0..a074913d25 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java @@ -112,6 +112,11 @@ public ColumnDateRange forValidityDate(ValidityDate validityDate) { return toColumnDateRange(validityDate); } + @Override + public ColumnDateRange maxRange() { + return ColumnDateRange.of(daterange(toDateField(MINUS_INFINITY_DATE_VALUE), toDateField(INFINITY_DATE_VALUE), "[]")); + } + @Override public ColumnDateRange forValidityDate(ValidityDate validityDate, CDateRange dateRestriction) { ColumnDateRange validityDateRange = toColumnDateRange(validityDate); diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java index 46572215ea..2bb8b6ec6f 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java @@ -74,6 +74,11 @@ public interface SqlFunctionProvider { */ ColumnDateRange forValidityDate(ValidityDate validityDate); + /** + * Creates a {@link ColumnDateRange} of maximum range. + */ + ColumnDateRange maxRange(); + /** * Creates a {@link ColumnDateRange} for a tables {@link CQTable}s validity date. The validity dates bounds will be restricted by the given date * restriction. From 34dfc26e26c389b3b91e471e71a8fa9a5070b10c Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Wed, 2 Jul 2025 09:26:55 +0200 Subject: [PATCH 18/32] fix: parse empty array expression as null --- .../conquery/sql/execution/DefaultResultSetProcessor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java b/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java index b17d3db261..216d35b161 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java @@ -109,10 +109,10 @@ private Number parseWithDateReader(String string) { private List fromString(ResultSet resultSet, int columnIndex, Function parseFunction) throws SQLException { String arrayExpression = resultSet.getString(columnIndex); - if (arrayExpression == null) { + if (arrayExpression == null || arrayExpression.chars().allMatch(c -> c == UNIT_SEPARATOR)) { return null; } - return Arrays.stream(arrayExpression.split(String.valueOf(ResultSetProcessor.UNIT_SEPARATOR))) + return Arrays.stream(arrayExpression.split(String.valueOf(UNIT_SEPARATOR))) .filter(Predicate.not(String::isBlank)) .map(parseFunction) .toList(); From 7282b96b45477abfddee9e13457e0a02501f893e Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Wed, 2 Jul 2025 09:27:28 +0200 Subject: [PATCH 19/32] REVERT_ME: move sql tests to excluded dir --- .../sql => EXCLUDED_sql}/and/different_concept/and.test.json | 0 .../sql => EXCLUDED_sql}/and/different_concept/content_1.csv | 0 .../sql => EXCLUDED_sql}/and/different_concept/content_2.csv | 0 .../sql => EXCLUDED_sql}/and/different_concept/expected.csv | 0 .../and/same_concept/and_same_concept.test.json | 0 .../{tests/sql => EXCLUDED_sql}/and/same_concept/content_1.csv | 0 .../{tests/sql => EXCLUDED_sql}/and/same_concept/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/combined/combined.test.json | 0 .../resources/{tests/sql => EXCLUDED_sql}/combined/content.csv | 0 .../resources/{tests/sql => EXCLUDED_sql}/combined/content2.csv | 0 .../resources/{tests/sql => EXCLUDED_sql}/combined/expected.csv | 0 .../date_restriction/date_restriction_date_column/content.csv | 0 .../date_restriction_date_column.test.json | 0 .../date_restriction/date_restriction_date_column/expected.csv | 0 .../date_restriction_no_validity_date/content.csv | 0 .../date_restriction_no_validity_date.test.json | 0 .../date_restriction_no_validity_date/expected.csv | 0 .../sql => EXCLUDED_sql}/date_restriction/daterange/content.csv | 0 .../date_restriction/daterange/daterange_column.test.json | 0 .../sql => EXCLUDED_sql}/date_restriction/daterange/expected.csv | 0 .../sql => EXCLUDED_sql}/date_restriction/only_max/content.csv | 0 .../sql => EXCLUDED_sql}/date_restriction/only_max/expected.csv | 0 .../date_restriction/only_max/only_max.test.json | 0 .../sql => EXCLUDED_sql}/date_restriction/only_min/content.csv | 0 .../sql => EXCLUDED_sql}/date_restriction/only_min/expected.csv | 0 .../date_restriction/only_min/only_min.test.json | 0 .../date_restriction/postgres_daterange/content.csv | 0 .../postgres_daterange/daterange_column.test.json | 0 .../date_restriction/postgres_daterange/expected.csv | 0 .../sql => EXCLUDED_sql}/date_restriction/simple_date/content.csv | 0 .../simple_date/date_restriction_simple_date.test.json | 0 .../date_restriction/simple_date/expected.csv | 0 .../external/SIMPLE_CQEXTERNAL_QUERY.test.json | 0 .../resources/{tests/sql => EXCLUDED_sql}/external/content.csv | 0 .../resources/{tests/sql => EXCLUDED_sql}/external/expected.csv | 0 .../filter/big_multi_select/big_multi_select.test.json | 0 .../sql => EXCLUDED_sql}/filter/big_multi_select/content.csv | 0 .../sql => EXCLUDED_sql}/filter/big_multi_select/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/count/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/count/count.test.json | 0 .../{tests/sql => EXCLUDED_sql}/filter/count/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/count_distinct/content.csv | 0 .../filter/count_distinct/count_distinct.test.json | 0 .../sql => EXCLUDED_sql}/filter/count_distinct/expected.csv | 0 .../filter/count_quarters/date_range/content.csv | 0 .../filter/count_quarters/date_range/count_quarters.test.json | 0 .../filter/count_quarters/date_range/expected.csv | 0 .../filter/count_quarters/postgres/content.csv | 0 .../filter/count_quarters/postgres/daterange_column.test.json | 0 .../filter/count_quarters/postgres/expected.csv | 0 .../filter/count_quarters/single_date/content.csv | 0 .../filter/count_quarters/single_date/count_quarters.test.json | 0 .../filter/count_quarters/single_date/expected.csv | 0 .../filter/date_distance/centuries/centuries.test.json | 0 .../filter/date_distance/centuries/content.csv | 0 .../filter/date_distance/centuries/expected.csv | 0 .../filter/date_distance/days_with_date_restriction/content.csv | 0 .../days_with_date_restriction.test.json | 0 .../filter/date_distance/days_with_date_restriction/expected.csv | 0 .../date_distance/days_without_date_restriction/content.csv | 0 .../days_without_date_restriction.test.json | 0 .../date_distance/days_without_date_restriction/expected.csv | 0 .../sql => EXCLUDED_sql}/filter/date_distance/decades/content.csv | 0 .../filter/date_distance/decades/decades.test.json | 0 .../filter/date_distance/decades/expected.csv | 0 .../sql => EXCLUDED_sql}/filter/date_distance/months/content.csv | 0 .../sql => EXCLUDED_sql}/filter/date_distance/months/expected.csv | 0 .../filter/date_distance/months/months.test.json | 0 .../sql => EXCLUDED_sql}/filter/date_distance/years/content.csv | 0 .../sql => EXCLUDED_sql}/filter/date_distance/years/expected.csv | 0 .../filter/date_distance/years/years.test.json | 0 .../resources/{tests/sql => EXCLUDED_sql}/filter/flag/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/flag/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/flag/flag.test.json | 0 .../{tests/sql => EXCLUDED_sql}/filter/multi_select/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/multi_select/expected.csv | 0 .../filter/multi_select/multi_select.test.json | 0 .../{tests/sql => EXCLUDED_sql}/filter/number/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/number/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/number/number.test.json | 0 .../filter/number_money/integer_range/content.csv | 0 .../filter/number_money/integer_range/expected.csv | 0 .../filter/number_money/integer_range/number_money.test.json | 0 .../sql => EXCLUDED_sql}/filter/number_only_max/content.csv | 0 .../sql => EXCLUDED_sql}/filter/number_only_max/expected.csv | 0 .../filter/number_only_max/number_only_max.test.json | 0 .../sql => EXCLUDED_sql}/filter/number_only_min/content.csv | 0 .../sql => EXCLUDED_sql}/filter/number_only_min/expected.csv | 0 .../filter/number_only_min/number_only_min.test.json | 0 .../{tests/sql => EXCLUDED_sql}/filter/single_select/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/single_select/expected.csv | 0 .../filter/single_select/single_select.test.json | 0 .../resources/{tests/sql => EXCLUDED_sql}/filter/sum/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/sum/diffsum/content.csv | 0 .../sql => EXCLUDED_sql}/filter/sum/diffsum/diffsum.test.json | 0 .../{tests/sql => EXCLUDED_sql}/filter/sum/diffsum/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/sum/distinct/content.csv | 0 .../filter/sum/distinct/distinct-sum.test.json | 0 .../{tests/sql => EXCLUDED_sql}/filter/sum/distinct/expected.csv | 0 .../resources/{tests/sql => EXCLUDED_sql}/filter/sum/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/filter/sum/sum.test.json | 0 .../form/ABSOLUT/ALIGNMENT/QUARTER YEAR.test.json | 0 .../form/ABSOLUT/ALIGNMENT/QUARTER_DAY.test.json | 0 .../form/ABSOLUT/ALIGNMENT/YEAR QUARTER.test.json | 0 .../form/ABSOLUT/ALIGNMENT/YEAR YEAR.test.json | 0 .../sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/quarter_day.csv | 0 .../sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/quarter_year.csv | 0 .../form/ABSOLUT/ALIGNMENT/year_quarter_expected.csv | 0 .../form/ABSOLUT/ALIGNMENT/year_year_expected.csv | 0 .../form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.test.json | 0 .../MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.test.json | 0 .../MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.test.json | 0 .../form/ABSOLUT/MULTIPLE_FEATURES/expected.csv | 0 .../form/ABSOLUT/MULTIPLE_FEATURES/expected_and_connector.csv | 0 .../form/ABSOLUT/MULTIPLE_FEATURES/expected_or_connector.csv | 0 .../ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json | 0 .../form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json | 0 .../form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json | 0 .../form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json | 0 .../ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json | 0 .../form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json | 0 .../form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json | 0 .../form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json | 0 .../form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json | 0 .../sql => EXCLUDED_sql}/form/FULL_EXPORT_FORM/expected.csv | 0 .../form/RELATIVE/DAYS_NEUTRAL/DAYS.test.json | 0 .../sql => EXCLUDED_sql}/form/RELATIVE/DAYS_NEUTRAL/expected.csv | 0 .../form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.test.json | 0 .../form/RELATIVE/QUARTERS_AFTER/expected.csv | 0 .../form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.test.json | 0 .../form/RELATIVE/QUARTERS_NEUTRAL/expected.csv | 0 .../form/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json | 0 .../form/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json | 0 .../{tests/sql => EXCLUDED_sql}/multiple_tables/au-content.csv | 0 .../{tests/sql => EXCLUDED_sql}/multiple_tables/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/multiple_tables/kh-content.csv | 0 .../multiple_tables/multiple_tables.test.json | 0 .../resources/{tests/sql => EXCLUDED_sql}/nested/content1.csv | 0 .../resources/{tests/sql => EXCLUDED_sql}/nested/content2.csv | 0 .../resources/{tests/sql => EXCLUDED_sql}/nested/expected.csv | 0 .../resources/{tests/sql => EXCLUDED_sql}/nested/nested.test.json | 0 .../test/resources/{tests/sql => EXCLUDED_sql}/not/content.csv | 0 .../test/resources/{tests/sql => EXCLUDED_sql}/not/expected.csv | 0 .../test/resources/{tests/sql => EXCLUDED_sql}/not/not.test.json | 0 .../{tests/sql => EXCLUDED_sql}/not/with_sibling/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/not/with_sibling/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/not/with_sibling/not.test.json | 0 .../sql => EXCLUDED_sql}/or/different_concept/content_1.csv | 0 .../sql => EXCLUDED_sql}/or/different_concept/content_2.csv | 0 .../{tests/sql => EXCLUDED_sql}/or/different_concept/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/or/different_concept/or.test.json | 0 .../{tests/sql => EXCLUDED_sql}/or/same_concept/content_1.csv | 0 .../{tests/sql => EXCLUDED_sql}/or/same_concept/expected.csv | 0 .../or/same_concept/or_same_concept.test.json | 0 .../sql => EXCLUDED_sql}/secondary_id/SECONDARY_IDS.test.json | 0 .../{tests/sql => EXCLUDED_sql}/secondary_id/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/secondary_id/content2.csv | 0 .../secondary_id/date_mode_logical/SECONDARY_IDS.test.json | 0 .../secondary_id/date_mode_logical/content.csv | 0 .../secondary_id/date_mode_logical/content2.csv | 0 .../secondary_id/date_mode_logical/expected.csv | 0 .../secondary_id/excluded/SECONDARY_IDS_EXCLUDED.test.json | 0 .../{tests/sql => EXCLUDED_sql}/secondary_id/expected.csv | 0 .../secondary_id/mixed/SECONDARY_IDS_MIXED.test.json | 0 .../{tests/sql => EXCLUDED_sql}/secondary_id/mixed/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/secondary_id/mixed/content2.csv | 0 .../{tests/sql => EXCLUDED_sql}/secondary_id/mixed/expected.csv | 0 .../sql => EXCLUDED_sql}/selects/concept_values/content.csv | 0 .../sql => EXCLUDED_sql}/selects/concept_values/content2.csv | 0 .../sql => EXCLUDED_sql}/selects/concept_values/expected.csv | 0 .../selects/concept_values/single_connector.test.json | 0 .../selects/concept_values/two_connectors.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/count/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/count/count.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/count/expected.csv | 0 .../sql => EXCLUDED_sql}/selects/count_distinct/content.csv | 0 .../selects/count_distinct/count_distinct.test.json | 0 .../sql => EXCLUDED_sql}/selects/count_distinct/expected.csv | 0 .../selects/count_quarters/date_range/content.csv | 0 .../selects/count_quarters/date_range/count_quarters.test.json | 0 .../selects/count_quarters/date_range/expected.csv | 0 .../selects/count_quarters/postgres/content.csv | 0 .../selects/count_quarters/postgres/daterange_column.test.json | 0 .../selects/count_quarters/postgres/expected.csv | 0 .../selects/count_quarters/single_date/content.csv | 0 .../selects/count_quarters/single_date/count_quarters.test.json | 0 .../selects/count_quarters/single_date/expected.csv | 0 .../selects/date_distance/centuries/centuries.test.json | 0 .../selects/date_distance/centuries/content.csv | 0 .../selects/date_distance/centuries/expected.csv | 0 .../selects/date_distance/days_with_date_restriction/content.csv | 0 .../days_with_date_restriction.test.json | 0 .../selects/date_distance/days_with_date_restriction/expected.csv | 0 .../date_distance/days_without_date_restriction/content.csv | 0 .../days_without_date_restriction.test.json | 0 .../date_distance/days_without_date_restriction/expected.csv | 0 .../selects/date_distance/decades/content.csv | 0 .../selects/date_distance/decades/decades.test.json | 0 .../selects/date_distance/decades/expected.csv | 0 .../sql => EXCLUDED_sql}/selects/date_distance/months/content.csv | 0 .../selects/date_distance/months/expected.csv | 0 .../selects/date_distance/months/months.test.json | 0 .../sql => EXCLUDED_sql}/selects/date_distance/years/content.csv | 0 .../sql => EXCLUDED_sql}/selects/date_distance/years/expected.csv | 0 .../selects/date_distance/years/years.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/date_union/content.csv | 0 .../sql => EXCLUDED_sql}/selects/date_union/date_union.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/date_union/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/distinct/content.csv | 0 .../sql => EXCLUDED_sql}/selects/distinct/distinct.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/distinct/expected.csv | 0 .../selects/exists/exists_on_connector/content_1.csv | 0 .../selects/exists/exists_on_connector/content_2.csv | 0 .../selects/exists/exists_on_connector/content_3.csv | 0 .../selects/exists/exists_on_connector/exists.test.json | 0 .../selects/exists/exists_on_connector/expected.csv | 0 .../selects/exists/exists_with_other_selects/content.csv | 0 .../exists_with_other_selects/exists_with_other_selects.test.json | 0 .../selects/exists/exists_with_other_selects/expected.csv | 0 .../sql => EXCLUDED_sql}/selects/exists/single_exists/content.csv | 0 .../selects/exists/single_exists/exists.test.json | 0 .../selects/exists/single_exists/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/first/date/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/first/date/expected.csv | 0 .../sql => EXCLUDED_sql}/selects/first/date/number_date.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/first/money/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/first/money/expected.csv | 0 .../selects/first/money/number_money.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/first/number/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/first/number/expected.csv | 0 .../sql => EXCLUDED_sql}/selects/first/number/first.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/flag/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/flag/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/flag/flag.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/last/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/last/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/last/last.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/random/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/random/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/random/random.test.json | 0 .../sql => EXCLUDED_sql}/selects/same_select_2_times/content.csv | 0 .../sql => EXCLUDED_sql}/selects/same_select_2_times/expected.csv | 0 .../selects/same_select_2_times/same_select.test.json | 0 .../resources/{tests/sql => EXCLUDED_sql}/selects/sum/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/sum/diffsum/content.csv | 0 .../sql => EXCLUDED_sql}/selects/sum/diffsum/diffsum.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/sum/diffsum/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/sum/distinct/content.csv | 0 .../selects/sum/distinct/distinct-sum.test.json | 0 .../{tests/sql => EXCLUDED_sql}/selects/sum/distinct/expected.csv | 0 .../sql => EXCLUDED_sql}/selects/sum/duration_sum/content.csv | 0 .../selects/sum/duration_sum/duration_sum.test.json | 0 .../sql => EXCLUDED_sql}/selects/sum/duration_sum/expected.csv | 0 .../selects/sum/event_duration_sum/content.csv | 0 .../selects/sum/event_duration_sum/duration_sum.test.json | 0 .../selects/sum/event_duration_sum/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/sum/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/selects/sum/sum.test.json | 0 .../selects/validity_date/aggregation/block/and/content_1.csv | 0 .../selects/validity_date/aggregation/block/and/content_2.csv | 0 .../selects/validity_date/aggregation/block/and/expected.csv | 0 .../selects/validity_date/aggregation/block/and/none.test.json | 0 .../selects/validity_date/aggregation/block/not/content_1.csv | 0 .../selects/validity_date/aggregation/block/not/expected.csv | 0 .../selects/validity_date/aggregation/block/not/negate.test.json | 0 .../selects/validity_date/aggregation/intersect/content_1.csv | 0 .../selects/validity_date/aggregation/intersect/content_2.csv | 0 .../selects/validity_date/aggregation/intersect/expected.csv | 0 .../validity_date/aggregation/intersect/intersect.test.json | 0 .../selects/validity_date/aggregation/merge/content_1.csv | 0 .../selects/validity_date/aggregation/merge/content_2.csv | 0 .../selects/validity_date/aggregation/merge/expected.csv | 0 .../selects/validity_date/aggregation/merge/merge.test.json | 0 .../selects/validity_date/aggregation/negate/content_1.csv | 0 .../selects/validity_date/aggregation/negate/expected.csv | 0 .../selects/validity_date/aggregation/negate/negate.test.json | 0 .../validity_date/aggregation/no_validity_date/content_1.csv | 0 .../validity_date/aggregation/no_validity_date/content_2.csv | 0 .../validity_date/aggregation/no_validity_date/expected.csv | 0 .../aggregation/no_validity_date/no_validity_date.test.json | 0 .../selects/validity_date/aggregation/only_1_date/content_1.csv | 0 .../selects/validity_date/aggregation/only_1_date/content_2.csv | 0 .../selects/validity_date/aggregation/only_1_date/expected.csv | 0 .../validity_date/aggregation/only_1_date/only_1_date.test.json | 0 .../selects/validity_date/default/content.csv | 0 .../selects/validity_date/default/expected.csv | 0 .../selects/validity_date/default/validity_date_default.test.json | 0 .../EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json | 0 .../event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json | 0 .../selects/validity_date/event_date_union/content.csv | 0 .../validity_date/event_date_union/expected_no_restriction.csv | 0 .../validity_date/event_date_union/expected_restriction.csv | 0 .../validity_date/excluded_from_time_aggregation/content.csv | 0 .../validity_date/excluded_from_time_aggregation/expected.csv | 0 .../validity_date_excluded.test.json | 0 .../selects/validity_date/multirange/content.csv | 0 .../selects/validity_date/multirange/expected.csv | 0 .../selects/validity_date/multirange/multi_range.test.json | 0 .../resources/{tests/sql => EXCLUDED_sql}/tree/nested/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/tree/nested/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/tree/nested/nested.test.json | 0 .../{tests/sql => EXCLUDED_sql}/tree/prefix_range/expected.csv | 0 .../{tests/sql => EXCLUDED_sql}/tree/prefix_range/kh-content.csv | 0 .../sql => EXCLUDED_sql}/tree/prefix_range/prefix_range.test.json | 0 .../{tests/sql => EXCLUDED_sql}/tree/with_parent/content.csv | 0 .../{tests/sql => EXCLUDED_sql}/tree/with_parent/expected.csv | 0 .../sql => EXCLUDED_sql}/tree/with_parent/with_parent.test.json | 0 .../resources/{tests/sql => EXCLUDED_sql}/yes/cqyes.test.json | 0 .../test/resources/{tests/sql => EXCLUDED_sql}/yes/entities.csv | 0 .../test/resources/{tests/sql => EXCLUDED_sql}/yes/expected.csv | 0 310 files changed, 0 insertions(+), 0 deletions(-) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/and/different_concept/and.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/and/different_concept/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/and/different_concept/content_2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/and/different_concept/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/and/same_concept/and_same_concept.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/and/same_concept/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/and/same_concept/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/combined/combined.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/combined/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/combined/content2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/combined/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/date_restriction_date_column/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/date_restriction_date_column/date_restriction_date_column.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/date_restriction_date_column/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/date_restriction_no_validity_date/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/date_restriction_no_validity_date/date_restriction_no_validity_date.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/date_restriction_no_validity_date/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/daterange/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/daterange/daterange_column.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/daterange/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/only_max/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/only_max/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/only_max/only_max.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/only_min/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/only_min/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/only_min/only_min.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/postgres_daterange/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/postgres_daterange/daterange_column.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/postgres_daterange/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/simple_date/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/simple_date/date_restriction_simple_date.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/date_restriction/simple_date/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/external/SIMPLE_CQEXTERNAL_QUERY.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/external/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/external/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/big_multi_select/big_multi_select.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/big_multi_select/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/big_multi_select/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count/count.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_distinct/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_distinct/count_distinct.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_distinct/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_quarters/date_range/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_quarters/date_range/count_quarters.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_quarters/date_range/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_quarters/postgres/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_quarters/postgres/daterange_column.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_quarters/postgres/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_quarters/single_date/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_quarters/single_date/count_quarters.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/count_quarters/single_date/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/centuries/centuries.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/centuries/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/centuries/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/days_with_date_restriction/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/days_with_date_restriction/days_with_date_restriction.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/days_with_date_restriction/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/days_without_date_restriction/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/days_without_date_restriction/days_without_date_restriction.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/days_without_date_restriction/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/decades/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/decades/decades.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/decades/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/months/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/months/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/months/months.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/years/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/years/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/date_distance/years/years.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/flag/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/flag/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/flag/flag.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/multi_select/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/multi_select/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/multi_select/multi_select.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number/number.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number_money/integer_range/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number_money/integer_range/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number_money/integer_range/number_money.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number_only_max/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number_only_max/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number_only_max/number_only_max.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number_only_min/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number_only_min/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/number_only_min/number_only_min.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/single_select/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/single_select/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/single_select/single_select.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/sum/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/sum/diffsum/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/sum/diffsum/diffsum.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/sum/diffsum/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/sum/distinct/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/sum/distinct/distinct-sum.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/sum/distinct/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/sum/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/filter/sum/sum.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/QUARTER YEAR.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/QUARTER_DAY.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/YEAR QUARTER.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/YEAR YEAR.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/quarter_day.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/quarter_year.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/year_quarter_expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/ALIGNMENT/year_year_expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/MULTIPLE_FEATURES/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/MULTIPLE_FEATURES/expected_and_connector.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/MULTIPLE_FEATURES/expected_or_connector.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/FULL_EXPORT_FORM/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/RELATIVE/DAYS_NEUTRAL/DAYS.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/RELATIVE/DAYS_NEUTRAL/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/RELATIVE/QUARTERS_AFTER/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/RELATIVE/QUARTERS_NEUTRAL/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/multiple_tables/au-content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/multiple_tables/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/multiple_tables/kh-content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/multiple_tables/multiple_tables.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/nested/content1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/nested/content2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/nested/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/nested/nested.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/not/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/not/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/not/not.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/not/with_sibling/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/not/with_sibling/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/not/with_sibling/not.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/or/different_concept/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/or/different_concept/content_2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/or/different_concept/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/or/different_concept/or.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/or/same_concept/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/or/same_concept/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/or/same_concept/or_same_concept.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/SECONDARY_IDS.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/content2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/date_mode_logical/SECONDARY_IDS.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/date_mode_logical/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/date_mode_logical/content2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/date_mode_logical/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/excluded/SECONDARY_IDS_EXCLUDED.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/mixed/SECONDARY_IDS_MIXED.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/mixed/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/mixed/content2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/secondary_id/mixed/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/concept_values/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/concept_values/content2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/concept_values/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/concept_values/single_connector.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/concept_values/two_connectors.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count/count.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_distinct/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_distinct/count_distinct.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_distinct/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_quarters/date_range/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_quarters/date_range/count_quarters.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_quarters/date_range/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_quarters/postgres/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_quarters/postgres/daterange_column.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_quarters/postgres/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_quarters/single_date/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_quarters/single_date/count_quarters.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/count_quarters/single_date/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/centuries/centuries.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/centuries/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/centuries/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/days_with_date_restriction/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/days_with_date_restriction/days_with_date_restriction.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/days_with_date_restriction/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/days_without_date_restriction/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/days_without_date_restriction/days_without_date_restriction.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/days_without_date_restriction/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/decades/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/decades/decades.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/decades/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/months/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/months/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/months/months.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/years/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/years/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_distance/years/years.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_union/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_union/date_union.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/date_union/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/distinct/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/distinct/distinct.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/distinct/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/exists_on_connector/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/exists_on_connector/content_2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/exists_on_connector/content_3.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/exists_on_connector/exists.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/exists_on_connector/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/exists_with_other_selects/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/exists_with_other_selects/exists_with_other_selects.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/exists_with_other_selects/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/single_exists/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/single_exists/exists.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/exists/single_exists/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/first/date/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/first/date/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/first/date/number_date.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/first/money/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/first/money/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/first/money/number_money.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/first/number/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/first/number/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/first/number/first.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/flag/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/flag/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/flag/flag.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/last/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/last/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/last/last.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/random/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/random/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/random/random.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/same_select_2_times/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/same_select_2_times/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/same_select_2_times/same_select.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/diffsum/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/diffsum/diffsum.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/diffsum/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/distinct/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/distinct/distinct-sum.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/distinct/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/duration_sum/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/duration_sum/duration_sum.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/duration_sum/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/event_duration_sum/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/event_duration_sum/duration_sum.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/event_duration_sum/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/sum/sum.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/block/and/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/block/and/content_2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/block/and/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/block/and/none.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/block/not/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/block/not/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/block/not/negate.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/intersect/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/intersect/content_2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/intersect/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/intersect/intersect.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/merge/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/merge/content_2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/merge/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/merge/merge.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/negate/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/negate/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/negate/negate.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/no_validity_date/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/no_validity_date/content_2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/no_validity_date/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/no_validity_date/no_validity_date.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/only_1_date/content_1.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/only_1_date/content_2.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/only_1_date/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/aggregation/only_1_date/only_1_date.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/default/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/default/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/default/validity_date_default.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/event_date_union/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/event_date_union/expected_no_restriction.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/event_date_union/expected_restriction.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/excluded_from_time_aggregation/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/excluded_from_time_aggregation/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/excluded_from_time_aggregation/validity_date_excluded.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/multirange/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/multirange/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/selects/validity_date/multirange/multi_range.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/tree/nested/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/tree/nested/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/tree/nested/nested.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/tree/prefix_range/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/tree/prefix_range/kh-content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/tree/prefix_range/prefix_range.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/tree/with_parent/content.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/tree/with_parent/expected.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/tree/with_parent/with_parent.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/yes/cqyes.test.json (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/yes/entities.csv (100%) rename backend/src/test/resources/{tests/sql => EXCLUDED_sql}/yes/expected.csv (100%) diff --git a/backend/src/test/resources/tests/sql/and/different_concept/and.test.json b/backend/src/test/resources/EXCLUDED_sql/and/different_concept/and.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/and/different_concept/and.test.json rename to backend/src/test/resources/EXCLUDED_sql/and/different_concept/and.test.json diff --git a/backend/src/test/resources/tests/sql/and/different_concept/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/and/different_concept/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/and/different_concept/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/and/different_concept/content_1.csv diff --git a/backend/src/test/resources/tests/sql/and/different_concept/content_2.csv b/backend/src/test/resources/EXCLUDED_sql/and/different_concept/content_2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/and/different_concept/content_2.csv rename to backend/src/test/resources/EXCLUDED_sql/and/different_concept/content_2.csv diff --git a/backend/src/test/resources/tests/sql/and/different_concept/expected.csv b/backend/src/test/resources/EXCLUDED_sql/and/different_concept/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/and/different_concept/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/and/different_concept/expected.csv diff --git a/backend/src/test/resources/tests/sql/and/same_concept/and_same_concept.test.json b/backend/src/test/resources/EXCLUDED_sql/and/same_concept/and_same_concept.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/and/same_concept/and_same_concept.test.json rename to backend/src/test/resources/EXCLUDED_sql/and/same_concept/and_same_concept.test.json diff --git a/backend/src/test/resources/tests/sql/and/same_concept/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/and/same_concept/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/and/same_concept/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/and/same_concept/content_1.csv diff --git a/backend/src/test/resources/tests/sql/and/same_concept/expected.csv b/backend/src/test/resources/EXCLUDED_sql/and/same_concept/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/and/same_concept/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/and/same_concept/expected.csv diff --git a/backend/src/test/resources/tests/sql/combined/combined.test.json b/backend/src/test/resources/EXCLUDED_sql/combined/combined.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/combined/combined.test.json rename to backend/src/test/resources/EXCLUDED_sql/combined/combined.test.json diff --git a/backend/src/test/resources/tests/sql/combined/content.csv b/backend/src/test/resources/EXCLUDED_sql/combined/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/combined/content.csv rename to backend/src/test/resources/EXCLUDED_sql/combined/content.csv diff --git a/backend/src/test/resources/tests/sql/combined/content2.csv b/backend/src/test/resources/EXCLUDED_sql/combined/content2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/combined/content2.csv rename to backend/src/test/resources/EXCLUDED_sql/combined/content2.csv diff --git a/backend/src/test/resources/tests/sql/combined/expected.csv b/backend/src/test/resources/EXCLUDED_sql/combined/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/combined/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/combined/expected.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/content.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_date_column/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/content.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_date_column/content.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/date_restriction_date_column.test.json b/backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_date_column/date_restriction_date_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/date_restriction_date_column.test.json rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_date_column/date_restriction_date_column.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/expected.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_date_column/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/date_restriction_date_column/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_date_column/expected.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/content.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_no_validity_date/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/content.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_no_validity_date/content.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/date_restriction_no_validity_date.test.json b/backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_no_validity_date/date_restriction_no_validity_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/date_restriction_no_validity_date.test.json rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_no_validity_date/date_restriction_no_validity_date.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/expected.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_no_validity_date/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/date_restriction_no_validity_date/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/date_restriction_no_validity_date/expected.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/daterange/content.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/daterange/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/daterange/content.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/daterange/content.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/daterange/daterange_column.test.json b/backend/src/test/resources/EXCLUDED_sql/date_restriction/daterange/daterange_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/daterange/daterange_column.test.json rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/daterange/daterange_column.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/daterange/expected.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/daterange/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/daterange/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/daterange/expected.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/only_max/content.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/only_max/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/only_max/content.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/only_max/content.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/only_max/expected.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/only_max/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/only_max/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/only_max/expected.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/only_max/only_max.test.json b/backend/src/test/resources/EXCLUDED_sql/date_restriction/only_max/only_max.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/only_max/only_max.test.json rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/only_max/only_max.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/only_min/content.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/only_min/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/only_min/content.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/only_min/content.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/only_min/expected.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/only_min/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/only_min/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/only_min/expected.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/only_min/only_min.test.json b/backend/src/test/resources/EXCLUDED_sql/date_restriction/only_min/only_min.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/only_min/only_min.test.json rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/only_min/only_min.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/content.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/postgres_daterange/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/content.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/postgres_daterange/content.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/daterange_column.test.json b/backend/src/test/resources/EXCLUDED_sql/date_restriction/postgres_daterange/daterange_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/daterange_column.test.json rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/postgres_daterange/daterange_column.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/expected.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/postgres_daterange/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/postgres_daterange/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/postgres_daterange/expected.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/simple_date/content.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/simple_date/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/simple_date/content.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/simple_date/content.csv diff --git a/backend/src/test/resources/tests/sql/date_restriction/simple_date/date_restriction_simple_date.test.json b/backend/src/test/resources/EXCLUDED_sql/date_restriction/simple_date/date_restriction_simple_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/simple_date/date_restriction_simple_date.test.json rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/simple_date/date_restriction_simple_date.test.json diff --git a/backend/src/test/resources/tests/sql/date_restriction/simple_date/expected.csv b/backend/src/test/resources/EXCLUDED_sql/date_restriction/simple_date/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/date_restriction/simple_date/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/date_restriction/simple_date/expected.csv diff --git a/backend/src/test/resources/tests/sql/external/SIMPLE_CQEXTERNAL_QUERY.test.json b/backend/src/test/resources/EXCLUDED_sql/external/SIMPLE_CQEXTERNAL_QUERY.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/external/SIMPLE_CQEXTERNAL_QUERY.test.json rename to backend/src/test/resources/EXCLUDED_sql/external/SIMPLE_CQEXTERNAL_QUERY.test.json diff --git a/backend/src/test/resources/tests/sql/external/content.csv b/backend/src/test/resources/EXCLUDED_sql/external/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/external/content.csv rename to backend/src/test/resources/EXCLUDED_sql/external/content.csv diff --git a/backend/src/test/resources/tests/sql/external/expected.csv b/backend/src/test/resources/EXCLUDED_sql/external/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/external/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/external/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/big_multi_select/big_multi_select.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/big_multi_select/big_multi_select.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/big_multi_select/big_multi_select.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/big_multi_select/big_multi_select.test.json diff --git a/backend/src/test/resources/tests/sql/filter/big_multi_select/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/big_multi_select/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/big_multi_select/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/big_multi_select/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/big_multi_select/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/big_multi_select/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/big_multi_select/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/big_multi_select/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/count/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/count/count.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/count/count.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count/count.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/count/count.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/count_distinct/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count_distinct/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_distinct/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count_distinct/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/count_distinct/count_distinct.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/count_distinct/count_distinct.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_distinct/count_distinct.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/count_distinct/count_distinct.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count_distinct/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count_distinct/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_distinct/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count_distinct/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/date_range/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/date_range/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/date_range/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/date_range/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/date_range/count_quarters.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/date_range/count_quarters.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/date_range/count_quarters.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/date_range/count_quarters.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/date_range/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/date_range/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/date_range/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/date_range/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/postgres/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/postgres/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/postgres/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/postgres/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/postgres/daterange_column.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/postgres/daterange_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/postgres/daterange_column.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/postgres/daterange_column.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/postgres/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/postgres/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/postgres/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/postgres/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/single_date/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/single_date/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/single_date/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/single_date/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/single_date/count_quarters.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/single_date/count_quarters.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/single_date/count_quarters.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/single_date/count_quarters.test.json diff --git a/backend/src/test/resources/tests/sql/filter/count_quarters/single_date/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/single_date/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/count_quarters/single_date/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/count_quarters/single_date/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/centuries/centuries.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/centuries/centuries.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/centuries/centuries.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/centuries/centuries.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/centuries/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/centuries/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/centuries/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/centuries/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/centuries/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/centuries/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/centuries/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/centuries/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_with_date_restriction/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_with_date_restriction/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/days_with_date_restriction.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_with_date_restriction/days_with_date_restriction.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/days_with_date_restriction.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_with_date_restriction/days_with_date_restriction.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_with_date_restriction/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/days_with_date_restriction/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_with_date_restriction/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_without_date_restriction/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_without_date_restriction/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/days_without_date_restriction.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_without_date_restriction/days_without_date_restriction.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/days_without_date_restriction.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_without_date_restriction/days_without_date_restriction.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_without_date_restriction/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/days_without_date_restriction/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/days_without_date_restriction/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/decades/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/decades/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/decades/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/decades/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/decades/decades.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/decades/decades.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/decades/decades.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/decades/decades.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/decades/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/decades/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/decades/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/decades/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/months/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/months/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/months/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/months/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/months/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/months/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/months/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/months/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/months/months.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/months/months.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/months/months.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/months/months.test.json diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/years/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/years/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/years/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/years/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/years/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/years/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/years/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/years/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/date_distance/years/years.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/date_distance/years/years.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/date_distance/years/years.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/date_distance/years/years.test.json diff --git a/backend/src/test/resources/tests/sql/filter/flag/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/flag/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/flag/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/flag/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/flag/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/flag/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/flag/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/flag/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/flag/flag.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/flag/flag.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/flag/flag.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/flag/flag.test.json diff --git a/backend/src/test/resources/tests/sql/filter/multi_select/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/multi_select/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/multi_select/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/multi_select/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/multi_select/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/multi_select/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/multi_select/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/multi_select/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/multi_select/multi_select.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/multi_select/multi_select.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/multi_select/multi_select.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/multi_select/multi_select.test.json diff --git a/backend/src/test/resources/tests/sql/filter/number/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/number/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/number/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/number/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/number/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/number/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/number/number.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/number/number.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number/number.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/number/number.test.json diff --git a/backend/src/test/resources/tests/sql/filter/number_money/integer_range/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/number_money/integer_range/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_money/integer_range/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/number_money/integer_range/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/number_money/integer_range/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/number_money/integer_range/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_money/integer_range/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/number_money/integer_range/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/number_money/integer_range/number_money.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/number_money/integer_range/number_money.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_money/integer_range/number_money.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/number_money/integer_range/number_money.test.json diff --git a/backend/src/test/resources/tests/sql/filter/number_only_max/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/number_only_max/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_only_max/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/number_only_max/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/number_only_max/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/number_only_max/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_only_max/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/number_only_max/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/number_only_max/number_only_max.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/number_only_max/number_only_max.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_only_max/number_only_max.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/number_only_max/number_only_max.test.json diff --git a/backend/src/test/resources/tests/sql/filter/number_only_min/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/number_only_min/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_only_min/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/number_only_min/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/number_only_min/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/number_only_min/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_only_min/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/number_only_min/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/number_only_min/number_only_min.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/number_only_min/number_only_min.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/number_only_min/number_only_min.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/number_only_min/number_only_min.test.json diff --git a/backend/src/test/resources/tests/sql/filter/single_select/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/single_select/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/single_select/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/single_select/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/single_select/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/single_select/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/single_select/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/single_select/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/single_select/single_select.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/single_select/single_select.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/single_select/single_select.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/single_select/single_select.test.json diff --git a/backend/src/test/resources/tests/sql/filter/sum/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/sum/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/sum/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/sum/diffsum/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/sum/diffsum/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/diffsum/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/sum/diffsum/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/sum/diffsum/diffsum.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/sum/diffsum/diffsum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/diffsum/diffsum.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/sum/diffsum/diffsum.test.json diff --git a/backend/src/test/resources/tests/sql/filter/sum/diffsum/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/sum/diffsum/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/diffsum/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/sum/diffsum/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/sum/distinct/content.csv b/backend/src/test/resources/EXCLUDED_sql/filter/sum/distinct/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/distinct/content.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/sum/distinct/content.csv diff --git a/backend/src/test/resources/tests/sql/filter/sum/distinct/distinct-sum.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/sum/distinct/distinct-sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/distinct/distinct-sum.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/sum/distinct/distinct-sum.test.json diff --git a/backend/src/test/resources/tests/sql/filter/sum/distinct/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/sum/distinct/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/distinct/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/sum/distinct/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/sum/expected.csv b/backend/src/test/resources/EXCLUDED_sql/filter/sum/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/filter/sum/expected.csv diff --git a/backend/src/test/resources/tests/sql/filter/sum/sum.test.json b/backend/src/test/resources/EXCLUDED_sql/filter/sum/sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/filter/sum/sum.test.json rename to backend/src/test/resources/EXCLUDED_sql/filter/sum/sum.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER YEAR.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/QUARTER YEAR.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER YEAR.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/QUARTER YEAR.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER_DAY.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/QUARTER_DAY.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/QUARTER_DAY.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/QUARTER_DAY.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR QUARTER.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/YEAR QUARTER.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR QUARTER.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/YEAR QUARTER.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR YEAR.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/YEAR YEAR.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/YEAR YEAR.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/YEAR YEAR.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/quarter_day.csv b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/quarter_day.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/quarter_day.csv rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/quarter_day.csv diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/quarter_year.csv b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/quarter_year.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/quarter_year.csv rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/quarter_year.csv diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/year_quarter_expected.csv b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/year_quarter_expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/year_quarter_expected.csv rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/year_quarter_expected.csv diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/year_year_expected.csv b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/year_year_expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/ALIGNMENT/year_year_expected.csv rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/ALIGNMENT/year_year_expected.csv diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_AND_CONNECTOR.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/MULTIPLE_FEATURES_OR_CONNECTOR.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/expected.csv b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/expected.csv diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/expected_and_connector.csv b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/expected_and_connector.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/expected_and_connector.csv rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/expected_and_connector.csv diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/expected_or_connector.csv b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/expected_or_connector.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/MULTIPLE_FEATURES/expected_or_connector.csv rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/MULTIPLE_FEATURES/expected_or_connector.csv diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json b/backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json diff --git a/backend/src/test/resources/tests/sql/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json b/backend/src/test/resources/EXCLUDED_sql/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json diff --git a/backend/src/test/resources/tests/sql/form/FULL_EXPORT_FORM/expected.csv b/backend/src/test/resources/EXCLUDED_sql/form/FULL_EXPORT_FORM/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/FULL_EXPORT_FORM/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/form/FULL_EXPORT_FORM/expected.csv diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.test.json b/backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/DAYS_NEUTRAL/DAYS.test.json diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/expected.csv b/backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/DAYS_NEUTRAL/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/DAYS_NEUTRAL/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/DAYS_NEUTRAL/expected.csv diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.test.json b/backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/QUARTERS_AFTER/REL_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/expected.csv b/backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/QUARTERS_AFTER/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_AFTER/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/QUARTERS_AFTER/expected.csv diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.test.json b/backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/QUARTERS_NEUTRAL/REL_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/expected.csv b/backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/QUARTERS_NEUTRAL/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/QUARTERS_NEUTRAL/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/QUARTERS_NEUTRAL/expected.csv diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json b/backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json diff --git a/backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json b/backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json rename to backend/src/test/resources/EXCLUDED_sql/form/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json diff --git a/backend/src/test/resources/tests/sql/multiple_tables/au-content.csv b/backend/src/test/resources/EXCLUDED_sql/multiple_tables/au-content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/multiple_tables/au-content.csv rename to backend/src/test/resources/EXCLUDED_sql/multiple_tables/au-content.csv diff --git a/backend/src/test/resources/tests/sql/multiple_tables/expected.csv b/backend/src/test/resources/EXCLUDED_sql/multiple_tables/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/multiple_tables/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/multiple_tables/expected.csv diff --git a/backend/src/test/resources/tests/sql/multiple_tables/kh-content.csv b/backend/src/test/resources/EXCLUDED_sql/multiple_tables/kh-content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/multiple_tables/kh-content.csv rename to backend/src/test/resources/EXCLUDED_sql/multiple_tables/kh-content.csv diff --git a/backend/src/test/resources/tests/sql/multiple_tables/multiple_tables.test.json b/backend/src/test/resources/EXCLUDED_sql/multiple_tables/multiple_tables.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/multiple_tables/multiple_tables.test.json rename to backend/src/test/resources/EXCLUDED_sql/multiple_tables/multiple_tables.test.json diff --git a/backend/src/test/resources/tests/sql/nested/content1.csv b/backend/src/test/resources/EXCLUDED_sql/nested/content1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/nested/content1.csv rename to backend/src/test/resources/EXCLUDED_sql/nested/content1.csv diff --git a/backend/src/test/resources/tests/sql/nested/content2.csv b/backend/src/test/resources/EXCLUDED_sql/nested/content2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/nested/content2.csv rename to backend/src/test/resources/EXCLUDED_sql/nested/content2.csv diff --git a/backend/src/test/resources/tests/sql/nested/expected.csv b/backend/src/test/resources/EXCLUDED_sql/nested/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/nested/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/nested/expected.csv diff --git a/backend/src/test/resources/tests/sql/nested/nested.test.json b/backend/src/test/resources/EXCLUDED_sql/nested/nested.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/nested/nested.test.json rename to backend/src/test/resources/EXCLUDED_sql/nested/nested.test.json diff --git a/backend/src/test/resources/tests/sql/not/content.csv b/backend/src/test/resources/EXCLUDED_sql/not/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/not/content.csv rename to backend/src/test/resources/EXCLUDED_sql/not/content.csv diff --git a/backend/src/test/resources/tests/sql/not/expected.csv b/backend/src/test/resources/EXCLUDED_sql/not/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/not/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/not/expected.csv diff --git a/backend/src/test/resources/tests/sql/not/not.test.json b/backend/src/test/resources/EXCLUDED_sql/not/not.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/not/not.test.json rename to backend/src/test/resources/EXCLUDED_sql/not/not.test.json diff --git a/backend/src/test/resources/tests/sql/not/with_sibling/content.csv b/backend/src/test/resources/EXCLUDED_sql/not/with_sibling/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/not/with_sibling/content.csv rename to backend/src/test/resources/EXCLUDED_sql/not/with_sibling/content.csv diff --git a/backend/src/test/resources/tests/sql/not/with_sibling/expected.csv b/backend/src/test/resources/EXCLUDED_sql/not/with_sibling/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/not/with_sibling/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/not/with_sibling/expected.csv diff --git a/backend/src/test/resources/tests/sql/not/with_sibling/not.test.json b/backend/src/test/resources/EXCLUDED_sql/not/with_sibling/not.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/not/with_sibling/not.test.json rename to backend/src/test/resources/EXCLUDED_sql/not/with_sibling/not.test.json diff --git a/backend/src/test/resources/tests/sql/or/different_concept/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/or/different_concept/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/or/different_concept/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/or/different_concept/content_1.csv diff --git a/backend/src/test/resources/tests/sql/or/different_concept/content_2.csv b/backend/src/test/resources/EXCLUDED_sql/or/different_concept/content_2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/or/different_concept/content_2.csv rename to backend/src/test/resources/EXCLUDED_sql/or/different_concept/content_2.csv diff --git a/backend/src/test/resources/tests/sql/or/different_concept/expected.csv b/backend/src/test/resources/EXCLUDED_sql/or/different_concept/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/or/different_concept/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/or/different_concept/expected.csv diff --git a/backend/src/test/resources/tests/sql/or/different_concept/or.test.json b/backend/src/test/resources/EXCLUDED_sql/or/different_concept/or.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/or/different_concept/or.test.json rename to backend/src/test/resources/EXCLUDED_sql/or/different_concept/or.test.json diff --git a/backend/src/test/resources/tests/sql/or/same_concept/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/or/same_concept/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/or/same_concept/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/or/same_concept/content_1.csv diff --git a/backend/src/test/resources/tests/sql/or/same_concept/expected.csv b/backend/src/test/resources/EXCLUDED_sql/or/same_concept/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/or/same_concept/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/or/same_concept/expected.csv diff --git a/backend/src/test/resources/tests/sql/or/same_concept/or_same_concept.test.json b/backend/src/test/resources/EXCLUDED_sql/or/same_concept/or_same_concept.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/or/same_concept/or_same_concept.test.json rename to backend/src/test/resources/EXCLUDED_sql/or/same_concept/or_same_concept.test.json diff --git a/backend/src/test/resources/tests/sql/secondary_id/SECONDARY_IDS.test.json b/backend/src/test/resources/EXCLUDED_sql/secondary_id/SECONDARY_IDS.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/SECONDARY_IDS.test.json rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/SECONDARY_IDS.test.json diff --git a/backend/src/test/resources/tests/sql/secondary_id/content.csv b/backend/src/test/resources/EXCLUDED_sql/secondary_id/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/content.csv rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/content.csv diff --git a/backend/src/test/resources/tests/sql/secondary_id/content2.csv b/backend/src/test/resources/EXCLUDED_sql/secondary_id/content2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/content2.csv rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/content2.csv diff --git a/backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/SECONDARY_IDS.test.json b/backend/src/test/resources/EXCLUDED_sql/secondary_id/date_mode_logical/SECONDARY_IDS.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/SECONDARY_IDS.test.json rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/date_mode_logical/SECONDARY_IDS.test.json diff --git a/backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/content.csv b/backend/src/test/resources/EXCLUDED_sql/secondary_id/date_mode_logical/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/content.csv rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/date_mode_logical/content.csv diff --git a/backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/content2.csv b/backend/src/test/resources/EXCLUDED_sql/secondary_id/date_mode_logical/content2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/content2.csv rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/date_mode_logical/content2.csv diff --git a/backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/expected.csv b/backend/src/test/resources/EXCLUDED_sql/secondary_id/date_mode_logical/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/date_mode_logical/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/date_mode_logical/expected.csv diff --git a/backend/src/test/resources/tests/sql/secondary_id/excluded/SECONDARY_IDS_EXCLUDED.test.json b/backend/src/test/resources/EXCLUDED_sql/secondary_id/excluded/SECONDARY_IDS_EXCLUDED.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/excluded/SECONDARY_IDS_EXCLUDED.test.json rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/excluded/SECONDARY_IDS_EXCLUDED.test.json diff --git a/backend/src/test/resources/tests/sql/secondary_id/expected.csv b/backend/src/test/resources/EXCLUDED_sql/secondary_id/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/expected.csv diff --git a/backend/src/test/resources/tests/sql/secondary_id/mixed/SECONDARY_IDS_MIXED.test.json b/backend/src/test/resources/EXCLUDED_sql/secondary_id/mixed/SECONDARY_IDS_MIXED.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/mixed/SECONDARY_IDS_MIXED.test.json rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/mixed/SECONDARY_IDS_MIXED.test.json diff --git a/backend/src/test/resources/tests/sql/secondary_id/mixed/content.csv b/backend/src/test/resources/EXCLUDED_sql/secondary_id/mixed/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/mixed/content.csv rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/mixed/content.csv diff --git a/backend/src/test/resources/tests/sql/secondary_id/mixed/content2.csv b/backend/src/test/resources/EXCLUDED_sql/secondary_id/mixed/content2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/mixed/content2.csv rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/mixed/content2.csv diff --git a/backend/src/test/resources/tests/sql/secondary_id/mixed/expected.csv b/backend/src/test/resources/EXCLUDED_sql/secondary_id/mixed/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/secondary_id/mixed/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/secondary_id/mixed/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/concept_values/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/concept_values/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/concept_values/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/concept_values/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/concept_values/content2.csv b/backend/src/test/resources/EXCLUDED_sql/selects/concept_values/content2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/concept_values/content2.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/concept_values/content2.csv diff --git a/backend/src/test/resources/tests/sql/selects/concept_values/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/concept_values/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/concept_values/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/concept_values/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/concept_values/single_connector.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/concept_values/single_connector.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/concept_values/single_connector.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/concept_values/single_connector.test.json diff --git a/backend/src/test/resources/tests/sql/selects/concept_values/two_connectors.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/concept_values/two_connectors.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/concept_values/two_connectors.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/concept_values/two_connectors.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/count/count.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/count/count.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count/count.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/count/count.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/count_distinct/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count_distinct/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_distinct/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count_distinct/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/count_distinct/count_distinct.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/count_distinct/count_distinct.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_distinct/count_distinct.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/count_distinct/count_distinct.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count_distinct/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count_distinct/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_distinct/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count_distinct/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/date_range/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/date_range/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/date_range/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/date_range/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/date_range/count_quarters.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/date_range/count_quarters.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/date_range/count_quarters.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/date_range/count_quarters.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/date_range/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/date_range/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/date_range/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/date_range/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/postgres/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/postgres/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/postgres/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/postgres/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/postgres/daterange_column.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/postgres/daterange_column.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/postgres/daterange_column.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/postgres/daterange_column.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/postgres/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/postgres/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/postgres/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/postgres/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/single_date/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/single_date/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/single_date/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/single_date/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/single_date/count_quarters.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/single_date/count_quarters.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/single_date/count_quarters.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/single_date/count_quarters.test.json diff --git a/backend/src/test/resources/tests/sql/selects/count_quarters/single_date/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/single_date/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/count_quarters/single_date/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/count_quarters/single_date/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/centuries/centuries.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/centuries/centuries.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/centuries/centuries.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/centuries/centuries.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/centuries/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/centuries/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/centuries/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/centuries/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/centuries/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/centuries/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/centuries/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/centuries/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_with_date_restriction/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_with_date_restriction/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/days_with_date_restriction.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_with_date_restriction/days_with_date_restriction.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/days_with_date_restriction.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_with_date_restriction/days_with_date_restriction.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_with_date_restriction/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/days_with_date_restriction/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_with_date_restriction/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_without_date_restriction/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_without_date_restriction/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/days_without_date_restriction.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_without_date_restriction/days_without_date_restriction.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/days_without_date_restriction.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_without_date_restriction/days_without_date_restriction.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_without_date_restriction/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/days_without_date_restriction/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/days_without_date_restriction/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/decades/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/decades/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/decades/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/decades/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/decades/decades.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/decades/decades.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/decades/decades.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/decades/decades.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/decades/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/decades/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/decades/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/decades/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/months/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/months/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/months/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/months/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/months/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/months/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/months/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/months/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/months/months.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/months/months.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/months/months.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/months/months.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/years/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/years/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/years/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/years/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/years/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/years/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/years/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/years/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_distance/years/years.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/date_distance/years/years.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_distance/years/years.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/date_distance/years/years.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_union/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_union/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_union/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_union/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/date_union/date_union.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/date_union/date_union.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_union/date_union.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/date_union/date_union.test.json diff --git a/backend/src/test/resources/tests/sql/selects/date_union/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/date_union/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/date_union/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/date_union/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/distinct/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/distinct/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/distinct/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/distinct/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/distinct/distinct.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/distinct/distinct.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/distinct/distinct.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/distinct/distinct.test.json diff --git a/backend/src/test/resources/tests/sql/selects/distinct/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/distinct/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/distinct/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/distinct/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/content_1.csv diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/content_2.csv b/backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/content_2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/content_2.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/content_2.csv diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/content_3.csv b/backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/content_3.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/content_3.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/content_3.csv diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/exists.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/exists.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/exists.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/exists.test.json diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_on_connector/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_on_connector/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_with_other_selects/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_with_other_selects/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/exists_with_other_selects.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_with_other_selects/exists_with_other_selects.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/exists_with_other_selects.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_with_other_selects/exists_with_other_selects.test.json diff --git a/backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_with_other_selects/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/exists_with_other_selects/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/exists_with_other_selects/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/exists/single_exists/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/exists/single_exists/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/single_exists/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/single_exists/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/exists/single_exists/exists.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/exists/single_exists/exists.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/single_exists/exists.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/single_exists/exists.test.json diff --git a/backend/src/test/resources/tests/sql/selects/exists/single_exists/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/exists/single_exists/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/exists/single_exists/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/exists/single_exists/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/first/date/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/first/date/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/date/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/first/date/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/first/date/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/first/date/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/date/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/first/date/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/first/date/number_date.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/first/date/number_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/date/number_date.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/first/date/number_date.test.json diff --git a/backend/src/test/resources/tests/sql/selects/first/money/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/first/money/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/money/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/first/money/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/first/money/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/first/money/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/money/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/first/money/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/first/money/number_money.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/first/money/number_money.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/money/number_money.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/first/money/number_money.test.json diff --git a/backend/src/test/resources/tests/sql/selects/first/number/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/first/number/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/number/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/first/number/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/first/number/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/first/number/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/number/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/first/number/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/first/number/first.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/first/number/first.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/first/number/first.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/first/number/first.test.json diff --git a/backend/src/test/resources/tests/sql/selects/flag/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/flag/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/flag/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/flag/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/flag/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/flag/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/flag/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/flag/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/flag/flag.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/flag/flag.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/flag/flag.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/flag/flag.test.json diff --git a/backend/src/test/resources/tests/sql/selects/last/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/last/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/last/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/last/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/last/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/last/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/last/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/last/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/last/last.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/last/last.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/last/last.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/last/last.test.json diff --git a/backend/src/test/resources/tests/sql/selects/random/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/random/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/random/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/random/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/random/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/random/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/random/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/random/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/random/random.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/random/random.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/random/random.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/random/random.test.json diff --git a/backend/src/test/resources/tests/sql/selects/same_select_2_times/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/same_select_2_times/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/same_select_2_times/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/same_select_2_times/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/same_select_2_times/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/same_select_2_times/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/same_select_2_times/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/same_select_2_times/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/same_select_2_times/same_select.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/same_select_2_times/same_select.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/same_select_2_times/same_select.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/same_select_2_times/same_select.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/diffsum/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/diffsum/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/diffsum/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/diffsum/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/diffsum/diffsum.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/sum/diffsum/diffsum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/diffsum/diffsum.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/diffsum/diffsum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/diffsum/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/diffsum/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/diffsum/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/diffsum/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/distinct/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/distinct/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/distinct/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/distinct/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/distinct/distinct-sum.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/sum/distinct/distinct-sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/distinct/distinct-sum.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/distinct/distinct-sum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/distinct/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/distinct/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/distinct/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/distinct/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/duration_sum/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/duration_sum/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/duration_sum/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/duration_sum/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/duration_sum/duration_sum.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/sum/duration_sum/duration_sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/duration_sum/duration_sum.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/duration_sum/duration_sum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/duration_sum/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/duration_sum/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/duration_sum/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/duration_sum/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/event_duration_sum/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/event_duration_sum/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/duration_sum.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/sum/event_duration_sum/duration_sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/duration_sum.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/event_duration_sum/duration_sum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/event_duration_sum/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/event_duration_sum/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/event_duration_sum/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/sum/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/sum/sum.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/sum/sum.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/sum/sum.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/sum/sum.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/and/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/and/content_1.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/content_2.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/and/content_2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/content_2.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/and/content_2.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/and/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/and/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/none.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/and/none.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/and/none.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/and/none.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/not/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/not/content_1.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/not/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/not/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/negate.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/not/negate.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/block/not/negate.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/block/not/negate.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/intersect/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/intersect/content_1.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/content_2.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/intersect/content_2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/content_2.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/intersect/content_2.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/intersect/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/intersect/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/intersect.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/intersect/intersect.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/intersect/intersect.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/intersect/intersect.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/merge/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/merge/content_1.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/content_2.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/merge/content_2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/content_2.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/merge/content_2.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/merge/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/merge/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/merge.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/merge/merge.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/merge/merge.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/merge/merge.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/negate/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/negate/content_1.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/negate/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/negate/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/negate.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/negate/negate.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/negate/negate.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/negate/negate.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/no_validity_date/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/no_validity_date/content_1.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/content_2.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/no_validity_date/content_2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/content_2.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/no_validity_date/content_2.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/no_validity_date/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/no_validity_date/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/no_validity_date.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/no_validity_date/no_validity_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/no_validity_date/no_validity_date.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/no_validity_date/no_validity_date.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/content_1.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/only_1_date/content_1.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/content_1.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/only_1_date/content_1.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/content_2.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/only_1_date/content_2.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/content_2.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/only_1_date/content_2.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/only_1_date/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/only_1_date/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/only_1_date.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/only_1_date/only_1_date.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/aggregation/only_1_date/only_1_date.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/aggregation/only_1_date/only_1_date.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/default/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/default/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/default/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/default/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/default/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/default/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/default/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/default/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/default/validity_date_default.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/default/validity_date_default.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/default/validity_date_default.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/default/validity_date_default.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/expected_no_restriction.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/expected_no_restriction.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/expected_no_restriction.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/expected_no_restriction.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/expected_restriction.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/expected_restriction.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/event_date_union/expected_restriction.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/event_date_union/expected_restriction.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/excluded_from_time_aggregation/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/excluded_from_time_aggregation/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/excluded_from_time_aggregation/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/excluded_from_time_aggregation/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/validity_date_excluded.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/excluded_from_time_aggregation/validity_date_excluded.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/excluded_from_time_aggregation/validity_date_excluded.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/excluded_from_time_aggregation/validity_date_excluded.test.json diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/multirange/content.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/multirange/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/multirange/content.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/multirange/content.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/multirange/expected.csv b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/multirange/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/multirange/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/multirange/expected.csv diff --git a/backend/src/test/resources/tests/sql/selects/validity_date/multirange/multi_range.test.json b/backend/src/test/resources/EXCLUDED_sql/selects/validity_date/multirange/multi_range.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/selects/validity_date/multirange/multi_range.test.json rename to backend/src/test/resources/EXCLUDED_sql/selects/validity_date/multirange/multi_range.test.json diff --git a/backend/src/test/resources/tests/sql/tree/nested/content.csv b/backend/src/test/resources/EXCLUDED_sql/tree/nested/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/tree/nested/content.csv rename to backend/src/test/resources/EXCLUDED_sql/tree/nested/content.csv diff --git a/backend/src/test/resources/tests/sql/tree/nested/expected.csv b/backend/src/test/resources/EXCLUDED_sql/tree/nested/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/tree/nested/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/tree/nested/expected.csv diff --git a/backend/src/test/resources/tests/sql/tree/nested/nested.test.json b/backend/src/test/resources/EXCLUDED_sql/tree/nested/nested.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/tree/nested/nested.test.json rename to backend/src/test/resources/EXCLUDED_sql/tree/nested/nested.test.json diff --git a/backend/src/test/resources/tests/sql/tree/prefix_range/expected.csv b/backend/src/test/resources/EXCLUDED_sql/tree/prefix_range/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/tree/prefix_range/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/tree/prefix_range/expected.csv diff --git a/backend/src/test/resources/tests/sql/tree/prefix_range/kh-content.csv b/backend/src/test/resources/EXCLUDED_sql/tree/prefix_range/kh-content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/tree/prefix_range/kh-content.csv rename to backend/src/test/resources/EXCLUDED_sql/tree/prefix_range/kh-content.csv diff --git a/backend/src/test/resources/tests/sql/tree/prefix_range/prefix_range.test.json b/backend/src/test/resources/EXCLUDED_sql/tree/prefix_range/prefix_range.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/tree/prefix_range/prefix_range.test.json rename to backend/src/test/resources/EXCLUDED_sql/tree/prefix_range/prefix_range.test.json diff --git a/backend/src/test/resources/tests/sql/tree/with_parent/content.csv b/backend/src/test/resources/EXCLUDED_sql/tree/with_parent/content.csv similarity index 100% rename from backend/src/test/resources/tests/sql/tree/with_parent/content.csv rename to backend/src/test/resources/EXCLUDED_sql/tree/with_parent/content.csv diff --git a/backend/src/test/resources/tests/sql/tree/with_parent/expected.csv b/backend/src/test/resources/EXCLUDED_sql/tree/with_parent/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/tree/with_parent/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/tree/with_parent/expected.csv diff --git a/backend/src/test/resources/tests/sql/tree/with_parent/with_parent.test.json b/backend/src/test/resources/EXCLUDED_sql/tree/with_parent/with_parent.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/tree/with_parent/with_parent.test.json rename to backend/src/test/resources/EXCLUDED_sql/tree/with_parent/with_parent.test.json diff --git a/backend/src/test/resources/tests/sql/yes/cqyes.test.json b/backend/src/test/resources/EXCLUDED_sql/yes/cqyes.test.json similarity index 100% rename from backend/src/test/resources/tests/sql/yes/cqyes.test.json rename to backend/src/test/resources/EXCLUDED_sql/yes/cqyes.test.json diff --git a/backend/src/test/resources/tests/sql/yes/entities.csv b/backend/src/test/resources/EXCLUDED_sql/yes/entities.csv similarity index 100% rename from backend/src/test/resources/tests/sql/yes/entities.csv rename to backend/src/test/resources/EXCLUDED_sql/yes/entities.csv diff --git a/backend/src/test/resources/tests/sql/yes/expected.csv b/backend/src/test/resources/EXCLUDED_sql/yes/expected.csv similarity index 100% rename from backend/src/test/resources/tests/sql/yes/expected.csv rename to backend/src/test/resources/EXCLUDED_sql/yes/expected.csv From d9785f9df13855c9c6d5f0368e7d07c85a2cc0b9 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Wed, 2 Jul 2025 10:15:37 +0200 Subject: [PATCH 20/32] fix: intersection of validity dates with date restriction --- .../cqelement/concept/CQConceptConverter.java | 14 ++++++-------- .../dialect/PostgreSqlFunctionProvider.java | 6 ++++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java index ef56359d25..98dfa8c9db 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java @@ -6,6 +6,7 @@ import com.bakdata.conquery.models.datasets.Table; import com.bakdata.conquery.models.datasets.concepts.ConceptElement; import com.bakdata.conquery.models.datasets.concepts.Connector; +import com.bakdata.conquery.models.datasets.concepts.ValidityDate; import com.bakdata.conquery.models.datasets.concepts.select.Select; import com.bakdata.conquery.models.datasets.concepts.select.concept.ConceptColumnSelect; import com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeChild; @@ -37,7 +38,6 @@ import com.google.common.base.Preconditions; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -150,17 +150,15 @@ public static SqlIdColumns convertIds(CQConcept cqConcept, CQTable cqTable, Conv private static Optional convertValidityDate(CQTable cqTable, String connectorLabel, ConversionContext context) { SqlFunctionProvider functionProvider = context.getSqlDialect().getFunctionProvider(); - if (Objects.isNull(cqTable.findValidityDate())) { - return Optional.of(functionProvider.maxRange().asValidityDateRange(connectorLabel)); - } - ColumnDateRange validityDate; + ValidityDate validityDate = cqTable.findValidityDate(); + ColumnDateRange sqlValidityDate; if (context.getDateRestrictionRange() != null) { - validityDate = functionProvider.forValidityDate(cqTable.findValidityDate(), context.getDateRestrictionRange()).asValidityDateRange(connectorLabel); + sqlValidityDate = functionProvider.forValidityDate(validityDate, context.getDateRestrictionRange()); } else { - validityDate = functionProvider.forValidityDate(cqTable.findValidityDate()).asValidityDateRange(connectorLabel); + sqlValidityDate = functionProvider.forValidityDate(validityDate); } - return Optional.of(validityDate); + return Optional.of(sqlValidityDate.asValidityDateRange(connectorLabel)); } private static boolean dateRestrictionApplicable(boolean dateRestrictionRequired, Optional validityDateSelect) { diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java index a074913d25..35da2e4e5a 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java @@ -109,7 +109,8 @@ public List forCDateSet(CDateSet dateset, SharedAliases alias) @Override public ColumnDateRange forValidityDate(ValidityDate validityDate) { - return toColumnDateRange(validityDate); + // if there is no validity date, each entity has the max range {-inf/inf} as validity date + return validityDate == null ? maxRange() : toColumnDateRange(validityDate); } @Override @@ -119,7 +120,8 @@ public ColumnDateRange maxRange() { @Override public ColumnDateRange forValidityDate(ValidityDate validityDate, CDateRange dateRestriction) { - ColumnDateRange validityDateRange = toColumnDateRange(validityDate); + // if there is no validity date, each entity has the max range {-inf/inf} as validity date + ColumnDateRange validityDateRange = validityDate == null ? maxRange() : toColumnDateRange(validityDate); ColumnDateRange restriction = toColumnDateRange(dateRestriction); return intersection(validityDateRange, restriction); } From 83804e811db5c5e26db1f4cdb8d5375264dc50b2 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Wed, 2 Jul 2025 10:24:49 +0200 Subject: [PATCH 21/32] fix: parsing of booleans --- .../conquery/sql/execution/DefaultResultSetProcessor.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java b/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java index 216d35b161..0abdd1db92 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java @@ -45,7 +45,10 @@ public BigDecimal getMoney(ResultSet resultSet, int columnIndex) throws SQLExcep @Override public Boolean getBoolean(ResultSet resultSet, int columnIndex) throws SQLException { - return checkForNullElseGet(resultSet, columnIndex, resultSet::getBoolean, Boolean.class); + if (resultSet.getObject(columnIndex) == null) { + return false; + } + return resultSet.getBoolean(columnIndex); } @Override From 800d3a2f3a489c632512e80fac4879e6af309d53 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Wed, 2 Jul 2025 17:04:04 +0200 Subject: [PATCH 22/32] fix: validity dates if start and end are null --- .../dialect/PostgreSqlFunctionProvider.java | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java index 35da2e4e5a..4a469af235 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java @@ -1,11 +1,5 @@ package com.bakdata.conquery.sql.conversion.dialect; -import java.sql.Date; -import java.time.temporal.ChronoUnit; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - import com.bakdata.conquery.models.common.CDateSet; import com.bakdata.conquery.models.common.daterange.CDateRange; import com.bakdata.conquery.models.datasets.Column; @@ -15,6 +9,11 @@ import com.bakdata.conquery.sql.conversion.model.ColumnDateRange; import com.bakdata.conquery.sql.conversion.model.QueryStep; import com.bakdata.conquery.sql.conversion.model.Selects; +import java.sql.Date; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; import org.jooq.ArrayAggOrderByStep; import org.jooq.Condition; import org.jooq.DataType; @@ -284,6 +283,10 @@ public Field extract(DatePart datePart, Field timeInterval) { ); } + private static Field emptyDateRange() { + return DSL.field("{0}::daterange", DSL.val("empty")); + } + private Field rangeAgg(ColumnDateRange columnDateRange) { return DSL.function("range_agg", Object.class, columnDateRange.getRange()); } @@ -336,22 +339,24 @@ private ColumnDateRange ofSingleColumn(String tableName, Column column) { // if validityDateColumn is a DATE_RANGE we can make use of Postgres' integrated daterange type, but the upper bound is exclusive by default case DATE_RANGE -> { Field daterange = DSL.field(DSL.name(column.getName())); - Field startColumn = DSL.coalesce( + Field withOpenLowerEnd = DSL.coalesce( DSL.function("lower", Date.class, daterange), toDateField(MINUS_INFINITY_DATE_VALUE) ); - Field endColumn = DSL.coalesce( + Field withOpenUpperEnd = DSL.coalesce( DSL.function("upper", Date.class, daterange), toDateField(INFINITY_DATE_VALUE) ); - yield daterange(startColumn, endColumn, "[]"); + yield DSL.when(daterange.isNull(), emptyDateRange()) + .otherwise(daterange(withOpenLowerEnd, withOpenUpperEnd, "[]")); } // if the validity date column is not of daterange type, we construct it manually case DATE -> { Field singleDate = DSL.field(DSL.name(tableName, column.getName()), Date.class); - Field startColumn = DSL.coalesce(singleDate, toDateField(MINUS_INFINITY_DATE_VALUE)); - Field endColumn = DSL.coalesce(singleDate, toDateField(INFINITY_DATE_VALUE)); - yield daterange(startColumn, endColumn, "[]"); + Field withOpenLowerEnd = DSL.coalesce(singleDate, toDateField(MINUS_INFINITY_DATE_VALUE)); + Field withOpenUpperEnd = DSL.coalesce(singleDate, toDateField(INFINITY_DATE_VALUE)); + yield DSL.when(singleDate.isNull(), emptyDateRange()) + .otherwise(daterange(withOpenLowerEnd, withOpenUpperEnd, "[]")); } default -> throw new IllegalArgumentException( "Given column type '%s' can't be converted to a proper date restriction.".formatted(column.getType()) @@ -363,16 +368,15 @@ private ColumnDateRange ofSingleColumn(String tableName, Column column) { private ColumnDateRange ofStartAndEnd(String tableName, Column startColumn, Column endColumn) { - Field start = DSL.coalesce( - DSL.field(DSL.name(tableName, startColumn.getName())), - toDateField(MINUS_INFINITY_DATE_VALUE) - ); - Field end = DSL.coalesce( - DSL.field(DSL.name(tableName, endColumn.getName())), - toDateField(INFINITY_DATE_VALUE) - ); + Field startField = DSL.field(DSL.name(tableName, startColumn.getName())); + Field withOpenLowerEnd = DSL.coalesce(startField, toDateField(MINUS_INFINITY_DATE_VALUE)); + Field endField = DSL.field(DSL.name(tableName, endColumn.getName())); + Field withOpenUpperEnd = DSL.coalesce(endField, toDateField(INFINITY_DATE_VALUE)); - return ColumnDateRange.of(daterange(start, end, "[]")); + return ColumnDateRange.of( + DSL.when(startField.isNull().and(endField.isNull()), emptyDateRange()) + .otherwise(this.daterange(withOpenLowerEnd, withOpenUpperEnd, "[]")) + ); } private ColumnDateRange ensureIsSingleColumnRange(ColumnDateRange daterange) { From 343c716d7e621429231ed48c455da5767fcd1261 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Thu, 3 Jul 2025 14:37:42 +0200 Subject: [PATCH 23/32] fix: full export form conversion --- .../dialect/PostgreSqlFunctionProvider.java | 47 ++++++++----------- .../dialect/SqlFunctionProvider.java | 9 ++-- .../query/TableExportQueryConverter.java | 13 +++-- .../integration/sql/CsvTableImporter.java | 4 +- .../tests/form/shared/vers_stamm.csv | 2 +- 5 files changed, 32 insertions(+), 43 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java index 4a469af235..5fe02122cc 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java @@ -32,6 +32,8 @@ public class PostgreSqlFunctionProvider implements SqlFunctionProvider { + private static final String OPEN_RANGE = "[)"; + private static final String CLOSED_RANGE = "[]"; private static final String INFINITY_DATE_VALUE = "infinity"; private static final String MINUS_INFINITY_DATE_VALUE = "-infinity"; private static final String ANY_CHAR_REGEX = "%"; @@ -84,13 +86,7 @@ public ColumnDateRange forCDateRange(CDateRange daterange) { endDateExpression = daterange.getMax().toString(); } - Field daterangeField = DSL.function( - "daterange", - Object.class, - DSL.val(startDateExpression), - DSL.val(endDateExpression), - DSL.val("[]") - ); + Field daterangeField = daterange(DSL.val(startDateExpression), DSL.val(endDateExpression), CLOSED_RANGE); return ColumnDateRange.of(daterangeField); } @@ -114,7 +110,7 @@ public ColumnDateRange forValidityDate(ValidityDate validityDate) { @Override public ColumnDateRange maxRange() { - return ColumnDateRange.of(daterange(toDateField(MINUS_INFINITY_DATE_VALUE), toDateField(INFINITY_DATE_VALUE), "[]")); + return ColumnDateRange.of(daterange(toDateField(MINUS_INFINITY_DATE_VALUE), toDateField(INFINITY_DATE_VALUE), CLOSED_RANGE)); } @Override @@ -299,6 +295,14 @@ private static Field unnest(Field multirange) { return DSL.function("unnest", Object.class, multirange); } + private static Field upper(Field daterange) { + return DSL.function("upper", Date.class, daterange); + } + + private static Field lower(Field daterange) { + return DSL.function("lower", Date.class, daterange); + } + private ColumnDateRange toColumnDateRange(CDateRange dateRestriction) { String startDateExpression = MINUS_INFINITY_DATE_VALUE; String endDateExpression = INFINITY_DATE_VALUE; @@ -310,14 +314,7 @@ private ColumnDateRange toColumnDateRange(CDateRange dateRestriction) { endDateExpression = dateRestriction.getMax().toString(); } - Field dateRestrictionRange = DSL.function( - "daterange", - Object.class, - toDateField(startDateExpression), - toDateField(endDateExpression), - DSL.val("[]") - ); - + Field dateRestrictionRange = daterange(toDateField(startDateExpression), toDateField(endDateExpression), CLOSED_RANGE); return ColumnDateRange.of(dateRestrictionRange); } @@ -339,16 +336,10 @@ private ColumnDateRange ofSingleColumn(String tableName, Column column) { // if validityDateColumn is a DATE_RANGE we can make use of Postgres' integrated daterange type, but the upper bound is exclusive by default case DATE_RANGE -> { Field daterange = DSL.field(DSL.name(column.getName())); - Field withOpenLowerEnd = DSL.coalesce( - DSL.function("lower", Date.class, daterange), - toDateField(MINUS_INFINITY_DATE_VALUE) - ); - Field withOpenUpperEnd = DSL.coalesce( - DSL.function("upper", Date.class, daterange), - toDateField(INFINITY_DATE_VALUE) - ); + Field withOpenLowerEnd = DSL.coalesce(lower(daterange), toDateField(MINUS_INFINITY_DATE_VALUE)); + Field withOpenUpperEnd = DSL.coalesce(upper(daterange), toDateField(INFINITY_DATE_VALUE)); yield DSL.when(daterange.isNull(), emptyDateRange()) - .otherwise(daterange(withOpenLowerEnd, withOpenUpperEnd, "[]")); + .otherwise(daterange(withOpenLowerEnd, withOpenUpperEnd, OPEN_RANGE)); } // if the validity date column is not of daterange type, we construct it manually case DATE -> { @@ -356,7 +347,7 @@ private ColumnDateRange ofSingleColumn(String tableName, Column column) { Field withOpenLowerEnd = DSL.coalesce(singleDate, toDateField(MINUS_INFINITY_DATE_VALUE)); Field withOpenUpperEnd = DSL.coalesce(singleDate, toDateField(INFINITY_DATE_VALUE)); yield DSL.when(singleDate.isNull(), emptyDateRange()) - .otherwise(daterange(withOpenLowerEnd, withOpenUpperEnd, "[]")); + .otherwise(daterange(withOpenLowerEnd, withOpenUpperEnd, CLOSED_RANGE)); } default -> throw new IllegalArgumentException( "Given column type '%s' can't be converted to a proper date restriction.".formatted(column.getType()) @@ -375,14 +366,14 @@ private ColumnDateRange ofStartAndEnd(String tableName, Column startColumn, Colu return ColumnDateRange.of( DSL.when(startField.isNull().and(endField.isNull()), emptyDateRange()) - .otherwise(this.daterange(withOpenLowerEnd, withOpenUpperEnd, "[]")) + .otherwise(this.daterange(withOpenLowerEnd, withOpenUpperEnd, CLOSED_RANGE)) ); } private ColumnDateRange ensureIsSingleColumnRange(ColumnDateRange daterange) { return daterange.isSingleColumnRange() ? daterange - : ColumnDateRange.of(daterange(daterange.getStart(), daterange.getEnd(), "[)")); // end is already exclusive + : ColumnDateRange.of(daterange(daterange.getStart(), daterange.getEnd(), OPEN_RANGE)); // end is already exclusive } } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java index 2bb8b6ec6f..19dd41b2d1 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java @@ -1,10 +1,5 @@ package com.bakdata.conquery.sql.conversion.dialect; -import java.sql.Date; -import java.time.temporal.ChronoUnit; -import java.util.List; -import java.util.stream.Collectors; - import com.bakdata.conquery.apiv1.query.concept.filter.CQTable; import com.bakdata.conquery.models.common.CDateSet; import com.bakdata.conquery.models.common.daterange.CDateRange; @@ -14,6 +9,10 @@ import com.bakdata.conquery.sql.conversion.model.ColumnDateRange; import com.bakdata.conquery.sql.conversion.model.QueryStep; import com.bakdata.conquery.sql.execution.ResultSetProcessor; +import java.sql.Date; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.stream.Collectors; import org.jooq.Condition; import org.jooq.DataType; import org.jooq.Field; diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/TableExportQueryConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/TableExportQueryConverter.java index c8013f36d6..962d662238 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/TableExportQueryConverter.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/TableExportQueryConverter.java @@ -1,12 +1,5 @@ package com.bakdata.conquery.sql.conversion.query; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; -import java.util.stream.Stream; - import com.bakdata.conquery.apiv1.query.Query; import com.bakdata.conquery.apiv1.query.TableExportQuery; import com.bakdata.conquery.apiv1.query.concept.filter.CQTable; @@ -28,6 +21,12 @@ import com.bakdata.conquery.sql.conversion.model.select.FieldWrapper; import com.bakdata.conquery.util.TablePrimaryColumnUtil; import com.google.common.base.Preconditions; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; import lombok.RequiredArgsConstructor; import org.jooq.Condition; import org.jooq.Field; diff --git a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java index 6047a44fa5..97b5c9438b 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java @@ -218,8 +218,8 @@ private Object castEntryAccordingToColumnType(String entry, MajorTypeId type) { case DATE -> dateReader.parseToLocalDate(entry); case DATE_RANGE -> { CDateRange dateRange = dateReader.parseToCDateRange(entry); - yield DateRange.dateRange(dateRange.getMin() != null ? Date.valueOf(dateRange.getMin()) : null, - dateRange.getMax() != null ? Date.valueOf(dateRange.getMax()) : null + yield DateRange.dateRange(dateRange.getMin() != null ? Date.valueOf(dateRange.getMin()) : null, true, + dateRange.getMax() != null ? Date.valueOf(dateRange.getMax()) : null, true ); } }; diff --git a/backend/src/test/resources/tests/form/shared/vers_stamm.csv b/backend/src/test/resources/tests/form/shared/vers_stamm.csv index 6fbfaf7db5..ca5b4ef931 100644 --- a/backend/src/test/resources/tests/form/shared/vers_stamm.csv +++ b/backend/src/test/resources/tests/form/shared/vers_stamm.csv @@ -20,4 +20,4 @@ pid,date,date_start,date_end,geburtsdatum,geschlecht 19,2012-01-01/2012-12-31,2012-01-01,2012-12-31,1991-10-01,1 20,2012-01-01/2012-12-31,2012-01-01,2012-12-31,1987-01-01,2 21,2012-01-01/2012-12-31,2012-01-01,2012-12-31,1952-01-01,1 -22,2012-01-01/2012-10-01,2012-01-01,2012-10-01,1955-01-01,2 \ No newline at end of file +22,2012-01-01/2012-10-01,2012-01-01,2012-10-01,1955-01-01,2 From a586c374b8eb1435a82ba96684815f9db9268c22 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Thu, 3 Jul 2025 16:31:27 +0200 Subject: [PATCH 24/32] fix: validity date exclusion --- .../cqelement/concept/ConnectorSqlTables.java | 9 ++++++++- .../cqelement/concept/JoinBranchesCte.java | 5 +++++ .../conversion/cqelement/concept/TablePath.java | 15 +++++++++++++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/ConnectorSqlTables.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/ConnectorSqlTables.java index fe9443edc1..e88c60c3cf 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/ConnectorSqlTables.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/ConnectorSqlTables.java @@ -21,6 +21,11 @@ public class ConnectorSqlTables extends SqlTables { */ private final boolean withIntervalPacking; + /** + * True if these tables should not propagate a present validity date. + */ + private final boolean excludedFromTimeAggregation; + /** * Corresponding {@link Connector} of these {@link SqlTables}. */ @@ -32,12 +37,14 @@ public ConnectorSqlTables( String rootTable, Map cteNameMap, Map predecessorMap, - boolean containsIntervalPacking + boolean containsIntervalPacking, + boolean excludedFromTimeAggregation ) { super(rootTable, cteNameMap, predecessorMap); this.connector = connector; this.label = conceptConnectorLabel; this.withIntervalPacking = containsIntervalPacking; + this.excludedFromTimeAggregation = excludedFromTimeAggregation; } } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/JoinBranchesCte.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/JoinBranchesCte.java index f1c91db84e..b703fb8efe 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/JoinBranchesCte.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/JoinBranchesCte.java @@ -72,6 +72,11 @@ protected QueryStep.QueryStepBuilder convertStep(CQTableContext tableContext) { if (intervalPackingSelectsStep != lastIntervalPackingStep) { queriesToJoin.add(intervalPackingSelectsStep); } + + // interval packing was required for event date selects, but we won't propagate it + if (tableContext.getConnectorTables().isExcludedFromTimeAggregation()) { + validityDate = Optional.empty(); + } } // additional preceding tables diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java index 64041ad9b3..32596c6182 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java @@ -61,7 +61,8 @@ private static ConnectorSqlTables createConnectorTables(CQConcept cqConcept, CQT tableInfo.getRootTable(), cteNameMap, tableInfo.getMappings(), - tableInfo.isContainsIntervalPacking() + tableInfo.isContainsIntervalPacking(), + tableInfo.isExcludedFromTimeAggregation() ); } @@ -92,10 +93,15 @@ private static TablePathInfo collectConnectorTables(CQConcept cqConcept, CQTable return tableInfo; } - // interval packing required + // interval packing requiredw tableInfo.setContainsIntervalPacking(true); tableInfo.addMappings(IntervalPackingCteStep.getMappings(EVENT_FILTER, context.getSqlDialect())); + // validity date propagation not necessary + if (!cqConcept.isAggregateEventDates()) { + tableInfo.setExcludedFromTimeAggregation(true); + } + if (!eventDateSelectsPresent) { return tableInfo; } @@ -164,6 +170,11 @@ private static class TablePathInfo { */ private boolean containsIntervalPacking; + /** + * True if these tables should not propagate a present validity date. + */ + private boolean excludedFromTimeAggregation; + public TablePathInfo() { this.mappings = new HashMap<>(); } From af34b8ee7a846f96773fae38ad73a10550dd741f Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Mon, 7 Jul 2025 08:46:23 +0200 Subject: [PATCH 25/32] Fixes COALESCE behaviour of SumDiff Aggregation --- .../model/aggregator/SumSqlAggregator.java | 208 +++++++++--------- 1 file changed, 109 insertions(+), 99 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/SumSqlAggregator.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/SumSqlAggregator.java index 684544bb4a..1a1974fa2d 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/SumSqlAggregator.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/SumSqlAggregator.java @@ -81,17 +81,6 @@ public class SumSqlAggregator> impleme FilterConverter, RANGE>, SqlAggregator { - @Getter - @RequiredArgsConstructor - private enum SumDistinctCteStep implements CteStep { - - ROW_NUMBER_ASSIGNED("row_number_assigned", null), - ROW_NUMBER_FILTERED("row_number_filtered", ROW_NUMBER_ASSIGNED); - - private final String suffix; - private final SumDistinctCteStep predecessor; - } - private static final String ROW_NUMBER_ALIAS = "row_number"; private static final String SUM_DISTINCT_SUFFIX = "sum_distinct"; @@ -131,64 +120,41 @@ public ConnectorSqlSelects connectorSelect(SumSelect sumSelect, SelectContext sumFilter, FilterContext filterContext) { - - Column sumColumn = sumFilter.getColumn().resolve(); - Column subtractColumn = sumFilter.getSubtractColumn() != null ? sumFilter.getSubtractColumn().resolve() : null; - List distinctByColumns = sumFilter.getDistinctByColumn().stream().map(ColumnId::resolve).toList(); - String alias = filterContext.getNameGenerator().selectName(sumFilter); - ConnectorSqlTables tables = filterContext.getTables(); - - CommonAggregationSelect sumAggregationSelect; - ConnectorSqlSelects selects; + private CommonAggregationSelect createDistinctSumAggregationSelect( + Column sumColumn, + List distinctByColumns, + String alias, + SqlIdColumns ids, + ConnectorSqlTables tables, + NameGenerator nameGenerator + ) { + List> preprocessingSelects = new ArrayList<>(); - if (!distinctByColumns.isEmpty()) { - sumAggregationSelect = - createDistinctSumAggregationSelect(sumColumn, distinctByColumns, alias, filterContext.getIds(), tables, filterContext.getNameGenerator()); - selects = ConnectorSqlSelects.builder() - .preprocessingSelects(sumAggregationSelect.getRootSelects()) - .additionalPredecessor(sumAggregationSelect.getAdditionalPredecessor()) - .build(); - } - else { - sumAggregationSelect = createSumAggregationSelect(sumColumn, subtractColumn, alias, tables); - selects = ConnectorSqlSelects.builder() - .preprocessingSelects(sumAggregationSelect.getRootSelects()) - .additionalPredecessor(sumAggregationSelect.getAdditionalPredecessor()) - .aggregationSelect(sumAggregationSelect.getGroupBy()) - .build(); - } + Class numberClass = NumberMapUtil.getType(sumColumn); + ExtractingSqlSelect rootSelect = new ExtractingSqlSelect<>(tables.getRootTable(), sumColumn.getName(), numberClass); + preprocessingSelects.add(rootSelect); - Field qualifiedSumSelect = sumAggregationSelect.getGroupBy().qualify(tables.getPredecessor(ConceptCteStep.AGGREGATION_FILTER)).select(); - SumCondition sumCondition = new SumCondition(qualifiedSumSelect, filterContext.getValue()); - WhereClauses whereClauses = WhereClauses.builder() - .groupFilter(sumCondition) - .build(); + List> distinctByRootSelects = + distinctByColumns.stream() + .map(column -> new ExtractingSqlSelect<>(tables.getRootTable(), column.getName(), Object.class)) + .collect(Collectors.toList()); + preprocessingSelects.addAll(distinctByRootSelects); - return new SqlFilters(selects, whereClauses); + QueryStep rowNumberCte = createRowNumberCte(ids, rootSelect, distinctByRootSelects, alias, tables, nameGenerator); + Field rootSelectQualified = rootSelect.qualify(rowNumberCte.getCteName()).select(); + FieldWrapper sumGroupBy = new FieldWrapper<>(DSL.sum(DSL.coalesce(rootSelectQualified, DSL.val(0))).as(alias)); + QueryStep rowNumberFilteredCte = createRowNumberFilteredCte(rowNumberCte, sumGroupBy, alias, nameGenerator); + return CommonAggregationSelect.builder() + .rootSelects(preprocessingSelects) + .additionalPredecessor(rowNumberFilteredCte) + .groupBy(sumGroupBy) + .build(); } - @Override - public Condition convertForTableExport(SumFilter filter, FilterContext filterContext) { - - Column column = filter.getColumn().resolve(); - String tableName = column.getTable().getName(); - String columnName = column.getName(); - Class numberClass = NumberMapUtil.getType(column); - Field field = DSL.field(DSL.name(tableName, columnName), numberClass); - - ColumnId subtractColumn = filter.getSubtractColumn(); - if (subtractColumn == null) { - return new SumCondition(field, filterContext.getValue()).condition(); - } - - Column resolvedSubtractionColumn = subtractColumn.resolve(); - String subtractColumnName = resolvedSubtractionColumn.getName(); - String subtractTableName = resolvedSubtractionColumn.getTable().getName(); - Field subtractField = DSL.field(DSL.name(subtractTableName, subtractColumnName), numberClass); - return new SumCondition(field.minus(subtractField), filterContext.getValue()).condition(); + private static ExtractingSqlSelect createFinalSelect(CommonAggregationSelect sumAggregationSelect, ConnectorSqlTables tables) { + String finalPredecessor = tables.getPredecessor(ConceptCteStep.AGGREGATION_FILTER); + return sumAggregationSelect.getGroupBy().qualify(finalPredecessor); } private CommonAggregationSelect createSumAggregationSelect(Column sumColumn, Column subtractColumn, String alias, ConnectorSqlTables tables) { @@ -204,6 +170,7 @@ private CommonAggregationSelect createSumAggregationSelect(Column su FieldWrapper sumGroupBy; + if (subtractColumn != null) { ExtractingSqlSelect subtractColumnRootSelect = new ExtractingSqlSelect<>( tables.getRootTable(), @@ -213,7 +180,16 @@ private CommonAggregationSelect createSumAggregationSelect(Column su preprocessingSelects.add(subtractColumnRootSelect); Field subtractField = subtractColumnRootSelect.qualify(eventFilterCte).select(); - sumGroupBy = new FieldWrapper<>(DSL.sum(sumField.minus(subtractField)).as(alias), sumColumn.getName(), subtractColumn.getName()); + + + // This expression ensures that if there's any non-null field, we get a 0. But if there's only nulls we get a null: + // COALESCE would always result in 0 which is undesired to differentiate between missing-values and 0 sums. + Field zeroIfAnyNonNull = DSL.coalesce(sumField.multiply(0), subtractField.multiply(0)); + + sumGroupBy = new FieldWrapper<>(DSL.sum(DSL.coalesce(sumField, zeroIfAnyNonNull).minus(DSL.coalesce(subtractField, zeroIfAnyNonNull))).as(alias), + sumColumn.getName(), + subtractColumn.getName() + ); } else { sumGroupBy = new FieldWrapper<>(DSL.sum(sumField).as(alias), sumColumn.getName()); @@ -225,38 +201,6 @@ private CommonAggregationSelect createSumAggregationSelect(Column su .build(); } - private CommonAggregationSelect createDistinctSumAggregationSelect( - Column sumColumn, - List distinctByColumns, - String alias, - SqlIdColumns ids, - ConnectorSqlTables tables, - NameGenerator nameGenerator - ) { - List> preprocessingSelects = new ArrayList<>(); - - Class numberClass = NumberMapUtil.getType(sumColumn); - ExtractingSqlSelect rootSelect = new ExtractingSqlSelect<>(tables.getRootTable(), sumColumn.getName(), numberClass); - preprocessingSelects.add(rootSelect); - - List> distinctByRootSelects = - distinctByColumns.stream() - .map(column -> new ExtractingSqlSelect<>(tables.getRootTable(), column.getName(), Object.class)) - .collect(Collectors.toList()); - preprocessingSelects.addAll(distinctByRootSelects); - - QueryStep rowNumberCte = createRowNumberCte(ids, rootSelect, distinctByRootSelects, alias, tables, nameGenerator); - Field rootSelectQualified = rootSelect.qualify(rowNumberCte.getCteName()).select(); - FieldWrapper sumGroupBy = new FieldWrapper<>(DSL.sum(rootSelectQualified).as(alias)); - QueryStep rowNumberFilteredCte = createRowNumberFilteredCte(rowNumberCte, sumGroupBy, alias, nameGenerator); - - return CommonAggregationSelect.builder() - .rootSelects(preprocessingSelects) - .additionalPredecessor(rowNumberFilteredCte) - .groupBy(sumGroupBy) - .build(); - } - /** * Assigns row numbers for each partition over the pid and the distinct by columns. If the values per pid in the distinct by columns are duplicated, * the row number will be incremented for each duplicated entry. @@ -324,9 +268,75 @@ private static QueryStep createRowNumberFilteredCte( .build(); } - private static ExtractingSqlSelect createFinalSelect(CommonAggregationSelect sumAggregationSelect, ConnectorSqlTables tables) { - String finalPredecessor = tables.getPredecessor(ConceptCteStep.AGGREGATION_FILTER); - return sumAggregationSelect.getGroupBy().qualify(finalPredecessor); + @Override + public SqlFilters convertToSqlFilter(SumFilter sumFilter, FilterContext filterContext) { + + Column sumColumn = sumFilter.getColumn().resolve(); + Column subtractColumn = sumFilter.getSubtractColumn() != null ? sumFilter.getSubtractColumn().resolve() : null; + List distinctByColumns = sumFilter.getDistinctByColumn().stream().map(ColumnId::resolve).toList(); + String alias = filterContext.getNameGenerator().selectName(sumFilter); + ConnectorSqlTables tables = filterContext.getTables(); + + CommonAggregationSelect sumAggregationSelect; + ConnectorSqlSelects selects; + + if (!distinctByColumns.isEmpty()) { + sumAggregationSelect = + createDistinctSumAggregationSelect(sumColumn, distinctByColumns, alias, filterContext.getIds(), tables, filterContext.getNameGenerator()); + selects = ConnectorSqlSelects.builder() + .preprocessingSelects(sumAggregationSelect.getRootSelects()) + .additionalPredecessor(sumAggregationSelect.getAdditionalPredecessor()) + .build(); + } + else { + sumAggregationSelect = createSumAggregationSelect(sumColumn, subtractColumn, alias, tables); + selects = ConnectorSqlSelects.builder() + .preprocessingSelects(sumAggregationSelect.getRootSelects()) + .additionalPredecessor(sumAggregationSelect.getAdditionalPredecessor()) + .aggregationSelect(sumAggregationSelect.getGroupBy()) + .build(); + } + + Field qualifiedSumSelect = sumAggregationSelect.getGroupBy().qualify(tables.getPredecessor(ConceptCteStep.AGGREGATION_FILTER)).select(); + SumCondition sumCondition = new SumCondition(qualifiedSumSelect, filterContext.getValue()); + WhereClauses whereClauses = WhereClauses.builder() + .groupFilter(sumCondition) + .build(); + + return new SqlFilters(selects, whereClauses); + + } + + @Override + public Condition convertForTableExport(SumFilter filter, FilterContext filterContext) { + + Column column = filter.getColumn().resolve(); + String tableName = column.getTable().getName(); + String columnName = column.getName(); + Class numberClass = NumberMapUtil.getType(column); + Field field = DSL.field(DSL.name(tableName, columnName), numberClass); + + ColumnId subtractColumn = filter.getSubtractColumn(); + if (subtractColumn == null) { + return new SumCondition(field, filterContext.getValue()).condition(); + } + + Column resolvedSubtractionColumn = subtractColumn.resolve(); + String subtractColumnName = resolvedSubtractionColumn.getName(); + String subtractTableName = resolvedSubtractionColumn.getTable().getName(); + Field subtractField = DSL.field(DSL.name(subtractTableName, subtractColumnName), numberClass); + return new SumCondition(field.minus(subtractField), filterContext.getValue()).condition(); + } + + @Getter + @RequiredArgsConstructor + private enum SumDistinctCteStep implements CteStep { + + ROW_NUMBER_ASSIGNED("row_number_assigned", null), + ROW_NUMBER_FILTERED("row_number_filtered", ROW_NUMBER_ASSIGNED); + + private final String suffix; + private final SumDistinctCteStep predecessor; } } From 5fd7b7e10c2a6026dfb5a5b41eee63fb4d0e5a9c Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Mon, 7 Jul 2025 16:55:54 +0200 Subject: [PATCH 26/32] feat: implement DURATION_SUM filter conversion --- .../filters/specific/DurationSumFilter.java | 37 ++++--- .../connector/specific/DurationSumSelect.java | 4 +- .../dialect/HanaSqlFunctionProvider.java | 10 ++ .../dialect/PostgreSqlFunctionProvider.java | 18 +-- .../dialect/SqlFunctionProvider.java | 10 ++ .../aggregator/DurationSumSqlAggregator.java | 73 ++++++++++++ .../select/DateUnionSelectConverter.java | 2 +- .../model/select/DaterangeSelectUtil.java | 104 ++++++++++++++---- .../select/DurationSumSelectConverter.java | 21 ---- 9 files changed, 211 insertions(+), 68 deletions(-) create mode 100644 backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/DurationSumSqlAggregator.java delete mode 100644 backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DurationSumSelectConverter.java diff --git a/backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/DurationSumFilter.java b/backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/DurationSumFilter.java index f26154c5b8..a5f291be91 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/DurationSumFilter.java +++ b/backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/DurationSumFilter.java @@ -1,19 +1,21 @@ package com.bakdata.conquery.models.datasets.concepts.filters.specific; -import java.util.EnumSet; - import com.bakdata.conquery.apiv1.frontend.FrontendFilterConfiguration; import com.bakdata.conquery.apiv1.frontend.FrontendFilterType; import com.bakdata.conquery.io.cps.CPSType; import com.bakdata.conquery.models.common.Range; import com.bakdata.conquery.models.config.ConqueryConfig; +import com.bakdata.conquery.models.datasets.concepts.DaterangeSelectOrFilter; import com.bakdata.conquery.models.datasets.concepts.filters.Filter; -import com.bakdata.conquery.models.datasets.concepts.filters.SingleColumnFilter; -import com.bakdata.conquery.models.events.MajorTypeId; import com.bakdata.conquery.models.exceptions.ConceptConfigurationException; +import com.bakdata.conquery.models.identifiable.ids.specific.ColumnId; import com.bakdata.conquery.models.query.filter.RangeFilterNode; import com.bakdata.conquery.models.query.queryplan.aggregators.specific.DurationSumAggregator; import com.bakdata.conquery.models.query.queryplan.filter.FilterNode; +import com.bakdata.conquery.sql.conversion.model.aggregator.DurationSumSqlAggregator; +import com.bakdata.conquery.sql.conversion.model.filter.FilterConverter; +import java.util.List; +import javax.annotation.Nullable; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -22,21 +24,25 @@ @Setter @Slf4j @CPSType(id = "DURATION_SUM", base = Filter.class) -public class DurationSumFilter extends SingleColumnFilter { +public class DurationSumFilter extends Filter implements DaterangeSelectOrFilter { + + @Nullable + private ColumnId column; + @Nullable + private ColumnId startColumn; + @Nullable + private ColumnId endColumn; @Override - public EnumSet getAcceptedColumnTypes() { - return EnumSet.of(MajorTypeId.DATE_RANGE); + public List getRequiredColumns() { + if (isSingleColumnDaterange()) { + return List.of(column); + } + return List.of(startColumn, endColumn); } @Override public void configureFrontend(FrontendFilterConfiguration.Top f, ConqueryConfig conqueryConfig) throws ConceptConfigurationException { - MajorTypeId type = getColumn().resolve().getType(); - if (type != MajorTypeId.DATE_RANGE) { - throw new ConceptConfigurationException(getConnector(), "DURATION_SUM filter is incompatible with columns of type " - + type); - } - f.setType(FrontendFilterType.Fields.INTEGER_RANGE); f.setMin(0); } @@ -45,4 +51,9 @@ public void configureFrontend(FrontendFilterConfiguration.Top f, ConqueryConfig public FilterNode createFilterNode(Range.LongRange value) { return new RangeFilterNode(value, new DurationSumAggregator(getColumn().resolve())); } + + @Override + public FilterConverter createConverter() { + return new DurationSumSqlAggregator(); + } } diff --git a/backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/specific/DurationSumSelect.java b/backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/specific/DurationSumSelect.java index d0f35c2325..85efd6fd85 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/specific/DurationSumSelect.java +++ b/backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/specific/DurationSumSelect.java @@ -10,7 +10,7 @@ import com.bakdata.conquery.models.query.queryplan.aggregators.Aggregator; import com.bakdata.conquery.models.query.queryplan.aggregators.specific.DurationSumAggregator; import com.bakdata.conquery.models.types.ResultType; -import com.bakdata.conquery.sql.conversion.model.select.DurationSumSelectConverter; +import com.bakdata.conquery.sql.conversion.model.aggregator.DurationSumSqlAggregator; import com.bakdata.conquery.sql.conversion.model.select.SelectConverter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -52,6 +52,6 @@ public ResultType getResultType() { @Override public SelectConverter createConverter() { - return new DurationSumSelectConverter(); + return new DurationSumSqlAggregator(); } } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/HanaSqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/HanaSqlFunctionProvider.java index e353f9cc3a..d556e96ce5 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/HanaSqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/HanaSqlFunctionProvider.java @@ -232,6 +232,16 @@ public Field dateDistance(ChronoUnit datePart, Field startDate, F return dateDistance.cast(Integer.class); } + @Override + public Field lower(Field daterange) { + throw new UnsupportedOperationException("HANA does not support single-column date ranges."); + } + + @Override + public Field upper(Field daterange) { + throw new UnsupportedOperationException("HANA does not support single-column date ranges."); + } + @Override public Field toDateField(String dateExpression) { return DSL.function( diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java index 5fe02122cc..21b4955b01 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/PostgreSqlFunctionProvider.java @@ -258,6 +258,16 @@ public Field toDateField(String dateValue) { return DSL.field("{0}::{1}", Date.class, DSL.val(dateValue), DSL.keyword("date")); } + @Override + public Field upper(Field daterange) { + return DSL.function("upper", Date.class, daterange); + } + + @Override + public Field lower(Field daterange) { + return DSL.function("lower", Date.class, daterange); + } + public Field daterange(Field startColumn, Field endColumn, String bounds) { return DSL.function( "daterange", @@ -295,14 +305,6 @@ private static Field unnest(Field multirange) { return DSL.function("unnest", Object.class, multirange); } - private static Field upper(Field daterange) { - return DSL.function("upper", Date.class, daterange); - } - - private static Field lower(Field daterange) { - return DSL.function("lower", Date.class, daterange); - } - private ColumnDateRange toColumnDateRange(CDateRange dateRestriction) { String startDateExpression = MINUS_INFINITY_DATE_VALUE; String endDateExpression = INFINITY_DATE_VALUE; diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java index 19dd41b2d1..98f80513d3 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/dialect/SqlFunctionProvider.java @@ -132,6 +132,16 @@ public interface SqlFunctionProvider { */ Field dateDistance(ChronoUnit datePart, Field startDate, Field endDate); + /** + * Extract the lower inclusive bound of a daterange field. Not supported for dialects without range type support. + */ + Field lower(Field daterange); + + /** + * Extract the upper exclusive bound of a daterange field. Not supported for dialects without range type support. + */ + Field upper(Field daterange); + Field addDays(Field dateColumn, Field amountOfDays); Field first(Field field, List> orderByColumn); diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/DurationSumSqlAggregator.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/DurationSumSqlAggregator.java new file mode 100644 index 0000000000..9e14d2b99f --- /dev/null +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/DurationSumSqlAggregator.java @@ -0,0 +1,73 @@ +package com.bakdata.conquery.sql.conversion.model.aggregator; + +import com.bakdata.conquery.models.common.Range; +import com.bakdata.conquery.models.common.Range.LongRange; +import com.bakdata.conquery.models.datasets.Column; +import com.bakdata.conquery.models.datasets.concepts.filters.specific.DurationSumFilter; +import com.bakdata.conquery.models.datasets.concepts.select.connector.specific.DurationSumSelect; +import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorSqlTables; +import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext; +import com.bakdata.conquery.sql.conversion.dialect.SqlFunctionProvider; +import com.bakdata.conquery.sql.conversion.model.ColumnDateRange; +import com.bakdata.conquery.sql.conversion.model.filter.DateDistanceCondition; +import com.bakdata.conquery.sql.conversion.model.filter.FilterConverter; +import com.bakdata.conquery.sql.conversion.model.filter.SqlFilters; +import com.bakdata.conquery.sql.conversion.model.filter.SumCondition; +import com.bakdata.conquery.sql.conversion.model.select.ConnectorSqlSelects; +import com.bakdata.conquery.sql.conversion.model.select.DaterangeSelectUtil; +import com.bakdata.conquery.sql.conversion.model.select.DaterangeSelectUtil.AggregationFunction; +import com.bakdata.conquery.sql.conversion.model.select.SelectContext; +import com.bakdata.conquery.sql.conversion.model.select.SelectConverter; +import java.sql.Date; +import java.time.temporal.ChronoUnit; +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.impl.DSL; + +public class DurationSumSqlAggregator implements SelectConverter, FilterConverter, SqlAggregator { + + @Override + public ConnectorSqlSelects connectorSelect(DurationSumSelect select, SelectContext selectContext) { + return DaterangeSelectUtil.createForSelect(select, durationSumSelectFunction(), selectContext); + } + + @Override + public SqlFilters convertToSqlFilter(DurationSumFilter filter, FilterContext context) { + return DaterangeSelectUtil.createForFilter( + filter, + durationSumSelectFunction(), + (aggregationField -> new SumCondition((Field) aggregationField, context.getValue())), + context); + } + + @Override + public Condition convertForTableExport(DurationSumFilter filter, FilterContext filterContext) { + SqlFunctionProvider functionProvider = filterContext.getFunctionProvider(); + + Field startDateField; + Field endDateField; + if (!filter.isSingleColumnDaterange()) { + Column startColumn = filter.getStartColumn().resolve(); + Column endColumn = filter.getEndColumn().resolve(); + String tableName = startColumn.getTable().getName(); + startDateField = DSL.field(DSL.name(tableName, startColumn.getName()), Date.class); + endDateField = DSL.field(DSL.name(tableName, endColumn.getName()), Date.class); + } else { + Column column = filter.getColumn().resolve(); + String tableName = column.getTable().getName(); + Field daterangeField = DSL.field(DSL.name(tableName, column.getName()), Date.class); + startDateField = functionProvider.lower(daterangeField); + endDateField = functionProvider.upper(daterangeField); + } + Field dateDistance = functionProvider.dateDistance(ChronoUnit.DAYS, startDateField, endDateField); + // no need so compute a sum here - the duration sum of a single row is simply the date distance + return new DateDistanceCondition(dateDistance, filterContext.getValue()).condition(); + } + + private static AggregationFunction durationSumSelectFunction() { + return (daterange, alias, functionProvider) -> { + ColumnDateRange asDualColumn = functionProvider.toDualColumn(daterange); + return DaterangeSelectUtil.createDurationSumSqlSelect(alias, asDualColumn, functionProvider); + }; + } +} diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DateUnionSelectConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DateUnionSelectConverter.java index b479b6859b..9a2337b21f 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DateUnionSelectConverter.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DateUnionSelectConverter.java @@ -7,7 +7,7 @@ public class DateUnionSelectConverter implements SelectConverter selectContext) { - return DaterangeSelectUtil.createConnectorSqlSelects( + return DaterangeSelectUtil.createForSelect( select, (daterange, alias, functionProvider) -> new FieldWrapper<>(functionProvider.daterangeStringAggregation(daterange).as(alias)), selectContext diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DaterangeSelectUtil.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DaterangeSelectUtil.java index 04bbc0b0cf..602f62f362 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DaterangeSelectUtil.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DaterangeSelectUtil.java @@ -5,49 +5,59 @@ import static com.bakdata.conquery.sql.conversion.cqelement.concept.ConceptCteStep.UNNEST_DATE; import static com.bakdata.conquery.sql.conversion.cqelement.intervalpacking.IntervalPackingCteStep.INTERVAL_COMPLETE; -import java.math.BigDecimal; -import java.sql.Date; -import java.time.temporal.ChronoUnit; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - import com.bakdata.conquery.models.datasets.concepts.DaterangeSelectOrFilter; import com.bakdata.conquery.models.identifiable.Named; +import com.bakdata.conquery.sql.conversion.Context; import com.bakdata.conquery.sql.conversion.cqelement.concept.ConceptCteStep; import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorSqlTables; +import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext; import com.bakdata.conquery.sql.conversion.cqelement.concept.IntervalPackingSelectsCte; import com.bakdata.conquery.sql.conversion.cqelement.intervalpacking.IntervalPackingContext; import com.bakdata.conquery.sql.conversion.cqelement.intervalpacking.IntervalPackingCteStep; +import com.bakdata.conquery.sql.conversion.dialect.SqlDialect; import com.bakdata.conquery.sql.conversion.dialect.SqlFunctionProvider; import com.bakdata.conquery.sql.conversion.model.ColumnDateRange; import com.bakdata.conquery.sql.conversion.model.CteStep; import com.bakdata.conquery.sql.conversion.model.QueryStep; +import com.bakdata.conquery.sql.conversion.model.SqlIdColumns; import com.bakdata.conquery.sql.conversion.model.SqlTables; +import com.bakdata.conquery.sql.conversion.model.filter.SqlFilters; +import com.bakdata.conquery.sql.conversion.model.filter.WhereClauses; +import com.bakdata.conquery.sql.conversion.model.filter.WhereCondition; +import java.math.BigDecimal; +import java.sql.Date; +import java.time.temporal.ChronoUnit; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; import org.jooq.Condition; import org.jooq.Field; import org.jooq.impl.DSL; -class DaterangeSelectUtil { +public class DaterangeSelectUtil { @FunctionalInterface public interface AggregationFunction { FieldWrapper apply(ColumnDateRange daterange, String alias, SqlFunctionProvider functionProvider); } + @FunctionalInterface + public interface FilterFunction { + WhereCondition apply(Field aggregationField); + } + /** * Aggregates the daterange of a corresponding {@link DaterangeSelectOrFilter} and applies the respective converted aggregation via * {@link IntervalPackingSelectsCte}s using additional predecessor tables. */ - public static > ConnectorSqlSelects createConnectorSqlSelects( + public static > ConnectorSqlSelects createForSelect( S select, AggregationFunction aggregationFunction, SelectContext context ) { String alias = context.getNameGenerator().selectName(select); - ConnectorSqlTables tables = context.getTables(); SqlFunctionProvider functionProvider = context.getSqlDialect().getFunctionProvider(); ColumnDateRange daterange = functionProvider.forArbitraryDateRange(select).as(alias); @@ -55,8 +65,8 @@ public static > ConnectorSqlSelects .map(FieldWrapper::new) .collect(Collectors.toList()); - SqlTables daterangeSelectTables = createTables(alias, context); - QueryStep lastIntervalPackingStep = applyIntervalPacking(daterange, daterangeSelectTables, context); + SqlTables daterangeSelectTables = createTables(alias, context.getTables(), context); + QueryStep lastIntervalPackingStep = applyIntervalPacking(daterange, daterangeSelectTables, context.getIds(), context.getTables(), context.getSqlDialect()); ColumnDateRange qualified = daterange.qualify(daterangeSelectTables.getPredecessor(INTERVAL_PACKING_SELECTS)); FieldWrapper aggregationField = aggregationFunction.apply(qualified, alias, functionProvider); @@ -69,6 +79,7 @@ public static > ConnectorSqlSelects context.getSqlDialect() ); + ConnectorSqlTables tables = context.getTables(); ExtractingSqlSelect finalSelect = aggregationField.qualify(tables.getPredecessor(ConceptCteStep.AGGREGATION_FILTER)); return ConnectorSqlSelects.builder() @@ -78,6 +89,50 @@ public static > ConnectorSqlSelects .build(); } + /** + * Aggregates the daterange of a corresponding {@link DaterangeSelectOrFilter} and applies the respective converted aggregation via + * {@link IntervalPackingSelectsCte}s using additional predecessor tables. Finally, the filter condition is created. + */ + public static > SqlFilters createForFilter( + F filter, + AggregationFunction aggregationFunction, + FilterFunction filterFunction, + FilterContext context + ) { + String alias = context.getNameGenerator().selectName(filter); + SqlFunctionProvider functionProvider = context.getSqlDialect().getFunctionProvider(); + + ColumnDateRange daterange = functionProvider.forArbitraryDateRange(filter).as(alias); + List rootSelects = daterange.toFields().stream() + .map(FieldWrapper::new) + .collect(Collectors.toList()); + + SqlTables daterangeSelectTables = createTables(alias, context.getTables(), context); + QueryStep lastIntervalPackingStep = applyIntervalPacking(daterange, daterangeSelectTables, context.getIds(), context.getTables(), context.getSqlDialect()); + + ColumnDateRange qualified = daterange.qualify(daterangeSelectTables.getPredecessor(INTERVAL_PACKING_SELECTS)); + FieldWrapper aggregationField = aggregationFunction.apply(qualified, alias, functionProvider); + + QueryStep intervalPackingSelectsStep = IntervalPackingSelectsCte.forSelect( + lastIntervalPackingStep, + qualified, + aggregationField, + daterangeSelectTables, + context.getSqlDialect() + ); + + ConnectorSqlSelects sqlSelects = ConnectorSqlSelects.builder() + .preprocessingSelects(rootSelects) + .additionalPredecessor(Optional.of(intervalPackingSelectsStep)) + .build(); + + ConnectorSqlTables tables = context.getTables(); + Field qualifiedAggregationField = aggregationField.qualify(tables.getPredecessor(ConceptCteStep.AGGREGATION_FILTER)).select(); + WhereClauses whereClauses = WhereClauses.builder().groupFilter(filterFunction.apply(qualifiedAggregationField)).build(); + + return new SqlFilters(sqlSelects, whereClauses); + } + public static FieldWrapper createDurationSumSqlSelect(String alias, ColumnDateRange validityDate, SqlFunctionProvider functionProvider) { Field dateDistanceInDays = functionProvider.dateDistance(ChronoUnit.DAYS, validityDate.getStart(), validityDate.getEnd()); Field durationSum = DSL.sum( @@ -94,9 +149,9 @@ private static Condition containsInfinityDate(ColumnDateRange validityDate, SqlF return validityDate.getStart().eq(negativeInfinity).or(validityDate.getEnd().eq(positiveInfinity)); } - private static SqlTables createTables(String alias, SelectContext context) { + private static SqlTables createTables(String alias, ConnectorSqlTables connectorTables, Context context) { Map predecessorMapping = new HashMap<>(); - String eventFilterCteName = context.getTables().cteName(EVENT_FILTER); + String eventFilterCteName = connectorTables.cteName(EVENT_FILTER); predecessorMapping.putAll(IntervalPackingCteStep.getMappings(context.getSqlDialect())); if (context.getSqlDialect().supportsSingleColumnRanges()) { predecessorMapping.put(UNNEST_DATE, INTERVAL_COMPLETE); @@ -109,18 +164,21 @@ private static SqlTables createTables(String alias, SelectContext context) { - - String eventFilterCteName = context.getTables().cteName(EVENT_FILTER); + private static QueryStep applyIntervalPacking( + ColumnDateRange daterange, + SqlTables dateUnionTables, + SqlIdColumns idColumns, + ConnectorSqlTables connectorSqlTables, + SqlDialect sqlDialect + ) { + String eventFilterCteName = connectorSqlTables.cteName(EVENT_FILTER); IntervalPackingContext intervalPackingContext = IntervalPackingContext.builder() - .ids(context.getIds().qualify(eventFilterCteName)) + .ids(idColumns.qualify(eventFilterCteName)) .daterange(daterange.qualify(eventFilterCteName)) .tables(dateUnionTables) .build(); - return context.getSqlDialect() - .getIntervalPacker() - .aggregateAsArbitrarySelect(intervalPackingContext); + return sqlDialect.getIntervalPacker().aggregateAsArbitrarySelect(intervalPackingContext); } } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DurationSumSelectConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DurationSumSelectConverter.java deleted file mode 100644 index de8ec3496f..0000000000 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/DurationSumSelectConverter.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.bakdata.conquery.sql.conversion.model.select; - -import com.bakdata.conquery.models.datasets.concepts.select.connector.specific.DurationSumSelect; -import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorSqlTables; -import com.bakdata.conquery.sql.conversion.model.ColumnDateRange; - -public class DurationSumSelectConverter implements SelectConverter { - - @Override - public ConnectorSqlSelects connectorSelect(DurationSumSelect select, SelectContext selectContext) { - return DaterangeSelectUtil.createConnectorSqlSelects( - select, - (daterange, alias, functionProvider) -> { - ColumnDateRange asDualColumn = functionProvider.toDualColumn(daterange); - return DaterangeSelectUtil.createDurationSumSqlSelect(alias, asDualColumn, functionProvider); - }, - selectContext - ); - } - -} From 067fe602d5f0a86504a5ff9b2a5c65717b4f34e5 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Tue, 8 Jul 2025 13:44:31 +0200 Subject: [PATCH 27/32] fix: fix ExistsSelect conversion without manipulating the parser --- .../conquery/sql/conversion/model/Selects.java | 9 +++++++++ .../sql/conversion/model/select/ExistsSqlSelect.java | 5 +++++ .../sql/conversion/model/select/SqlSelect.java | 8 ++++++++ .../sql/conversion/query/ConceptQueryConverter.java | 11 ++++------- .../sql/execution/DefaultResultSetProcessor.java | 5 +---- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/Selects.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/Selects.java index b8361ea940..e9a7aee838 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/Selects.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/Selects.java @@ -25,6 +25,15 @@ public class Selects { @Singular List sqlSelects; + public Selects toFinalRepresentation() { + return builder() + .ids(this.ids) + .validityDate(this.validityDate) + .stratificationDate(this.stratificationDate) + .sqlSelects(this.sqlSelects.stream().map(SqlSelect::toFinalRepresentation).toList()) + .build(); + } + public Selects withValidityDate(ColumnDateRange validityDate) { return this.toBuilder() .validityDate(Optional.of(validityDate)) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java index fd31e1603d..3513d78795 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java @@ -51,4 +51,9 @@ public SingleColumnSqlSelect qualify(final String qualifier) { public SqlSelect connectorAggregate() { return new ExistsSqlSelect(DSL.max(DSL.coalesce(select(), DSL.value(0))).as(alias), alias); } + + @Override + public SqlSelect toFinalRepresentation() { + return new ExistsSqlSelect(DSL.when(select().isNull(), 0).otherwise(1).as(alias), alias); + } } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/SqlSelect.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/SqlSelect.java index 519e5668bc..882925284c 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/SqlSelect.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/SqlSelect.java @@ -29,4 +29,12 @@ default SqlSelect connectorAggregate() { return this; } + /** + * Special selects like {@link ExistsSelect} require to be converted into a specific format before executing the + * final query. + */ + default SqlSelect toFinalRepresentation() { + return this; + } + } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/ConceptQueryConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/ConceptQueryConverter.java index f435d34004..54d35b6fc1 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/ConceptQueryConverter.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/ConceptQueryConverter.java @@ -1,12 +1,7 @@ package com.bakdata.conquery.sql.conversion.query; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Stream; - import com.bakdata.conquery.apiv1.query.ConceptQuery; import com.bakdata.conquery.models.query.DateAggregationMode; -import com.bakdata.conquery.models.query.queryplan.DateAggregationAction; import com.bakdata.conquery.sql.conversion.NodeConverter; import com.bakdata.conquery.sql.conversion.SharedAliases; import com.bakdata.conquery.sql.conversion.cqelement.ConversionContext; @@ -19,8 +14,10 @@ import com.bakdata.conquery.sql.conversion.model.Selects; import com.bakdata.conquery.sql.conversion.model.SqlQuery; import com.bakdata.conquery.sql.conversion.model.select.SqlSelect; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; import lombok.RequiredArgsConstructor; -import org.jetbrains.annotations.NotNull; import org.jooq.Field; import org.jooq.Record; import org.jooq.Select; @@ -47,7 +44,7 @@ public ConversionContext convert(ConceptQuery conceptQuery, ConversionContext co QueryStep finalStep = QueryStep.builder() .cteName(null) // the final QueryStep won't be converted to a CTE - .selects(getFinalSelects(conceptQuery, preFinalSelects, context.getSqlDialect().getFunctionProvider())) + .selects(getFinalSelects(conceptQuery, preFinalSelects, context.getSqlDialect().getFunctionProvider()).toFinalRepresentation()) .fromTable(getFinalTable(preFinalStep, contextAfterConversion)) .groupBy(getFinalGroupBySelects(preFinalSelects)) .predecessors(predecessors) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java b/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java index 0abdd1db92..216d35b161 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/execution/DefaultResultSetProcessor.java @@ -45,10 +45,7 @@ public BigDecimal getMoney(ResultSet resultSet, int columnIndex) throws SQLExcep @Override public Boolean getBoolean(ResultSet resultSet, int columnIndex) throws SQLException { - if (resultSet.getObject(columnIndex) == null) { - return false; - } - return resultSet.getBoolean(columnIndex); + return checkForNullElseGet(resultSet, columnIndex, resultSet::getBoolean, Boolean.class); } @Override From a782257ae9f943b44502306e2c236a196ce401f6 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Tue, 8 Jul 2025 13:46:55 +0200 Subject: [PATCH 28/32] fix: apply ExistsConversion fix to forms too --- .../conquery/sql/conversion/query/FormConversionHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/FormConversionHelper.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/FormConversionHelper.java index 8a728a72ff..d8f8e873b0 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/FormConversionHelper.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/query/FormConversionHelper.java @@ -127,7 +127,7 @@ private ConversionContext createFinalSelect( QueryStep finalStep = QueryStep.builder() .cteName(null) // the final QueryStep won't be converted to a CTE - .selects(getFinalSelects(formType, stratificationTable, convertedFeatures, functionProvider)) + .selects(getFinalSelects(formType, stratificationTable, convertedFeatures, functionProvider).toFinalRepresentation()) .fromTable(joinedTable) .predecessors(queriesToJoin) .build(); From 65abae9e0a966aea3ad57bae3f16821dd977be24 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Tue, 8 Jul 2025 14:03:08 +0200 Subject: [PATCH 29/32] fix: use coalesce for ExistsSelect final representation --- .../sql/conversion/model/select/ExistsSqlSelect.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java index 3513d78795..33a66b12cc 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/select/ExistsSqlSelect.java @@ -2,7 +2,6 @@ import java.util.Collections; import java.util.List; - import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import org.jooq.Field; @@ -49,11 +48,15 @@ public SingleColumnSqlSelect qualify(final String qualifier) { @Override public SqlSelect connectorAggregate() { - return new ExistsSqlSelect(DSL.max(DSL.coalesce(select(), DSL.value(0))).as(alias), alias); + return new ExistsSqlSelect(DSL.max(coalesceWithZero()).as(alias), alias); } @Override public SqlSelect toFinalRepresentation() { - return new ExistsSqlSelect(DSL.when(select().isNull(), 0).otherwise(1).as(alias), alias); + return new ExistsSqlSelect(coalesceWithZero().as(alias), alias); + } + + private Field coalesceWithZero() { + return DSL.coalesce(select(), DSL.value(0)); } } From 68145827f24142e196365c426ac7847ada766265 Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Fri, 18 Jul 2025 18:16:54 +0200 Subject: [PATCH 30/32] fix: negation for simple cases --- .../query/concept/filter/FilterValue.java | 3 - .../cqelement/concept/CQConceptConverter.java | 3 +- .../cqelement/concept/ConceptCteStep.java | 1 + .../cqelement/concept/NegationCte.java | 64 +++++++++++++++++++ .../cqelement/concept/TablePath.java | 4 ++ .../filter/QuartersInYearFilterConverter.java | 19 ++++++ .../conversion/model/filter/WhereClauses.java | 8 --- 7 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/NegationCte.java create mode 100644 backend/src/main/java/com/bakdata/conquery/sql/conversion/model/filter/QuartersInYearFilterConverter.java diff --git a/backend/src/main/java/com/bakdata/conquery/apiv1/query/concept/filter/FilterValue.java b/backend/src/main/java/com/bakdata/conquery/apiv1/query/concept/filter/FilterValue.java index 3ecdb24671..131b462074 100644 --- a/backend/src/main/java/com/bakdata/conquery/apiv1/query/concept/filter/FilterValue.java +++ b/backend/src/main/java/com/bakdata/conquery/apiv1/query/concept/filter/FilterValue.java @@ -68,9 +68,6 @@ public SqlFilters convertToSqlFilter(SqlIdColumns ids, ConversionContext context FilterContext filterContext = FilterContext.forConceptConversion(ids, readValue(), context, tables); final Filter resolve = (Filter) filter.resolve(); SqlFilters sqlFilters = resolve.createConverter().convertToSqlFilter(resolve, filterContext); - if (context.isNegation()) { - return new SqlFilters(sqlFilters.getSelects(), sqlFilters.getWhereClauses().negated()); - } return sqlFilters; } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java index 98dfa8c9db..2cf149a612 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java @@ -58,7 +58,8 @@ public CQConceptConverter() { new EventFilterCte(), new AggregationSelectCte(), new JoinBranchesCte(), - new AggregationFilterCte() + new AggregationFilterCte(), + new NegationCte() ); } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/ConceptCteStep.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/ConceptCteStep.java index 01ad5d1593..f53b5a6428 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/ConceptCteStep.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/ConceptCteStep.java @@ -17,6 +17,7 @@ public enum ConceptCteStep implements CteStep { AGGREGATION_SELECT("group_select", EVENT_FILTER), JOIN_BRANCHES("join_branches", AGGREGATION_SELECT), AGGREGATION_FILTER("group_filter", JOIN_BRANCHES), + NEGATION("negation", AGGREGATION_FILTER), // interval packing selects UNNEST_DATE("unnested", null), diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/NegationCte.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/NegationCte.java new file mode 100644 index 0000000000..14f0a76f46 --- /dev/null +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/NegationCte.java @@ -0,0 +1,64 @@ +package com.bakdata.conquery.sql.conversion.cqelement.concept; + +import com.bakdata.conquery.sql.conversion.model.QueryStep; +import com.bakdata.conquery.sql.conversion.model.QueryStep.QueryStepBuilder; +import com.bakdata.conquery.sql.conversion.model.Selects; +import com.bakdata.conquery.sql.conversion.model.SqlIdColumns; +import java.util.List; +import java.util.stream.Stream; +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.Record; +import org.jooq.Table; +import org.jooq.impl.DSL; + +public class NegationCte extends ConnectorCte { + @Override + protected ConceptCteStep cteStep() { + return ConceptCteStep.NEGATION; + } + + @Override + protected QueryStepBuilder convertStep(CQTableContext tableContext) { + ConnectorSqlTables connectorTables = tableContext.getConnectorTables(); + QueryStep aggregationFilterStep = tableContext.getPrevious(); + Selects aggregationFilterSelects = aggregationFilterStep.getQualifiedSelects(); + + Table rootTable = DSL.table(DSL.name(connectorTables.getRootTable())); + Table eventFilter = DSL.table(DSL.name(connectorTables.cteName(ConceptCteStep.EVENT_FILTER))); + Table aggregationSelect = DSL.table(DSL.name(connectorTables.cteName(ConceptCteStep.AGGREGATION_SELECT))); + Table aggregationFilter = DSL.table(DSL.name(connectorTables.cteName(ConceptCteStep.AGGREGATION_FILTER))); + + // predecessor is ID column without alias + SqlIdColumns rootIds = tableContext.getIds().getPredecessor().get(); + SqlIdColumns eventFilterIds = tableContext.getIds().qualify(connectorTables.cteName(ConceptCteStep.EVENT_FILTER)); + SqlIdColumns aggregationSelectIds = tableContext.getIds().qualify(connectorTables.cteName(ConceptCteStep.AGGREGATION_SELECT)); + SqlIdColumns aggregationFilterIds = aggregationFilterSelects.getIds(); + + Selects selects = Selects.builder() + .ids(tableContext.getIds()) + .validityDate(aggregationFilterSelects.getValidityDate()) + .stratificationDate(aggregationFilterSelects.getStratificationDate()) + .sqlSelects(aggregationFilterSelects.getSqlSelects()) + .build(); + + Condition negationCondition = Stream.concat( + eventFilterIds.toFields().stream().map(Field::isNull), + aggregationFilterIds.toFields().stream().map(Field::isNull) + ) + .reduce(Condition::or) + .orElseGet(DSL::noCondition); + + Table fromTable = + rootTable.leftJoin(eventFilter).on(rootIds.join(eventFilterIds).toArray(Condition[]::new)) + .leftJoin(aggregationSelect).on(rootIds.join(aggregationSelectIds).toArray(Condition[]::new)) + .leftJoin(aggregationFilter).on(rootIds.join(aggregationFilterIds).toArray(Condition[]::new)); + + return QueryStep.builder() + .selects(selects) + .conditions(List.of(negationCondition)) + .fromTable(fromTable) + .predecessor(aggregationFilterStep); + } + +} diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java index 32596c6182..e51640708e 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java @@ -87,6 +87,10 @@ private static TablePathInfo collectConnectorTables(CQConcept cqConcept, CQTable tableInfo.setRootTable(cqTable.getConnector().resolve().getResolvedTableId().getTable()); tableInfo.addWithDefaultMapping(MANDATORY_STEPS); + if (context.isNegation()) { + tableInfo.addWithDefaultMapping(Set.of(ConceptCteStep.NEGATION)); + } + boolean eventDateSelectsPresent = cqTable.getSelects().stream().map(SelectId::resolve).anyMatch(Select::isEventDateSelect); // no validity date aggregation necessary if (!cqConcept.isAggregateEventDates() && !eventDateSelectsPresent) { diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/filter/QuartersInYearFilterConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/filter/QuartersInYearFilterConverter.java new file mode 100644 index 0000000000..7161a05b69 --- /dev/null +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/filter/QuartersInYearFilterConverter.java @@ -0,0 +1,19 @@ +package com.bakdata.conquery.sql.conversion.model.filter; + +import com.bakdata.conquery.models.common.Range; +import com.bakdata.conquery.models.common.Range.LongRange; +import com.bakdata.conquery.models.datasets.concepts.filters.specific.QuartersInYearFilter; +import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext; +import org.jooq.Condition; + +public class QuartersInYearFilterConverter implements FilterConverter { + @Override + public SqlFilters convertToSqlFilter(QuartersInYearFilter filter, FilterContext filterContext) { + return null; + } + + @Override + public Condition convertForTableExport(QuartersInYearFilter filter, FilterContext filterContext) { + return null; + } +} diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/filter/WhereClauses.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/filter/WhereClauses.java index fa3f1b9901..ddc4198017 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/filter/WhereClauses.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/model/filter/WhereClauses.java @@ -17,14 +17,6 @@ public class WhereClauses { @Singular List groupFilters; - public WhereClauses negated() { - return new WhereClauses( - preprocessingConditions.stream().map(WhereCondition::negate).toList(), - eventFilters.stream().map(WhereCondition::negate).toList(), - groupFilters.stream().map(WhereCondition::negate).toList() - ); - } - public static WhereClauses empty() { return WhereClauses.builder().build(); } From d80b8a63b24578ea7826169f0e687eb5ab2f0e8c Mon Sep 17 00:00:00 2001 From: Jonas Arnhold Date: Wed, 24 Sep 2025 16:16:48 +0200 Subject: [PATCH 31/32] fix: negation for nested cases --- .../conquery/sql/conversion/cqelement/CQAndConverter.java | 7 +++++-- .../conquery/sql/conversion/cqelement/CQOrConverter.java | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/CQAndConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/CQAndConverter.java index 6c8f98ced3..2721ec432e 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/CQAndConverter.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/CQAndConverter.java @@ -23,10 +23,13 @@ public ConversionContext convert(CQAnd andNode, ConversionContext context) { joined = withConvertedChild.getLastConvertedStep(); } else { - joined = QueryStepJoiner.joinChildren( + final ConqueryJoinType joinType = context.isNegation() ? + ConqueryJoinType.OUTER_JOIN : + ConqueryJoinType.INNER_JOIN; + joined = QueryStepJoiner.joinChildren( andNode.getChildren(), context, - ConqueryJoinType.INNER_JOIN, + joinType, andNode.getDateAction() ); } diff --git a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/CQOrConverter.java b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/CQOrConverter.java index d77d52a207..3114a85255 100644 --- a/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/CQOrConverter.java +++ b/backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/CQOrConverter.java @@ -23,10 +23,13 @@ public ConversionContext convert(CQOr orNode, ConversionContext context) { joined = withConvertedChild.getLastConvertedStep(); } else { + final ConqueryJoinType joinType = context.isNegation() ? + ConqueryJoinType.INNER_JOIN : + ConqueryJoinType.OUTER_JOIN; joined = QueryStepJoiner.joinChildren( orNode.getChildren(), context, - ConqueryJoinType.OUTER_JOIN, + joinType, orNode.getDateAction() ); } From c38d10ae1dc9cd0d3ee46fc600b156dc3644f641 Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Tue, 6 Jan 2026 18:59:34 +0100 Subject: [PATCH 32/32] deactivates tests using daterange from hana also swaps some trivial cases to using DATE --- .../integration/json/ConqueryTestSpec.java | 1 + .../conquery/integration/json/SqlSpec.java | 2 +- .../integration/sql/CsvTableImporter.java | 3 +- .../SIMPLE_VIRTUAL_CONCEPT_Query.test.json | 6 + .../DATE_DISTANCE.test.json | 6 + .../DATE_DISTANCE2.test.json | 6 + .../DURATION_SUM.test.json | 6 + ...T_DATE_AGGREGATOR_NO_RESTRICTION.test.json | 6 + ...VENT_DATE_AGGREGATOR_RESTRICTION.test.json | 6 + .../EXISTS_AGGREGATOR/NUMBER.test.json | 6 + .../EXISTS_AGGREGATOR_OR/NUMBER.test.json | 6 + .../tests/filter/COUNT/COUNT.test.json | 8 +- .../filter/COUNT/content_COUNT_Filter.csv | 72 ++++---- .../filter/COUNT/expected_COUNT_Filter.csv | 4 +- .../filter/COUNT_DISTINCT/COUNT.test.json | 8 +- .../COUNT_DISTINCT/content_COUNT_Filter.csv | 72 ++++---- .../COUNT_DISTINCT/expected_COUNT_Filter.csv | 4 +- .../COUNT_DISTINCT_MULTI/COUNT.test.json | 8 +- .../content_COUNT_Filter.csv | 64 +++---- .../expected_COUNT_Filter.csv | 4 +- .../COUNT_QUARTERS/COUNT_QUARTERS.test.json | 8 +- .../content_COUNT_QUARTERS_Filter.csv | 76 ++++----- .../expected_COUNT_QUARTERS_Filter.csv | 12 +- .../COUNT_QUARTERS.test.json | 6 + .../tests/filter/COUNTfalse/COUNT.test.json | 6 + .../COUNTfalse/content_COUNT_Filter.csv | 72 ++++---- .../COUNTfalse/expected_COUNT_Filter.csv | 4 +- .../DURATION_SUM/DURATION_SUM.test.json | 6 + .../DURATION_SUM_2/DURATION_SUM_2.test.json | 6 + .../filter/NUMBER_INTEGER2/NUMBER.test.json | 41 ----- .../NUMBER_INTEGER2/content_NUMBER_Filter.csv | 2 - .../expected_NUMBER_Filter.csv | 2 - .../NUMBER_REAL_MISSING/NUMBER.test.json | 8 +- .../content_NUMBER_Filter.csv | 4 +- .../expected_NUMBER_Filter.csv | 2 +- .../QUARTERS_IN_YEAR.test.json | 6 + .../content_QUARTERS_IN_YEAR_Filter.csv | 98 +++++------ .../expected_QUARTERS_IN_YEAR_Filter.csv | 14 +- .../ABS_EXPORT_FORM_SECONDARY_ID.test.json | 160 +++++++++--------- .../ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json | 92 +++++----- .../ABS_EXPORT_FORM_WITH_SELECT.test.json | 102 +++++------ .../SIMPLE_DATE_RESTRICTION/AND_DR.test.json | 6 + .../SIMPLE_DATE_RESTRICTION/DR_AND.test.json | 6 + .../LOGICAL/ABS_EXPORT_FORM.test.json | 6 + .../ABS_EXPORT_FORM.test.json | 6 + .../SECONDARY_ID/SECONDARY_ID.test.json | 6 + .../SIMPLE/ABS_EXPORT_FORM.test.json | 6 + .../ABS_EXPORT_FORM_WITH_SELECT.test.json | 6 + .../SECONDARY_ID/SECONDARY_ID.test.json | 6 + .../RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json | 6 + .../FULL_EXPORT_FORM_SECONDARY_ID.test.json | 6 + .../CONCEPT_RESTRICTION.test.json | 6 + .../CONCEPT_RESTRICTION.test.json | 6 + .../DATE_DISTANCE/DATE_DISTANCE.test.json | 6 + .../DATE_DISTANCE_ERSTER.test.json | 6 + .../DATE_DISTANCE_LETZTER.test.json | 6 + .../DATE_DISTANCE.test.json | 6 + .../DATE_DISTANCE_ERSTER.test.json | 6 + .../DATE_DISTANCE_LETZTER.test.json | 6 + .../DATE_DISTANCE.test.json | 6 + .../DATE_DISTANCE_ERSTER.test.json | 6 + .../DATE_DISTANCE_LETZTER.test.json | 6 + ...ION_SUM_EMPTY_DATE_CONCEPT_QUERY.test.json | 6 + .../tests/query/NUMBER/NUMBER.test.json | 6 + .../query/NUMBER_MISSING/NUMBER.test.json | 6 + .../NUMBER.test.json | 6 + .../NUMBER2.test.json | 6 + .../query/NUMBER_NEGATION/NUMBER.test.json | 6 + .../NUMBER_STRING_PARSER/NUMBER.test.json | 6 + .../NUMBER.test.json | 6 + .../SECONDARY_ID/SECONDARY_IDS.test.json | 6 + .../SECONDARY_IDS.test.json | 6 + .../SECONDARY_IDS_EXCLUDED.test.json | 6 + .../SECONDARY_IDS.test.json | 6 + .../TABLE_EXPORT/RAW_TABLE_EXPORT.test.json | 6 + .../TEMPORAL/AFTER/ALL/ALL/query.test.json | 6 + .../TEMPORAL/AFTER/ALL/ANY/query.test.json | 6 + .../AFTER/ALL/EARLIEST/query.test.json | 6 + .../TEMPORAL/AFTER/ALL/LATEST/query.test.json | 6 + .../TEMPORAL/AFTER/ANY/ALL/query.test.json | 6 + .../TEMPORAL/AFTER/ANY/ANY/query.test.json | 6 + .../AFTER/ANY/EARLIEST/query.test.json | 6 + .../TEMPORAL/AFTER/ANY/LATEST/query.test.json | 6 + .../AFTER/EARLIEST/ALL/query.test.json | 6 + .../AFTER/EARLIEST/ANY/query.test.json | 6 + .../AFTER/EARLIEST/EARLIEST/query.test.json | 6 + .../AFTER/EARLIEST/LATEST/query.test.json | 6 + .../TEMPORAL/AFTER/LATEST/ALL/query.test.json | 6 + .../TEMPORAL/AFTER/LATEST/ANY/query.test.json | 6 + .../AFTER/LATEST/EARLIEST/query.test.json | 6 + .../AFTER/LATEST/LATEST/query.test.json | 6 + .../TEMPORAL/AGGREGATION/query.test.json | 6 + .../TEMPORAL/BEFORE/ALL/ALL/query.test.json | 6 + .../TEMPORAL/BEFORE/ALL/ANY/query.test.json | 6 + .../BEFORE/ALL/EARLIEST/query.test.json | 6 + .../BEFORE/ALL/LATEST/query.test.json | 6 + .../TEMPORAL/BEFORE/ANY/ALL/query.test.json | 6 + .../TEMPORAL/BEFORE/ANY/ANY/query.test.json | 6 + .../BEFORE/ANY/EARLIEST/query.test.json | 6 + .../BEFORE/ANY/LATEST/query.test.json | 6 + .../BEFORE/EARLIEST/ALL/query.test.json | 6 + .../BEFORE/EARLIEST/ANY/query.test.json | 6 + .../BEFORE/EARLIEST/EARLIEST/query.test.json | 6 + .../BEFORE/EARLIEST/LATEST/query.test.json | 6 + .../BEFORE/LATEST/ALL/query.test.json | 6 + .../BEFORE/LATEST/ANY/query.test.json | 6 + .../BEFORE/LATEST/EARLIEST/query.test.json | 6 + .../BEFORE/LATEST/LATEST/query.test.json | 6 + .../TEMPORAL/WHILE/ALL/ALL/query.test.json | 6 + .../TEMPORAL/WHILE/ALL/ANY/query.test.json | 6 + .../WHILE/ALL/EARLIEST/query.test.json | 6 + .../TEMPORAL/WHILE/ALL/LATEST/query.test.json | 6 + .../TEMPORAL/WHILE/ANY/ALL/query.test.json | 6 + .../TEMPORAL/WHILE/ANY/ANY/query.test.json | 6 + .../WHILE/ANY/EARLIEST/query.test.json | 6 + .../TEMPORAL/WHILE/ANY/LATEST/query.test.json | 6 + .../WHILE/EARLIEST/ALL/query.test.json | 6 + .../WHILE/EARLIEST/ANY/query.test.json | 6 + .../WHILE/EARLIEST/EARLIEST/query.test.json | 6 + .../WHILE/EARLIEST/LATEST/query.test.json | 6 + .../TEMPORAL/WHILE/LATEST/ALL/query.test.json | 6 + .../TEMPORAL/WHILE/LATEST/ANY/query.test.json | 6 + .../WHILE/LATEST/EARLIEST/query.test.json | 6 + .../WHILE/LATEST/LATEST/query.test.json | 6 + 124 files changed, 1052 insertions(+), 471 deletions(-) delete mode 100644 backend/src/test/resources/tests/filter/NUMBER_INTEGER2/NUMBER.test.json delete mode 100644 backend/src/test/resources/tests/filter/NUMBER_INTEGER2/content_NUMBER_Filter.csv delete mode 100644 backend/src/test/resources/tests/filter/NUMBER_INTEGER2/expected_NUMBER_Filter.csv diff --git a/backend/src/test/java/com/bakdata/conquery/integration/json/ConqueryTestSpec.java b/backend/src/test/java/com/bakdata/conquery/integration/json/ConqueryTestSpec.java index 9e4d837a27..12c5d8917d 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/json/ConqueryTestSpec.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/json/ConqueryTestSpec.java @@ -32,6 +32,7 @@ public abstract class ConqueryTestSpec { private static final ObjectReader TEST_SPEC_READER = Jackson.MAPPER.readerFor(ConqueryTestSpec.class); + @Nullable SqlSpec sqlSpec; private String label; diff --git a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlSpec.java b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlSpec.java index f5333f19bb..7f59296fa6 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/json/SqlSpec.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/json/SqlSpec.java @@ -1,7 +1,6 @@ package com.bakdata.conquery.integration.json; import java.util.List; - import javax.annotation.Nullable; import com.bakdata.conquery.models.config.Dialect; @@ -12,6 +11,7 @@ public class SqlSpec { boolean isEnabled; + @Nullable List supportedDialects; diff --git a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java index ac03d07b2e..1a0536c496 100644 --- a/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java +++ b/backend/src/test/java/com/bakdata/conquery/integration/sql/CsvTableImporter.java @@ -82,7 +82,8 @@ public void importAllIds(Collection tables) { .collect(Collectors.toSet()); Table table = DSL.table(DSL.name("entities")); - List> columns = List.of(DSL.field("pid", String.class)); + List> columns = List.of(DSL.field("pid", SQLDataType.VARCHAR(20))); + List content = allIds.stream() .map(Collections::singletonList) diff --git a/backend/src/test/resources/tests/aggregator/COUNT_QUARTERS_AGGREGATOR/SIMPLE_VIRTUAL_CONCEPT_Query.test.json b/backend/src/test/resources/tests/aggregator/COUNT_QUARTERS_AGGREGATOR/SIMPLE_VIRTUAL_CONCEPT_Query.test.json index d0281c15a4..955fa02f2f 100644 --- a/backend/src/test/resources/tests/aggregator/COUNT_QUARTERS_AGGREGATOR/SIMPLE_VIRTUAL_CONCEPT_Query.test.json +++ b/backend/src/test/resources/tests/aggregator/COUNT_QUARTERS_AGGREGATOR/SIMPLE_VIRTUAL_CONCEPT_Query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "COUNT_QUARTERS_AGGREGATOR Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/aggregator/COUNT_QUARTERS_AGGREGATOR/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/aggregator/DATE_DISTANCE_AGGREGATOR/DATE_DISTANCE.test.json b/backend/src/test/resources/tests/aggregator/DATE_DISTANCE_AGGREGATOR/DATE_DISTANCE.test.json index 2255eac608..b2e9283bbb 100644 --- a/backend/src/test/resources/tests/aggregator/DATE_DISTANCE_AGGREGATOR/DATE_DISTANCE.test.json +++ b/backend/src/test/resources/tests/aggregator/DATE_DISTANCE_AGGREGATOR/DATE_DISTANCE.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "DATE_DISTANCE_AGGREGATOR Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/aggregator/DATE_DISTANCE_AGGREGATOR/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/aggregator/DATE_DISTANCE_AGGREGATOR/DATE_DISTANCE2.test.json b/backend/src/test/resources/tests/aggregator/DATE_DISTANCE_AGGREGATOR/DATE_DISTANCE2.test.json index 6ec9fd4f80..acb4745dd1 100644 --- a/backend/src/test/resources/tests/aggregator/DATE_DISTANCE_AGGREGATOR/DATE_DISTANCE2.test.json +++ b/backend/src/test/resources/tests/aggregator/DATE_DISTANCE_AGGREGATOR/DATE_DISTANCE2.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "DATE_DISTANCE_AGGREGATOR2 Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/aggregator/DATE_DISTANCE_AGGREGATOR/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/aggregator/DURATION_SUM_AGGREGATOR/DURATION_SUM.test.json b/backend/src/test/resources/tests/aggregator/DURATION_SUM_AGGREGATOR/DURATION_SUM.test.json index 4c3ef4ea25..3a54197372 100644 --- a/backend/src/test/resources/tests/aggregator/DURATION_SUM_AGGREGATOR/DURATION_SUM.test.json +++ b/backend/src/test/resources/tests/aggregator/DURATION_SUM_AGGREGATOR/DURATION_SUM.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "DURATION_SUM_AGGREGATOR Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/aggregator/DURATION_SUM_AGGREGATOR/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/aggregator/EVENT_DATE_AGGREGATOR/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json b/backend/src/test/resources/tests/aggregator/EVENT_DATE_AGGREGATOR/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json index d12d5cc0d5..692fcca436 100644 --- a/backend/src/test/resources/tests/aggregator/EVENT_DATE_AGGREGATOR/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json +++ b/backend/src/test/resources/tests/aggregator/EVENT_DATE_AGGREGATOR/EVENT_DATE_AGGREGATOR_NO_RESTRICTION.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "EVENT_DATE_AGGREGATOR_NO_RESTRICTION Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/aggregator/EVENT_DATE_AGGREGATOR/expected_no_restriction.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/aggregator/EVENT_DATE_AGGREGATOR/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json b/backend/src/test/resources/tests/aggregator/EVENT_DATE_AGGREGATOR/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json index 9924999ef5..e420c4fc6b 100644 --- a/backend/src/test/resources/tests/aggregator/EVENT_DATE_AGGREGATOR/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json +++ b/backend/src/test/resources/tests/aggregator/EVENT_DATE_AGGREGATOR/EVENT_DATE_AGGREGATOR_RESTRICTION.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "EVENT_DATE_AGGREGATOR_RESTRICTION Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/aggregator/EVENT_DATE_AGGREGATOR/expected_restriction.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR/NUMBER.test.json b/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR/NUMBER.test.json index be8fc8abba..85e69af173 100644 --- a/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR/NUMBER.test.json +++ b/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR/NUMBER.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "EXISTS_AGGREGATOR & NUMBER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/aggregator/EXISTS_AGGREGATOR/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR_OR/NUMBER.test.json b/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR_OR/NUMBER.test.json index 9dbabdbbb3..28c87d6bf5 100644 --- a/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR_OR/NUMBER.test.json +++ b/backend/src/test/resources/tests/aggregator/EXISTS_AGGREGATOR_OR/NUMBER.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "EXISTS_AGGREGATOR & NUMBER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/aggregator/EXISTS_AGGREGATOR_OR/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/filter/COUNT/COUNT.test.json b/backend/src/test/resources/tests/filter/COUNT/COUNT.test.json index a5cb6bd44e..b4086e896f 100644 --- a/backend/src/test/resources/tests/filter/COUNT/COUNT.test.json +++ b/backend/src/test/resources/tests/filter/COUNT/COUNT.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "COUNT Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL", "HANA" + ] + }, "expectedCsv": "tests/filter/COUNT/expected_COUNT_Filter.csv", "connector": { "validityDates": { @@ -35,7 +41,7 @@ }, { "name": "datum", - "type": "DATE_RANGE" + "type": "DATE" } ] } diff --git a/backend/src/test/resources/tests/filter/COUNT/content_COUNT_Filter.csv b/backend/src/test/resources/tests/filter/COUNT/content_COUNT_Filter.csv index 6304a96f51..4868d571f8 100644 --- a/backend/src/test/resources/tests/filter/COUNT/content_COUNT_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNT/content_COUNT_Filter.csv @@ -1,37 +1,37 @@ pid,nr,datum -1,1,"2010-01-01/2010-01-31" -2,2,"2010-01-01/2010-01-31" -2,3,"2010-01-01/2010-01-31" -2,4,"2010-01-01/2010-01-31" -2,5,"2010-01-01/2010-01-31" -2,6,"2010-01-01/2010-01-31" -2,6,"2010-01-01/2010-01-31" -3,6,"2010-01-01/2010-01-31" -3,7,"2010-01-01/2010-01-31" -3,8,"2010-01-01/2010-01-31" -3,9,"2010-01-01/2010-01-31" -3,10,"2010-01-01/2010-01-31" -3,11,"2010-01-01/2010-01-31" -3,8,"2010-01-01/2010-01-31" -3,10,"2010-01-01/2010-01-31" -3,10,"2010-01-01/2010-01-31" -3,8,"2010-01-01/2010-01-31" -4,6,"2010-01-01/2010-01-31" -4,12,"2010-01-01/2010-01-31" -4,6,"2010-01-01/2010-01-31" -4,13,"2010-01-01/2010-01-31" -4,13,"2010-01-01/2010-01-31" -4,6,"2010-01-01/2010-01-31" -5,14,"2010-01-01/2010-01-31" -5,15,"2010-01-01/2010-01-31" -5,16,"2010-01-01/2010-01-31" -5,17,"2010-01-01/2010-01-31" -5,18,"2010-01-01/2010-01-31" -5,19,"2010-01-01/2010-01-31" -5,20,"2010-01-01/2010-01-31" -5,17,"2010-01-01/2010-01-31" -5,17,"2010-01-01/2010-01-31" -5,20,"2010-01-01/2010-01-31" -5,21,"2010-01-01/2010-01-31" -5,22,"2010-01-01/2010-01-31" -5,23,"2010-01-01/2010-01-31" \ No newline at end of file +1,1,"2010-01-01" +2,2,"2010-01-01" +2,3,"2010-01-01" +2,4,"2010-01-01" +2,5,"2010-01-01" +2,6,"2010-01-01" +2,6,"2010-01-01" +3,6,"2010-01-01" +3,7,"2010-01-01" +3,8,"2010-01-01" +3,9,"2010-01-01" +3,10,"2010-01-01" +3,11,"2010-01-01" +3,8,"2010-01-01" +3,10,"2010-01-01" +3,10,"2010-01-01" +3,8,"2010-01-01" +4,6,"2010-01-01" +4,12,"2010-01-01" +4,6,"2010-01-01" +4,13,"2010-01-01" +4,13,"2010-01-01" +4,6,"2010-01-01" +5,14,"2010-01-01" +5,15,"2010-01-01" +5,16,"2010-01-01" +5,17,"2010-01-01" +5,18,"2010-01-01" +5,19,"2010-01-01" +5,20,"2010-01-01" +5,17,"2010-01-01" +5,17,"2010-01-01" +5,20,"2010-01-01" +5,21,"2010-01-01" +5,22,"2010-01-01" +5,23,"2010-01-01" \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/COUNT/expected_COUNT_Filter.csv b/backend/src/test/resources/tests/filter/COUNT/expected_COUNT_Filter.csv index 944bad7c3b..5e8c473f54 100644 --- a/backend/src/test/resources/tests/filter/COUNT/expected_COUNT_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNT/expected_COUNT_Filter.csv @@ -1,3 +1,3 @@ result,dates -2,{2010-01-01/2010-01-31} -4,{2010-01-01/2010-01-31} \ No newline at end of file +2,{2010-01-01/2010-01-01} +4,{2010-01-01/2010-01-01} \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/COUNT_DISTINCT/COUNT.test.json b/backend/src/test/resources/tests/filter/COUNT_DISTINCT/COUNT.test.json index c94850b8ba..b206d60cc2 100644 --- a/backend/src/test/resources/tests/filter/COUNT_DISTINCT/COUNT.test.json +++ b/backend/src/test/resources/tests/filter/COUNT_DISTINCT/COUNT.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "COUNT distinct Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL", "HANA" + ] + }, "expectedCsv": "tests/filter/COUNT_DISTINCT/expected_COUNT_Filter.csv", "content": { "tables": { @@ -16,7 +22,7 @@ }, { "name": "datum", - "type": "DATE_RANGE" + "type": "DATE" } ] } diff --git a/backend/src/test/resources/tests/filter/COUNT_DISTINCT/content_COUNT_Filter.csv b/backend/src/test/resources/tests/filter/COUNT_DISTINCT/content_COUNT_Filter.csv index 6304a96f51..4868d571f8 100644 --- a/backend/src/test/resources/tests/filter/COUNT_DISTINCT/content_COUNT_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNT_DISTINCT/content_COUNT_Filter.csv @@ -1,37 +1,37 @@ pid,nr,datum -1,1,"2010-01-01/2010-01-31" -2,2,"2010-01-01/2010-01-31" -2,3,"2010-01-01/2010-01-31" -2,4,"2010-01-01/2010-01-31" -2,5,"2010-01-01/2010-01-31" -2,6,"2010-01-01/2010-01-31" -2,6,"2010-01-01/2010-01-31" -3,6,"2010-01-01/2010-01-31" -3,7,"2010-01-01/2010-01-31" -3,8,"2010-01-01/2010-01-31" -3,9,"2010-01-01/2010-01-31" -3,10,"2010-01-01/2010-01-31" -3,11,"2010-01-01/2010-01-31" -3,8,"2010-01-01/2010-01-31" -3,10,"2010-01-01/2010-01-31" -3,10,"2010-01-01/2010-01-31" -3,8,"2010-01-01/2010-01-31" -4,6,"2010-01-01/2010-01-31" -4,12,"2010-01-01/2010-01-31" -4,6,"2010-01-01/2010-01-31" -4,13,"2010-01-01/2010-01-31" -4,13,"2010-01-01/2010-01-31" -4,6,"2010-01-01/2010-01-31" -5,14,"2010-01-01/2010-01-31" -5,15,"2010-01-01/2010-01-31" -5,16,"2010-01-01/2010-01-31" -5,17,"2010-01-01/2010-01-31" -5,18,"2010-01-01/2010-01-31" -5,19,"2010-01-01/2010-01-31" -5,20,"2010-01-01/2010-01-31" -5,17,"2010-01-01/2010-01-31" -5,17,"2010-01-01/2010-01-31" -5,20,"2010-01-01/2010-01-31" -5,21,"2010-01-01/2010-01-31" -5,22,"2010-01-01/2010-01-31" -5,23,"2010-01-01/2010-01-31" \ No newline at end of file +1,1,"2010-01-01" +2,2,"2010-01-01" +2,3,"2010-01-01" +2,4,"2010-01-01" +2,5,"2010-01-01" +2,6,"2010-01-01" +2,6,"2010-01-01" +3,6,"2010-01-01" +3,7,"2010-01-01" +3,8,"2010-01-01" +3,9,"2010-01-01" +3,10,"2010-01-01" +3,11,"2010-01-01" +3,8,"2010-01-01" +3,10,"2010-01-01" +3,10,"2010-01-01" +3,8,"2010-01-01" +4,6,"2010-01-01" +4,12,"2010-01-01" +4,6,"2010-01-01" +4,13,"2010-01-01" +4,13,"2010-01-01" +4,6,"2010-01-01" +5,14,"2010-01-01" +5,15,"2010-01-01" +5,16,"2010-01-01" +5,17,"2010-01-01" +5,18,"2010-01-01" +5,19,"2010-01-01" +5,20,"2010-01-01" +5,17,"2010-01-01" +5,17,"2010-01-01" +5,20,"2010-01-01" +5,21,"2010-01-01" +5,22,"2010-01-01" +5,23,"2010-01-01" \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/COUNT_DISTINCT/expected_COUNT_Filter.csv b/backend/src/test/resources/tests/filter/COUNT_DISTINCT/expected_COUNT_Filter.csv index fc0d69adc1..08cd9c91da 100644 --- a/backend/src/test/resources/tests/filter/COUNT_DISTINCT/expected_COUNT_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNT_DISTINCT/expected_COUNT_Filter.csv @@ -1,3 +1,3 @@ result,dates -2,{2010-01-01/2010-01-31} -3,{2010-01-01/2010-01-31} \ No newline at end of file +2,{2010-01-01/2010-01-01} +3,{2010-01-01/2010-01-01} \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/COUNT.test.json b/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/COUNT.test.json index bd87716806..581a0b2451 100644 --- a/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/COUNT.test.json +++ b/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/COUNT.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "COUNT multi distinct Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/filter/COUNT_DISTINCT_MULTI/expected_COUNT_Filter.csv", "content": { "tables": { @@ -16,7 +22,7 @@ }, { "name": "datum", - "type": "DATE_RANGE" + "type": "DATE" }, { "name": "a", diff --git a/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/content_COUNT_Filter.csv b/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/content_COUNT_Filter.csv index 59733e4e20..96a9292824 100644 --- a/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/content_COUNT_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/content_COUNT_Filter.csv @@ -1,33 +1,33 @@ pid,datum,nr,a,b -1,"2010-01-01/2010-01-31",1,"1","2" -2,"2010-01-01/2010-01-31",5,"1","2" -2,"2010-01-01/2010-01-31",2,"2","1" -2,"2010-01-01/2010-01-31",3,,"2" -2,"2010-01-01/2010-01-31",6,,"2" -2,"2010-01-01/2010-01-31",4,"1", -2,"2010-01-01/2010-01-31",6,, -3,"2010-01-01/2010-01-31",6,"1","2" -3,"2010-01-01/2010-01-31",7,"2","1" -3,"2010-01-01/2010-01-31",8,"3","2" -3,"2010-01-01/2010-01-31",9,"4","2" -3,"2010-01-01/2010-01-31",10,"4","2" -3,"2010-01-01/2010-01-31",11,"2","4" -4,"2010-01-01/2010-01-31",6,"1","2" -4,"2010-01-01/2010-01-31",12,"2","2" -4,"2010-01-01/2010-01-31",6,"1","2" -4,"2010-01-01/2010-01-31",13,"3","2" -4,"2010-01-01/2010-01-31",13,"3","2" -4,"2010-01-01/2010-01-31",6,"1","2" -5,"2010-01-01/2010-01-31",14,"2","2" -5,"2010-01-01/2010-01-31",15,"3","2" -5,"2010-01-01/2010-01-31",16,"4","2" -5,"2010-01-01/2010-01-31",17,"5","2" -5,"2010-01-01/2010-01-31",18,"6","2" -5,"2010-01-01/2010-01-31",19,"7","2" -5,"2010-01-01/2010-01-31",20,"8","2" -5,"2010-01-01/2010-01-31",17,"9","2" -5,"2010-01-01/2010-01-31",17,"10","2" -5,"2010-01-01/2010-01-31",20,"11","2" -5,"2010-01-01/2010-01-31",21,"12","2" -5,"2010-01-01/2010-01-31",22,"13","2" -5,"2010-01-01/2010-01-31",23,"14","2" +1,"2010-01-01",1,"1","2" +2,"2010-01-01",5,"1","2" +2,"2010-01-01",2,"2","1" +2,"2010-01-01",3,,"2" +2,"2010-01-01",6,,"2" +2,"2010-01-01",4,"1", +2,"2010-01-01",6,, +3,"2010-01-01",6,"1","2" +3,"2010-01-01",7,"2","1" +3,"2010-01-01",8,"3","2" +3,"2010-01-01",9,"4","2" +3,"2010-01-01",10,"4","2" +3,"2010-01-01",11,"2","4" +4,"2010-01-01",6,"1","2" +4,"2010-01-01",12,"2","2" +4,"2010-01-01",6,"1","2" +4,"2010-01-01",13,"3","2" +4,"2010-01-01",13,"3","2" +4,"2010-01-01",6,"1","2" +5,"2010-01-01",14,"2","2" +5,"2010-01-01",15,"3","2" +5,"2010-01-01",16,"4","2" +5,"2010-01-01",17,"5","2" +5,"2010-01-01",18,"6","2" +5,"2010-01-01",19,"7","2" +5,"2010-01-01",20,"8","2" +5,"2010-01-01",17,"9","2" +5,"2010-01-01",17,"10","2" +5,"2010-01-01",20,"11","2" +5,"2010-01-01",21,"12","2" +5,"2010-01-01",22,"13","2" +5,"2010-01-01",23,"14","2" diff --git a/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/expected_COUNT_Filter.csv b/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/expected_COUNT_Filter.csv index fc0d69adc1..08cd9c91da 100644 --- a/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/expected_COUNT_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNT_DISTINCT_MULTI/expected_COUNT_Filter.csv @@ -1,3 +1,3 @@ result,dates -2,{2010-01-01/2010-01-31} -3,{2010-01-01/2010-01-31} \ No newline at end of file +2,{2010-01-01/2010-01-01} +3,{2010-01-01/2010-01-01} \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/COUNT_QUARTERS/COUNT_QUARTERS.test.json b/backend/src/test/resources/tests/filter/COUNT_QUARTERS/COUNT_QUARTERS.test.json index 53fba02e62..6f340273d1 100644 --- a/backend/src/test/resources/tests/filter/COUNT_QUARTERS/COUNT_QUARTERS.test.json +++ b/backend/src/test/resources/tests/filter/COUNT_QUARTERS/COUNT_QUARTERS.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "COUNT_QUARTERS Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL", "HANA" + ] + }, "expectedCsv": "tests/filter/COUNT_QUARTERS/expected_COUNT_QUARTERS_Filter.csv", "content": { "tables": { @@ -16,7 +22,7 @@ }, { "name": "datum", - "type": "DATE_RANGE" + "type": "DATE" } ] } diff --git a/backend/src/test/resources/tests/filter/COUNT_QUARTERS/content_COUNT_QUARTERS_Filter.csv b/backend/src/test/resources/tests/filter/COUNT_QUARTERS/content_COUNT_QUARTERS_Filter.csv index 79b572281a..8e362a7fff 100644 --- a/backend/src/test/resources/tests/filter/COUNT_QUARTERS/content_COUNT_QUARTERS_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNT_QUARTERS/content_COUNT_QUARTERS_Filter.csv @@ -1,39 +1,39 @@ pid,behandlungsdatum,datum -1,2015-03-16,"2015-01-01/2016-12-31" -1,2015-03-17,"2015-01-01/2016-12-31" -2,2015-03-31,"2015-01-01/2016-12-31" -2,2015-04-01,"2015-01-01/2016-12-31" -3,2015-02-01,"2015-01-01/2016-12-31" -3,2015-04-01,"2015-01-01/2016-12-31" -3,2015-07-01,"2015-01-01/2016-12-31" -3,2015-11-01,"2015-01-01/2016-12-31" -4,2015-03-31,"2015-01-01/2016-12-31" -4,2015-04-01,"2015-01-01/2016-12-31" -4,2015-07-01,"2015-01-01/2016-12-31" -5,2015-11-12,"2015-01-01/2016-12-31" -6,2015-03-31,"2015-01-01/2016-12-31" -6,2015-04-01,"2015-01-01/2016-12-31" -6,2015-04-02,"2015-01-01/2016-12-31" -7,2015-01-01,"2015-01-01/2016-12-31" -7,2015-02-01,"2015-01-01/2016-12-31" -7,2015-03-01,"2015-01-01/2016-12-31" -7,2015-04-01,"2015-01-01/2016-12-31" -8,2015-11-11,"2015-01-01/2016-12-31" -8,2015-11-12,"2015-01-01/2016-12-31" -8,2015-11-13,"2015-01-01/2016-12-31" -8,2015-11-14,"2015-01-01/2016-12-31" -9,2015-04-14,"2015-01-01/2016-12-31" -9,2015-11-12,"2015-01-01/2016-12-31" -9,2015-09-14,"2015-01-01/2016-12-31" -9,2016-04-14,"2015-01-01/2016-12-31" -9,2016-11-12,"2015-01-01/2016-12-31" -9,2016-09-14,"2015-01-01/2016-12-31" -10,2015-09-14,"2015-01-01/2016-12-31" -10,2016-09-14,"2015-01-01/2016-12-31" -11,2015-09-14,"2015-01-01/2016-12-31" -11,2016-09-14,"2015-01-01/2016-12-31" -11,2016-11-12,"2015-01-01/2016-12-31" -12,2015-09-14,"2015-01-01/2016-12-31" -12,2015-11-12,"2015-01-01/2016-12-31" -12,2016-09-14,"2015-01-01/2016-12-31" -12,2016-11-12,"2015-01-01/2016-12-31" \ No newline at end of file +1,2015-03-16,"2010-01-01" +1,2015-03-17,"2010-01-01" +2,2015-03-31,"2010-01-01" +2,2015-04-01,"2010-01-01" +3,2015-02-01,"2010-01-01" +3,2015-04-01,"2010-01-01" +3,2015-07-01,"2010-01-01" +3,2015-11-01,"2010-01-01" +4,2015-03-31,"2010-01-01" +4,2015-04-01,"2010-01-01" +4,2015-07-01,"2010-01-01" +5,2015-11-12,"2010-01-01" +6,2015-03-31,"2010-01-01" +6,2015-04-01,"2010-01-01" +6,2015-04-02,"2010-01-01" +7,2015-01-01,"2010-01-01" +7,2015-02-01,"2010-01-01" +7,2015-03-01,"2010-01-01" +7,2015-04-01,"2010-01-01" +8,2015-11-11,"2010-01-01" +8,2015-11-12,"2010-01-01" +8,2015-11-13,"2010-01-01" +8,2015-11-14,"2010-01-01" +9,2015-04-14,"2010-01-01" +9,2015-11-12,"2010-01-01" +9,2015-09-14,"2010-01-01" +9,2016-04-14,"2010-01-01" +9,2016-11-12,"2010-01-01" +9,2016-09-14,"2010-01-01" +10,2015-09-14,"2010-01-01" +10,2016-09-14,"2010-01-01" +11,2015-09-14,"2010-01-01" +11,2016-09-14,"2010-01-01" +11,2016-11-12,"2010-01-01" +12,2015-09-14,"2010-01-01" +12,2015-11-12,"2010-01-01" +12,2016-09-14,"2010-01-01" +12,2016-11-12,"2010-01-01" \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/COUNT_QUARTERS/expected_COUNT_QUARTERS_Filter.csv b/backend/src/test/resources/tests/filter/COUNT_QUARTERS/expected_COUNT_QUARTERS_Filter.csv index e681a27fe8..e0ac3c7e0b 100644 --- a/backend/src/test/resources/tests/filter/COUNT_QUARTERS/expected_COUNT_QUARTERS_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNT_QUARTERS/expected_COUNT_QUARTERS_Filter.csv @@ -1,7 +1,7 @@ result,dates -2,{2015-01-01/2016-12-31} -4,{2015-01-01/2016-12-31} -6,{2015-01-01/2016-12-31} -7,{2015-01-01/2016-12-31} -10,{2015-01-01/2016-12-31} -11,{2015-01-01/2016-12-31} \ No newline at end of file +2,{2010-01-01/2010-01-01} +4,{2010-01-01/2010-01-01} +6,{2010-01-01/2010-01-01} +7,{2010-01-01/2010-01-01} +10,{2010-01-01/2010-01-01} +11,{2010-01-01/2010-01-01} \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/COUNT_QUARTERS_RANGE/COUNT_QUARTERS.test.json b/backend/src/test/resources/tests/filter/COUNT_QUARTERS_RANGE/COUNT_QUARTERS.test.json index 1d1c43fb78..570455eaea 100644 --- a/backend/src/test/resources/tests/filter/COUNT_QUARTERS_RANGE/COUNT_QUARTERS.test.json +++ b/backend/src/test/resources/tests/filter/COUNT_QUARTERS_RANGE/COUNT_QUARTERS.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "COUNT_QUARTERS Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/filter/COUNT_QUARTERS_RANGE/expected_COUNT_QUARTERS_Filter.csv", "content": { "tables": { diff --git a/backend/src/test/resources/tests/filter/COUNTfalse/COUNT.test.json b/backend/src/test/resources/tests/filter/COUNTfalse/COUNT.test.json index 5f3c186acf..764f9e34a4 100644 --- a/backend/src/test/resources/tests/filter/COUNTfalse/COUNT.test.json +++ b/backend/src/test/resources/tests/filter/COUNTfalse/COUNT.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "COUNTfalse Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/filter/COUNTfalse/expected_COUNT_Filter.csv", "content": { "tables": { diff --git a/backend/src/test/resources/tests/filter/COUNTfalse/content_COUNT_Filter.csv b/backend/src/test/resources/tests/filter/COUNTfalse/content_COUNT_Filter.csv index 67aca7ec58..ae05b86346 100644 --- a/backend/src/test/resources/tests/filter/COUNTfalse/content_COUNT_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNTfalse/content_COUNT_Filter.csv @@ -1,37 +1,37 @@ pid,nr,datum -1,1,"2010-01-01/2010-01-31" -2,2,"2010-01-01/2010-01-31" -2,3,"2010-01-01/2010-01-31" -2,4,"2010-01-01/2010-01-31" -2,5,"2010-01-01/2010-01-31" -2,6,"2010-01-01/2010-01-31" -2,6,"2010-01-01/2010-01-31" -3,6,"2010-01-01/2010-01-31" -3,7,"2010-01-01/2010-01-31" -3,8,"2010-01-01/2010-01-31" -3,9,"2010-01-01/2010-01-31" -3,10,"2010-01-01/2010-01-31" -3,11,"2010-01-01/2010-01-31" -3,8,"2010-01-01/2010-01-31" -3,10,"2010-01-01/2010-01-31" -3,10,"2010-01-01/2010-01-31" -3,8,"2010-01-01/2010-01-31" -4,6,"2010-01-01/2010-01-31" -4,12,"2010-01-01/2010-01-31" -4,6,"2010-01-01/2010-01-31" -4,13,"2010-01-01/2010-01-31" -4,13,"2010-01-01/2010-01-31" -4,6,"2010-01-01/2010-01-31" -5,14,"2010-01-01/2010-01-31" -5,15,"2010-01-01/2010-01-31" -5,16,"2010-01-01/2010-01-31" -5,17,"2010-01-01/2010-01-31" -5,18,"2010-01-01/2010-01-31" -5,19,"2010-01-01/2010-01-31" -5,20,"2010-01-01/2010-01-31" -5,17,"2010-01-01/2010-01-31" -5,17,"2010-01-01/2010-01-31" -5,20,"2010-01-01/2010-01-31" -5,21,"2010-01-01/2010-01-31" -5,22,"2010-01-01/2010-01-31" -5,23,"2010-01-01/2010-01-31" +1,1,"2010-01-01" +2,2,"2010-01-01" +2,3,"2010-01-01" +2,4,"2010-01-01" +2,5,"2010-01-01" +2,6,"2010-01-01" +2,6,"2010-01-01" +3,6,"2010-01-01" +3,7,"2010-01-01" +3,8,"2010-01-01" +3,9,"2010-01-01" +3,10,"2010-01-01" +3,11,"2010-01-01" +3,8,"2010-01-01" +3,10,"2010-01-01" +3,10,"2010-01-01" +3,8,"2010-01-01" +4,6,"2010-01-01" +4,12,"2010-01-01" +4,6,"2010-01-01" +4,13,"2010-01-01" +4,13,"2010-01-01" +4,6,"2010-01-01" +5,14,"2010-01-01" +5,15,"2010-01-01" +5,16,"2010-01-01" +5,17,"2010-01-01" +5,18,"2010-01-01" +5,19,"2010-01-01" +5,20,"2010-01-01" +5,17,"2010-01-01" +5,17,"2010-01-01" +5,20,"2010-01-01" +5,21,"2010-01-01" +5,22,"2010-01-01" +5,23,"2010-01-01" diff --git a/backend/src/test/resources/tests/filter/COUNTfalse/expected_COUNT_Filter.csv b/backend/src/test/resources/tests/filter/COUNTfalse/expected_COUNT_Filter.csv index 944bad7c3b..5e8c473f54 100644 --- a/backend/src/test/resources/tests/filter/COUNTfalse/expected_COUNT_Filter.csv +++ b/backend/src/test/resources/tests/filter/COUNTfalse/expected_COUNT_Filter.csv @@ -1,3 +1,3 @@ result,dates -2,{2010-01-01/2010-01-31} -4,{2010-01-01/2010-01-31} \ No newline at end of file +2,{2010-01-01/2010-01-01} +4,{2010-01-01/2010-01-01} \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/DURATION_SUM/DURATION_SUM.test.json b/backend/src/test/resources/tests/filter/DURATION_SUM/DURATION_SUM.test.json index 10ee06a49e..ee863aef04 100644 --- a/backend/src/test/resources/tests/filter/DURATION_SUM/DURATION_SUM.test.json +++ b/backend/src/test/resources/tests/filter/DURATION_SUM/DURATION_SUM.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "DURATION_SUM Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/filter/DURATION_SUM/expected_DURATION_SUM_Filter.csv", "content": { "tables": { diff --git a/backend/src/test/resources/tests/filter/DURATION_SUM_2/DURATION_SUM_2.test.json b/backend/src/test/resources/tests/filter/DURATION_SUM_2/DURATION_SUM_2.test.json index cd9bc3f9f6..ed0ad8188e 100644 --- a/backend/src/test/resources/tests/filter/DURATION_SUM_2/DURATION_SUM_2.test.json +++ b/backend/src/test/resources/tests/filter/DURATION_SUM_2/DURATION_SUM_2.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "DURATION_SUM_2 Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/filter/DURATION_SUM_2/expected_DURATION_SUM_2_Filter.csv", "content": { "tables": { diff --git a/backend/src/test/resources/tests/filter/NUMBER_INTEGER2/NUMBER.test.json b/backend/src/test/resources/tests/filter/NUMBER_INTEGER2/NUMBER.test.json deleted file mode 100644 index 26d4cdd9f2..0000000000 --- a/backend/src/test/resources/tests/filter/NUMBER_INTEGER2/NUMBER.test.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "type": "FILTER_TEST", - "label": "NUMBER_INTEGER Test", - "expectedCsv": "tests/filter/NUMBER_INTEGER2/expected_NUMBER_Filter.csv", - "content": { - "tables": { - "csv": "tests/filter/NUMBER_INTEGER2/content_NUMBER_Filter.csv", - "primaryColumn": { - "name": "pid", - "type": "STRING" - }, - "columns": [ - { - "name": "nr", - "type": "INTEGER" - }, - { - "name": "datum", - "type": "DATE_RANGE" - } - ] - } - }, - "connector": { - "validityDates": { - "label": "Datum", - "column": "table.datum" - }, - "filters": { - "type": "NUMBER", - "column": "table.nr" - } - }, - "filterValue": { - "type": "INTEGER_RANGE", - "value": { - "min": 50, - "max": 50 - } - } -} diff --git a/backend/src/test/resources/tests/filter/NUMBER_INTEGER2/content_NUMBER_Filter.csv b/backend/src/test/resources/tests/filter/NUMBER_INTEGER2/content_NUMBER_Filter.csv deleted file mode 100644 index f5c480e52b..0000000000 --- a/backend/src/test/resources/tests/filter/NUMBER_INTEGER2/content_NUMBER_Filter.csv +++ /dev/null @@ -1,2 +0,0 @@ -pid,nr,datum -1,50,"2015-03-17/2015-12-31" \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/NUMBER_INTEGER2/expected_NUMBER_Filter.csv b/backend/src/test/resources/tests/filter/NUMBER_INTEGER2/expected_NUMBER_Filter.csv deleted file mode 100644 index 5305f53f05..0000000000 --- a/backend/src/test/resources/tests/filter/NUMBER_INTEGER2/expected_NUMBER_Filter.csv +++ /dev/null @@ -1,2 +0,0 @@ -result,dates -1,{2015-03-17/2015-12-31} \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/NUMBER.test.json b/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/NUMBER.test.json index 742a097dd2..3bfe5a310c 100644 --- a/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/NUMBER.test.json +++ b/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/NUMBER.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "NUMBER_MISSING FILTER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL", "HANA" + ] + }, "expectedCsv": "tests/filter/NUMBER_REAL_MISSING/expected_NUMBER_Filter.csv", "content": { "tables": { @@ -16,7 +22,7 @@ }, { "name": "datum", - "type": "DATE_RANGE" + "type": "DATE" } ] } diff --git a/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/content_NUMBER_Filter.csv b/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/content_NUMBER_Filter.csv index a6955866af..764a23a928 100644 --- a/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/content_NUMBER_Filter.csv +++ b/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/content_NUMBER_Filter.csv @@ -1,3 +1,3 @@ pid,nr,datum -1,0,"2015-03-17/2015-03-31" -2,,"2017-05-06/2017-05-15" \ No newline at end of file +1,0,"2010-01-01" +2,,"2010-01-01" \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/expected_NUMBER_Filter.csv b/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/expected_NUMBER_Filter.csv index 3799e57909..6aff01c4d8 100644 --- a/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/expected_NUMBER_Filter.csv +++ b/backend/src/test/resources/tests/filter/NUMBER_REAL_MISSING/expected_NUMBER_Filter.csv @@ -1,2 +1,2 @@ result,dates -1,{2015-03-17/2015-03-31} \ No newline at end of file +1,{2010-01-01/2010-01-01} \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/QUARTERS_IN_YEAR.test.json b/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/QUARTERS_IN_YEAR.test.json index b3428e47d7..b7aac5923d 100644 --- a/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/QUARTERS_IN_YEAR.test.json +++ b/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/QUARTERS_IN_YEAR.test.json @@ -1,6 +1,12 @@ { "type": "FILTER_TEST", "label": "QUARTERS_IN_YEAR Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/filter/QUARTERS_IN_YEAR/expected_QUARTERS_IN_YEAR_Filter.csv", "content": { "tables": { diff --git a/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/content_QUARTERS_IN_YEAR_Filter.csv b/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/content_QUARTERS_IN_YEAR_Filter.csv index 7689c1449c..2d4be2bb41 100644 --- a/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/content_QUARTERS_IN_YEAR_Filter.csv +++ b/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/content_QUARTERS_IN_YEAR_Filter.csv @@ -1,50 +1,50 @@ pid,behandlungsdatum,datum -1,2015-03-16,"2015-01-01/2015-12-31" -1,2015-03-17,"2015-01-01/2015-12-31" - -2,2015-03-31,"2015-01-01/2015-12-31" -2,2015-04-01,"2015-01-01/2015-12-31" - -3,2015-02-01,"2015-01-01/2015-12-31" -3,2015-04-01,"2015-01-01/2015-12-31" -3,2015-07-01,"2015-01-01/2015-12-31" -3,2015-11-01,"2015-01-01/2015-12-31" - -4,2015-03-31,"2015-01-01/2015-12-31" -4,2015-04-01,"2015-01-01/2015-12-31" -4,2015-07-01,"2015-01-01/2015-12-31" - -5,2015-11-12,"2015-01-01/2015-12-31" - -6,2015-03-31,"2015-01-01/2015-12-31" -6,2015-04-01,"2015-01-01/2015-12-31" -6,2015-04-02,"2015-01-01/2015-12-31" - -7,2015-01-01,"2015-01-01/2015-12-31" -7,2015-02-01,"2015-01-01/2015-12-31" -7,2015-03-01,"2015-01-01/2015-12-31" -7,2015-04-01,"2015-01-01/2015-12-31" - -8,2015-11-11,"2015-01-01/2015-12-31" -8,2015-11-12,"2015-01-01/2015-12-31" -8,2015-11-13,"2015-01-01/2015-12-31" -8,2015-11-14,"2015-01-01/2015-12-31" - -9,2015-04-14,"2015-01-01/2015-12-31" -9,2015-11-12,"2015-01-01/2015-12-31" -9,2015-09-14,"2015-01-01/2015-12-31" -9,2016-04-14,"2016-01-01/2016-12-31" -9,2016-11-12,"2016-01-01/2016-12-31" -9,2016-09-14,"2016-01-01/2016-12-31" - -10,2015-09-14,"2015-01-01/2015-12-31" -10,2016-09-14,"2016-01-01/2016-12-31" - -11,2015-09-14,"2015-01-01/2015-12-31" -11,2016-09-14,"2016-01-01/2016-12-31" -11,2016-11-12,"2016-01-01/2016-12-31" - -12,2015-09-14,"2015-01-01/2015-12-31" -12,2015-11-12,"2015-01-01/2015-12-31" -12,2016-09-14,"2016-01-01/2016-12-31" -12,2016-11-12,"2016-01-01/2016-12-31" \ No newline at end of file +1,2015-03-16,"2010-01-01" +1,2015-03-17,"2010-01-01" + +2,2015-03-31,"2010-01-01" +2,2015-04-01,"2010-01-01" + +3,2015-02-01,"2010-01-01" +3,2015-04-01,"2010-01-01" +3,2015-07-01,"2010-01-01" +3,2015-11-01,"2010-01-01" + +4,2015-03-31,"2010-01-01" +4,2015-04-01,"2010-01-01" +4,2015-07-01,"2010-01-01" + +5,2015-11-12,"2010-01-01" + +6,2015-03-31,"2010-01-01" +6,2015-04-01,"2010-01-01" +6,2015-04-02,"2010-01-01" + +7,2015-01-01,"2010-01-01" +7,2015-02-01,"2010-01-01" +7,2015-03-01,"2010-01-01" +7,2015-04-01,"2010-01-01" + +8,2015-11-11,"2010-01-01" +8,2015-11-12,"2010-01-01" +8,2015-11-13,"2010-01-01" +8,2015-11-14,"2010-01-01" + +9,2015-04-14,"2010-01-01" +9,2015-11-12,"2010-01-01" +9,2015-09-14,"2010-01-01" +9,2016-04-14,"2010-01-02" +9,2016-11-12,"2010-01-02" +9,2016-09-14,"2010-01-02" + +10,2015-09-14,"2010-01-01" +10,2016-09-14,"2010-01-02" + +11,2015-09-14,"2010-01-01" +11,2016-09-14,"2010-01-02" +11,2016-11-12,"2010-01-02" + +12,2015-09-14,"2010-01-01" +12,2015-11-12,"2010-01-01" +12,2016-09-14,"2010-01-02" +12,2016-11-12,"2010-01-02" \ No newline at end of file diff --git a/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/expected_QUARTERS_IN_YEAR_Filter.csv b/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/expected_QUARTERS_IN_YEAR_Filter.csv index 8845f4e8f7..25976c8d13 100644 --- a/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/expected_QUARTERS_IN_YEAR_Filter.csv +++ b/backend/src/test/resources/tests/filter/QUARTERS_IN_YEAR/expected_QUARTERS_IN_YEAR_Filter.csv @@ -1,8 +1,8 @@ result,dates -2,{2015-01-01/2015-12-31} -4,{2015-01-01/2015-12-31} -6,{2015-01-01/2015-12-31} -7,{2015-01-01/2015-12-31} -9,{2015-01-01/2016-12-31} -11,{2015-01-01/2016-12-31} -12,{2015-01-01/2016-12-31} \ No newline at end of file +2,{2010-01-01/2010-01-01} +4,{2010-01-01/2010-01-01} +6,{2010-01-01/2010-01-01} +7,{2010-01-01/2010-01-01} +9,{2010-01-01/2010-01-02} +11,{2010-01-01/2010-01-02} +12,{2010-01-01/2010-01-02} \ No newline at end of file diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json index 33917a9312..139ba38898 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SECONDARY_ID/ABS_EXPORT_FORM_SECONDARY_ID.test.json @@ -1,79 +1,85 @@ { - "type": "FORM_TEST", - "label": "ABS-EXPORT-FORM SECONDARY_ID", - "expectedCsv": { - "results": "/tests/form/EXPORT_FORM/ABSOLUT/SECONDARY_ID/expected.csv" - }, - "form": { - "type": "EXPORT_FORM", - "queryGroup": "00000000-0000-0000-0000-000000000001", - "resolution": "QUARTERS", - "alsoCreateCoarserSubdivisions": true, - "features": [ - { - "ids": [ - "two_connector" - ], - "type": "CONCEPT", - "label": "explicitly set select", - "tables": [ - { - "id": "two_connector.table1", - "selects": "two_connector.table1.alter_select" - }, - { - "id": "two_connector.table2" - } - ] - } - ], - "timeMode": { - "value": "ABSOLUTE", - "dateRange": { - "min": "2012-01-16", - "max": "2012-12-17" - } - } - }, - "concepts": [ - "/tests/form/shared/two_connector.concept.json", - "/tests/form/shared/abc.concept.json" - ], - "content": { - "secondaryIds": [ - { - "name": "secondary" - }, - { - "name": "ignored" - } - ], - "tables": [ - "/tests/form/shared/vers_stamm.table.json", - "/tests/form/shared/abc.table.json" - ], - "previousQueries": [ - { - "type": "SECONDARY_ID_QUERY", - "secondaryId": "secondary", - "root": { - "type": "AND", - "children": [ - { - "type": "CONCEPT", - "excludeFromSecondaryId": false, - "ids": [ - "abc-concept.a" - ], - "tables": [ - { - "id": "abc-concept.connector" - } - ] - } - ] - } - } - ] - } + "type": "FORM_TEST", + "label": "ABS-EXPORT-FORM SECONDARY_ID", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, + "expectedCsv": { + "results": "/tests/form/EXPORT_FORM/ABSOLUT/SECONDARY_ID/expected.csv" + }, + "form": { + "type": "EXPORT_FORM", + "queryGroup": "00000000-0000-0000-0000-000000000001", + "resolution": "QUARTERS", + "alsoCreateCoarserSubdivisions": true, + "features": [ + { + "ids": [ + "two_connector" + ], + "type": "CONCEPT", + "label": "explicitly set select", + "tables": [ + { + "id": "two_connector.table1", + "selects": "two_connector.table1.alter_select" + }, + { + "id": "two_connector.table2" + } + ] + } + ], + "timeMode": { + "value": "ABSOLUTE", + "dateRange": { + "min": "2012-01-16", + "max": "2012-12-17" + } + } + }, + "concepts": [ + "/tests/form/shared/two_connector.concept.json", + "/tests/form/shared/abc.concept.json" + ], + "content": { + "secondaryIds": [ + { + "name": "secondary" + }, + { + "name": "ignored" + } + ], + "tables": [ + "/tests/form/shared/vers_stamm.table.json", + "/tests/form/shared/abc.table.json" + ], + "previousQueries": [ + { + "type": "SECONDARY_ID_QUERY", + "secondaryId": "secondary", + "root": { + "type": "AND", + "children": [ + { + "type": "CONCEPT", + "excludeFromSecondaryId": false, + "ids": [ + "abc-concept.a" + ], + "tables": [ + { + "id": "abc-concept.connector" + } + ] + } + ] + } + } + ] + } } \ No newline at end of file diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json index b8af655753..35f6a220f2 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/ABS_EXPORT_FORM.test.json @@ -1,45 +1,51 @@ { - "type": "FORM_TEST", - "label": "ABS-EXPORT-FORM ADD DEFAULT SELECT Test", - "expectedCsv": { - "results": "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/expected.csv" - }, - "form": { - "type": "EXPORT_FORM", - "queryGroup": "00000000-0000-0000-0000-000000000001", - "resolution": "QUARTERS", - "alsoCreateCoarserSubdivisions": true, - "features": [ - { - "ids": [ - "alter" - ], - "type": "CONCEPT", - "tables": [ - { - "id": "alter.alter", - "filters": [] - } - ] - } - ], - "timeMode": { - "value": "ABSOLUTE", - "dateRange": { - "min": "2012-01-16", - "max": "2012-12-17" - } - } - }, - "concepts": [ - "/tests/form/shared/alter.concept.json" - ], - "content": { - "tables": [ - "/tests/form/shared/vers_stamm.table.json" - ], - "previousQueryResults": [ - "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/query_results_1.csv" - ] - } + "type": "FORM_TEST", + "label": "ABS-EXPORT-FORM ADD DEFAULT SELECT Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, + "expectedCsv": { + "results": "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/expected.csv" + }, + "form": { + "type": "EXPORT_FORM", + "queryGroup": "00000000-0000-0000-0000-000000000001", + "resolution": "QUARTERS", + "alsoCreateCoarserSubdivisions": true, + "features": [ + { + "ids": [ + "alter" + ], + "type": "CONCEPT", + "tables": [ + { + "id": "alter.alter", + "filters": [] + } + ] + } + ], + "timeMode": { + "value": "ABSOLUTE", + "dateRange": { + "min": "2012-01-16", + "max": "2012-12-17" + } + } + }, + "concepts": [ + "/tests/form/shared/alter.concept.json" + ], + "content": { + "tables": [ + "/tests/form/shared/vers_stamm.table.json" + ], + "previousQueryResults": [ + "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/query_results_1.csv" + ] + } } \ No newline at end of file diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json index 2e835c9445..0ccb786c60 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json @@ -1,50 +1,56 @@ { - "type": "FORM_TEST", - "label": "ABS-EXPORT-FORM WITH SELECT SET Test", - "expectedCsv": { - "results": "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/expected_with_select.csv" - }, - "form": { - "type": "EXPORT_FORM", - "queryGroup": "00000000-0000-0000-0000-000000000001", - "resolution": "QUARTERS", - "alsoCreateCoarserSubdivisions": true, - "features": [ - { - "ids": [ - "two_connector" - ], - "type": "CONCEPT", - "label": "explicitly set select", - "tables": [ - { - "id": "two_connector.table1", - "selects": "two_connector.table1.liste_geburtsdatum" - }, - { - "id": "two_connector.table2" - } - ] - } - ], - "timeMode": { - "value": "ABSOLUTE", - "dateRange": { - "min": "2012-01-16", - "max": "2012-12-17" - } - }, - "values": "Some arbitrary data that is frontend/user provided" - }, - "concepts": [ - "/tests/form/shared/two_connector.concept.json" - ], - "content": { - "tables": [ - "/tests/form/shared/vers_stamm.table.json" - ], - "previousQueryResults": [ - "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/query_results_1.csv" - ] - } + "type": "FORM_TEST", + "label": "ABS-EXPORT-FORM WITH SELECT SET Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, + "expectedCsv": { + "results": "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/expected_with_select.csv" + }, + "form": { + "type": "EXPORT_FORM", + "queryGroup": "00000000-0000-0000-0000-000000000001", + "resolution": "QUARTERS", + "alsoCreateCoarserSubdivisions": true, + "features": [ + { + "ids": [ + "two_connector" + ], + "type": "CONCEPT", + "label": "explicitly set select", + "tables": [ + { + "id": "two_connector.table1", + "selects": "two_connector.table1.liste_geburtsdatum" + }, + { + "id": "two_connector.table2" + } + ] + } + ], + "timeMode": { + "value": "ABSOLUTE", + "dateRange": { + "min": "2012-01-16", + "max": "2012-12-17" + } + }, + "values": "Some arbitrary data that is frontend/user provided" + }, + "concepts": [ + "/tests/form/shared/two_connector.concept.json" + ], + "content": { + "tables": [ + "/tests/form/shared/vers_stamm.table.json" + ], + "previousQueryResults": [ + "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE/query_results_1.csv" + ] + } } \ No newline at end of file diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/AND_DR.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/AND_DR.test.json index 4af1fd8628..f87df4f78d 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/AND_DR.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/AND_DR.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "ABS-EXPORT-FORM WITH NESTING AND -> DATE_RESTRICTION", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/expected.csv" }, diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/DR_AND.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/DR_AND.test.json index 946fc9ae21..5b8985c467 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/DR_AND.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/DR_AND.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "ABS-EXPORT-FORM WITH NESTING DATE_RESTRICTION -> AND", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "tests/form/EXPORT_FORM/ABSOLUT/SIMPLE_DATE_RESTRICTION/expected.csv" }, diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json index 521806b95b..727d90dcf4 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL/ABS_EXPORT_FORM.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "ADD DEFAULT SELECT Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL/expected.csv" }, diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json index 3c82d33a12..65d3827d68 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/ABS_EXPORT_FORM.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "ADD DEFAULT SELECT Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "tests/form/EXPORT_FORM/ENTITY_DATE/LOGICAL_WITH_EXCLUDE/expected.csv" }, diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json index 2d96b60d1b..300b7cf3aa 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SECONDARY_ID/SECONDARY_ID.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "ENTITY-DATE-EXPORT-FORM SECONDARY_ID", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "/tests/form/EXPORT_FORM/ENTITY_DATE/SECONDARY_ID/expected.csv" }, diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json index 048ceb8388..2fc9c4215b 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "ADD DEFAULT SELECT Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/expected.csv" }, diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json index 8e6db7bf04..4eb14c811f 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/ABS_EXPORT_FORM_WITH_SELECT.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "WITH SELECT SET Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "tests/form/EXPORT_FORM/ENTITY_DATE/SIMPLE/expected_with_select.csv" }, diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json index a49c93b477..06385a0387 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/RELATIVE/SECONDARY_ID/SECONDARY_ID.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "REL-EXPORT-FORM SECONDARY_ID", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "/tests/form/EXPORT_FORM/RELATIVE/SECONDARY_ID/expected.csv" }, diff --git a/backend/src/test/resources/tests/form/EXPORT_FORM/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json b/backend/src/test/resources/tests/form/EXPORT_FORM/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json index 705d6af418..b9cc2becb4 100644 --- a/backend/src/test/resources/tests/form/EXPORT_FORM/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json +++ b/backend/src/test/resources/tests/form/EXPORT_FORM/RELATIVE/SIMPLE/REL_EXPORT_FORM.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "REL-EXPORT-FORM Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "tests/form/EXPORT_FORM/RELATIVE/SIMPLE/expected.csv" }, diff --git a/backend/src/test/resources/tests/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json b/backend/src/test/resources/tests/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json index 370b7b90c7..475001960d 100644 --- a/backend/src/test/resources/tests/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json +++ b/backend/src/test/resources/tests/form/FULL_EXPORT_FORM/FULL_EXPORT_FORM_SECONDARY_ID.test.json @@ -1,6 +1,12 @@ { "type": "FORM_TEST", "label": "FULL_EXPORT_FORM", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": { "results": "/tests/form/FULL_EXPORT_FORM//expected.csv" }, diff --git a/backend/src/test/resources/tests/query/CONCEPT_DATE_RESTRICTION_OPEN/CONCEPT_RESTRICTION.test.json b/backend/src/test/resources/tests/query/CONCEPT_DATE_RESTRICTION_OPEN/CONCEPT_RESTRICTION.test.json index 3040949209..77822fc2eb 100644 --- a/backend/src/test/resources/tests/query/CONCEPT_DATE_RESTRICTION_OPEN/CONCEPT_RESTRICTION.test.json +++ b/backend/src/test/resources/tests/query/CONCEPT_DATE_RESTRICTION_OPEN/CONCEPT_RESTRICTION.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "CONCEPT_RESTRICTION Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/CONCEPT_DATE_RESTRICTION_OPEN/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/CONCEPT_RESTRICTION_QUERY/CONCEPT_RESTRICTION.test.json b/backend/src/test/resources/tests/query/CONCEPT_RESTRICTION_QUERY/CONCEPT_RESTRICTION.test.json index 5694da7ee3..ad63360ba1 100644 --- a/backend/src/test/resources/tests/query/CONCEPT_RESTRICTION_QUERY/CONCEPT_RESTRICTION.test.json +++ b/backend/src/test/resources/tests/query/CONCEPT_RESTRICTION_QUERY/CONCEPT_RESTRICTION.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "CONCEPT_RESTRICTION Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/CONCEPT_RESTRICTION_QUERY/expected-kh.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE.test.json index 060b83c022..365fc50ba5 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"DATE_DISTANCE_VERSICHERTENZEIT Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/DATE_DISTANCE/expected-versichertenzeit.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_ERSTER.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_ERSTER.test.json index 7877affb3f..f27cdad5bc 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_ERSTER.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_ERSTER.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "DATE_DISTANCE_ERSTER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/DATE_DISTANCE/expected-erster.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_LETZTER.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_LETZTER.test.json index e75dca26f3..0456915a86 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_LETZTER.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE/DATE_DISTANCE_LETZTER.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"DATE_DISTANCE_LETZTER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/DATE_DISTANCE/expected-letzter.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE.test.json index 8169dc645d..f325fe9be7 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"DATE_DISTANCE_AGE_SPAN_VERSICHERTENZEIT Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/DATE_DISTANCE_AGE_SPAN/expected-versichertenzeit.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE_ERSTER.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE_ERSTER.test.json index 1e60cf69db..510b426a83 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE_ERSTER.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE_ERSTER.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"DATE_DISTANCE_AGE_SPAN_ERSTER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/DATE_DISTANCE_AGE_SPAN/expected-erster.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE_LETZTER.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE_LETZTER.test.json index 5dcd15f7d8..feb6852c47 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE_LETZTER.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE_AGE_SPAN/DATE_DISTANCE_LETZTER.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"DATE_DISTANCE_AGE_SPAN_LETZTER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/DATE_DISTANCE_AGE_SPAN/expected-letzter.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE.test.json index a00611ff4f..671114bcf1 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"DATE_DISTANCE_NEGATION_VERSICHERTENZEIT Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/DATE_DISTANCE_NEGATION/expected-versichertenzeit.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE_ERSTER.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE_ERSTER.test.json index 8a92e780f7..855850c88c 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE_ERSTER.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE_ERSTER.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"DATE_DISTANCE_NEGATION_ERSTER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/DATE_DISTANCE_NEGATION/expected-erster.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE_LETZTER.test.json b/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE_LETZTER.test.json index ed1b69959e..51b3b1c279 100644 --- a/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE_LETZTER.test.json +++ b/backend/src/test/resources/tests/query/DATE_DISTANCE_NEGATION/DATE_DISTANCE_LETZTER.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"DATE_DISTANCE_NEGATION_LETZTER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/DATE_DISTANCE_NEGATION/expected-letzter.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY/DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY.test.json b/backend/src/test/resources/tests/query/DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY/DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY.test.json index 051cdf289b..63de4ea517 100644 --- a/backend/src/test/resources/tests/query/DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY/DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY.test.json +++ b/backend/src/test/resources/tests/query/DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY/DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/DURATION_SUM_EMPTY_DATE_CONCEPT_QUERY/expected-zeitspanne.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/NUMBER/NUMBER.test.json b/backend/src/test/resources/tests/query/NUMBER/NUMBER.test.json index 414f5be39f..e20454e971 100644 --- a/backend/src/test/resources/tests/query/NUMBER/NUMBER.test.json +++ b/backend/src/test/resources/tests/query/NUMBER/NUMBER.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "NUMBER_QUERY Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/NUMBER/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/NUMBER_MISSING/NUMBER.test.json b/backend/src/test/resources/tests/query/NUMBER_MISSING/NUMBER.test.json index c30a242014..3047d62b66 100644 --- a/backend/src/test/resources/tests/query/NUMBER_MISSING/NUMBER.test.json +++ b/backend/src/test/resources/tests/query/NUMBER_MISSING/NUMBER.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"NUMBER_MISSING_QUERY Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/NUMBER_MISSING/expected.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/NUMBER_MISSING_NO_RESTRICTION/NUMBER.test.json b/backend/src/test/resources/tests/query/NUMBER_MISSING_NO_RESTRICTION/NUMBER.test.json index a274244f9e..5d0cdf7453 100644 --- a/backend/src/test/resources/tests/query/NUMBER_MISSING_NO_RESTRICTION/NUMBER.test.json +++ b/backend/src/test/resources/tests/query/NUMBER_MISSING_NO_RESTRICTION/NUMBER.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"NUMBER_MISSING_NO_FILTER_RESTRICTION_QUERY Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/NUMBER_MISSING_NO_RESTRICTION/expected.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/NUMBER_MISSING_NO_RESTRICTION/NUMBER2.test.json b/backend/src/test/resources/tests/query/NUMBER_MISSING_NO_RESTRICTION/NUMBER2.test.json index e27c16f6c8..54657c85c1 100644 --- a/backend/src/test/resources/tests/query/NUMBER_MISSING_NO_RESTRICTION/NUMBER2.test.json +++ b/backend/src/test/resources/tests/query/NUMBER_MISSING_NO_RESTRICTION/NUMBER2.test.json @@ -1,6 +1,12 @@ { "type":"QUERY_TEST", "label":"NUMBER_MISSING_NO_RESTRICTION_QUERY Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv":"tests/query/NUMBER_MISSING_NO_RESTRICTION/expected2.csv", "query":{ "type":"CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/NUMBER_NEGATION/NUMBER.test.json b/backend/src/test/resources/tests/query/NUMBER_NEGATION/NUMBER.test.json index 88b5b14697..fbf1cf7845 100644 --- a/backend/src/test/resources/tests/query/NUMBER_NEGATION/NUMBER.test.json +++ b/backend/src/test/resources/tests/query/NUMBER_NEGATION/NUMBER.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "NUMBER_NEGATION_QUERY Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/NUMBER_NEGATION/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/NUMBER_STRING_PARSER/NUMBER.test.json b/backend/src/test/resources/tests/query/NUMBER_STRING_PARSER/NUMBER.test.json index d5bff5538f..bae2f930e0 100644 --- a/backend/src/test/resources/tests/query/NUMBER_STRING_PARSER/NUMBER.test.json +++ b/backend/src/test/resources/tests/query/NUMBER_STRING_PARSER/NUMBER.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "STRING NUMBER PARSER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/NUMBER_STRING_PARSER/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/NUMBER_STRING_PREFIXED_PARSER/NUMBER.test.json b/backend/src/test/resources/tests/query/NUMBER_STRING_PREFIXED_PARSER/NUMBER.test.json index 151dcdefc0..6b0f76bd31 100644 --- a/backend/src/test/resources/tests/query/NUMBER_STRING_PREFIXED_PARSER/NUMBER.test.json +++ b/backend/src/test/resources/tests/query/NUMBER_STRING_PREFIXED_PARSER/NUMBER.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "STRING NUMBER PARSER Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/NUMBER_STRING_PREFIXED_PARSER/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/SECONDARY_ID/SECONDARY_IDS.test.json b/backend/src/test/resources/tests/query/SECONDARY_ID/SECONDARY_IDS.test.json index 2fbdf0b287..f6aaec366e 100644 --- a/backend/src/test/resources/tests/query/SECONDARY_ID/SECONDARY_IDS.test.json +++ b/backend/src/test/resources/tests/query/SECONDARY_ID/SECONDARY_IDS.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "SECONDARY_ID Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/SECONDARY_ID/expected.csv", "query": { "type": "SECONDARY_ID_QUERY", diff --git a/backend/src/test/resources/tests/query/SECONDARY_ID_DATEMODE_LOGICAL/SECONDARY_IDS.test.json b/backend/src/test/resources/tests/query/SECONDARY_ID_DATEMODE_LOGICAL/SECONDARY_IDS.test.json index 9b3c11e0c8..65a834c256 100644 --- a/backend/src/test/resources/tests/query/SECONDARY_ID_DATEMODE_LOGICAL/SECONDARY_IDS.test.json +++ b/backend/src/test/resources/tests/query/SECONDARY_ID_DATEMODE_LOGICAL/SECONDARY_IDS.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "SECONDARY_ID Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/SECONDARY_ID_DATEMODE_LOGICAL/expected.csv", "query": { "type": "SECONDARY_ID_QUERY", diff --git a/backend/src/test/resources/tests/query/SECONDARY_ID_EXCLUDED/SECONDARY_IDS_EXCLUDED.test.json b/backend/src/test/resources/tests/query/SECONDARY_ID_EXCLUDED/SECONDARY_IDS_EXCLUDED.test.json index 43dced8cbe..4946887995 100644 --- a/backend/src/test/resources/tests/query/SECONDARY_ID_EXCLUDED/SECONDARY_IDS_EXCLUDED.test.json +++ b/backend/src/test/resources/tests/query/SECONDARY_ID_EXCLUDED/SECONDARY_IDS_EXCLUDED.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "SECONDARY_ID_EXCLUDED Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/SECONDARY_ID_EXCLUDED/expected.csv", "query": { "type": "SECONDARY_ID_QUERY", diff --git a/backend/src/test/resources/tests/query/SECONDARY_ID_EXTERNAL_LOGICAL/SECONDARY_IDS.test.json b/backend/src/test/resources/tests/query/SECONDARY_ID_EXTERNAL_LOGICAL/SECONDARY_IDS.test.json index 518c0df3be..d9949527da 100644 --- a/backend/src/test/resources/tests/query/SECONDARY_ID_EXTERNAL_LOGICAL/SECONDARY_IDS.test.json +++ b/backend/src/test/resources/tests/query/SECONDARY_ID_EXTERNAL_LOGICAL/SECONDARY_IDS.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "SECONDARY_ID Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/SECONDARY_ID_EXTERNAL_LOGICAL/expected.csv", "query": { "type": "SECONDARY_ID_QUERY", diff --git a/backend/src/test/resources/tests/query/TABLE_EXPORT/RAW_TABLE_EXPORT.test.json b/backend/src/test/resources/tests/query/TABLE_EXPORT/RAW_TABLE_EXPORT.test.json index bf49129fca..2a8be93bcb 100644 --- a/backend/src/test/resources/tests/query/TABLE_EXPORT/RAW_TABLE_EXPORT.test.json +++ b/backend/src/test/resources/tests/query/TABLE_EXPORT/RAW_TABLE_EXPORT.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "RAW_TABLE_EXPORT Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TABLE_EXPORT/raw_expected.csv", "query": { "type": "TABLE_EXPORT", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/ALL/query.test.json index 57767bcbc3..1738773b6b 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/ALL/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/ANY/query.test.json index bb52bac3f9..548b81d80b 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/ALL/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/EARLIEST/query.test.json index 5fdbd0a145..8e89c9eade 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/ALL/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/LATEST/query.test.json index 84f2ccb6a8..f7b232a19f 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ALL/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/ALL/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/ALL/query.test.json index ec3ba982fd..80ecc31ee5 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/ANY/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/ANY/query.test.json index b0f835ae0b..d6a4ef94fa 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/ANY/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/EARLIEST/query.test.json index bd8d24182a..e0fc3b2c1f 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/ANY/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/LATEST/query.test.json index 209696169a..33d2db391b 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/ANY/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/ANY/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/ALL/query.test.json index 83e136bdeb..c72bd9b1d2 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/EARLIEST/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/ANY/query.test.json index ff8aa62147..e73fa7df36 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/EARLIEST/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/EARLIEST/query.test.json index 078daf8bf2..78d23128de 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/EARLIEST/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/LATEST/query.test.json index 9c324657a4..aaecd55d87 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/EARLIEST/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/EARLIEST/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/ALL/query.test.json index 4a73d0b8a7..464f8e54e9 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/LATEST/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/ANY/query.test.json index 3df802237c..d6f7a2e4cb 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/LATEST/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/EARLIEST/query.test.json index 992fc11e69..e2ebc14864 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/LATEST/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/LATEST/query.test.json index 596963b111..ac6ad77414 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AFTER/LATEST/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AFTER/LATEST/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/AGGREGATION/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/AGGREGATION/query.test.json index 765db5128c..983aac88e0 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/AGGREGATION/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/AGGREGATION/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/AGGREGATION/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/ALL/query.test.json index e661dcdf12..ab9e0bc31c 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/ALL/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/ANY/query.test.json index f04609be34..9bfc25b719 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/ALL/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/EARLIEST/query.test.json index d7a0666d05..c331f61105 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/ALL/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/LATEST/query.test.json index d6d6f72a54..1a54572924 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ALL/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/ALL/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/ALL/query.test.json index 1db373a844..7075b26180 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/ANY/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/ANY/query.test.json index 5c155fc89b..a9b0a4eeaf 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/ANY/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/EARLIEST/query.test.json index 51bb1e5039..ee320e5ef4 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/ANY/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/LATEST/query.test.json index a5282ab55a..45fca54c8a 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/ANY/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/ANY/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/ALL/query.test.json index bcae176190..d7700f7428 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/EARLIEST/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/ANY/query.test.json index be220fb041..46d6559795 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/EARLIEST/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/EARLIEST/query.test.json index f8d566bce7..f8930a53b0 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/EARLIEST/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/LATEST/query.test.json index 0127dffda1..f768962e20 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/EARLIEST/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/EARLIEST/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/ALL/query.test.json index 28ccf30568..7b97d329b0 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/LATEST/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/ANY/query.test.json index d50ec241b0..9125b66919 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/LATEST/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/EARLIEST/query.test.json index 44c6020c8f..039d128c66 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/LATEST/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/LATEST/query.test.json index 2c6797b80f..601fcc29d3 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/BEFORE/LATEST/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/BEFORE/LATEST/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/ALL/query.test.json index 172312efff..9a94b5279a 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/ALL/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/ANY/query.test.json index 1e8110c55b..60795c4fff 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/ALL/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/EARLIEST/query.test.json index fdc86b3fdd..ca2e794df6 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/ALL/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/LATEST/query.test.json index 055502d1c1..a66fcebaa0 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ALL/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/ALL/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/ALL/query.test.json index 49152e42c9..8d6722f987 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/ANY/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/ANY/query.test.json index 44b4698706..e3bc0441ef 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/ANY/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/EARLIEST/query.test.json index c512696a19..baba6e7ae1 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/ANY/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/LATEST/query.test.json index 123e99ccfb..45a70b69ea 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/ANY/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/ANY/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/ALL/query.test.json index 2d8a3c88b8..77723113e6 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/EARLIEST/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/ANY/query.test.json index 5aac7f92e7..b4e31af5ea 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/EARLIEST/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/EARLIEST/query.test.json index 96df1837a8..775d1eab7e 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/EARLIEST/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/LATEST/query.test.json index d7831a694a..4db5f11466 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/EARLIEST/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/EARLIEST/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/ALL/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/ALL/query.test.json index 0f8daa14e2..56d771c3bd 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/ALL/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/ALL/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/LATEST/ALL/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/ANY/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/ANY/query.test.json index 1c8e5abac2..70327eab59 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/ANY/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/ANY/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/LATEST/ANY/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/EARLIEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/EARLIEST/query.test.json index f026efef99..bb287afc23 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/EARLIEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/EARLIEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/LATEST/EARLIEST/expected.csv", "query": { "type": "CONCEPT_QUERY", diff --git a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/LATEST/query.test.json b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/LATEST/query.test.json index 3cae5f7c40..1b5692b2e8 100644 --- a/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/LATEST/query.test.json +++ b/backend/src/test/resources/tests/query/TEMPORAL/WHILE/LATEST/LATEST/query.test.json @@ -1,6 +1,12 @@ { "type": "QUERY_TEST", "label": "Temporal Test", + "sqlSpec": { + "isEnabled": true, + "supportedDialects": [ + "POSTGRESQL" + ] + }, "expectedCsv": "tests/query/TEMPORAL/WHILE/LATEST/LATEST/expected.csv", "query": { "type": "CONCEPT_QUERY",