diff --git a/legend-engine-config/legend-engine-repl/legend-engine-repl-relational/pom.xml b/legend-engine-config/legend-engine-repl/legend-engine-repl-relational/pom.xml index 61b135b5fb7..93e34632c3d 100644 --- a/legend-engine-config/legend-engine-repl/legend-engine-repl-relational/pom.xml +++ b/legend-engine-config/legend-engine-repl/legend-engine-repl-relational/pom.xml @@ -157,19 +157,6 @@ - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-execution - runtime - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-grammar - runtime - - - org.finos.legend.engine diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/pom.xml b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/pom.xml index e8b241fa370..e1b01337dc0 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/pom.xml +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/pom.xml @@ -102,10 +102,13 @@ org.eclipse.collections eclipse-collections-api - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-protocol + org.finos.legend.pure + legend-pure-m2-functions-base-pure + + + org.finos.legend.pure + legend-pure-m2-functions-relation-pure @@ -123,14 +126,17 @@ - org.finos.legend.pure - legend-pure-m2-functions-base-pure + org.duckdb + duckdb_jdbc + runtime + - org.finos.legend.pure - legend-pure-m2-functions-relation-pure + com.fasterxml.jackson.core + jackson-databind + org.finos.legend.engine legend-engine-pure-functions-relationalStore-PCT-pure @@ -144,18 +150,6 @@ runtime - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-grammar - runtime - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-execution - runtime - - - junit @@ -216,11 +210,6 @@ legend-engine-pure-runtime-java-extension-compiled-functions-pureExtensions test - - org.finos.legend.engine - legend-engine-pure-runtime-java-extension-compiled-functions-pureExtensions - test - org.finos.legend.engine legend-engine-xt-relationalStore-pure @@ -231,10 +220,7 @@ legend-engine-xt-relationalStore-executionPlan test - - com.fasterxml.jackson.core - jackson-databind - + diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_BaseFunctions_PCT.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_BaseFunctions_PCT.java index ebcb7821e5c..46a0d02aea8 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_BaseFunctions_PCT.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_BaseFunctions_PCT.java @@ -21,7 +21,6 @@ import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.DatabaseType; import org.finos.legend.engine.pure.runtime.testConnection.CoreExternalTestConnectionCodeRepositoryProvider; import org.finos.legend.engine.test.shared.framework.TestServerResource; -import org.finos.legend.pure.code.core.CoreRelationalduckdbCodeRepositoryProvider; import org.finos.legend.pure.code.core.FunctionsCodeRepositoryProvider; import org.finos.legend.pure.m3.pct.reports.config.PCTReportConfiguration; import org.finos.legend.pure.m3.pct.reports.config.exclusion.ExclusionSpecification; diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_BasicFunctions_PCT.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_BasicFunctions_PCT.java index 225d654ae9a..c60767874ca 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_BasicFunctions_PCT.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_BasicFunctions_PCT.java @@ -21,7 +21,6 @@ import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.DatabaseType; import org.finos.legend.engine.pure.runtime.testConnection.CoreExternalTestConnectionCodeRepositoryProvider; import org.finos.legend.engine.test.shared.framework.TestServerResource; -import org.finos.legend.pure.code.core.CoreRelationalduckdbCodeRepositoryProvider; import org.finos.legend.pure.m3.PlatformCodeRepositoryProvider; import org.finos.legend.pure.m3.pct.reports.config.PCTReportConfiguration; import org.finos.legend.pure.m3.pct.reports.config.exclusion.ExclusionSpecification; diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_GrammarFunctions_PCT.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_GrammarFunctions_PCT.java index c79c9a5d200..3349ab0f65e 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_GrammarFunctions_PCT.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_GrammarFunctions_PCT.java @@ -21,7 +21,6 @@ import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.DatabaseType; import org.finos.legend.engine.pure.runtime.testConnection.CoreExternalTestConnectionCodeRepositoryProvider; import org.finos.legend.engine.test.shared.framework.TestServerResource; -import org.finos.legend.pure.code.core.CoreRelationalduckdbCodeRepositoryProvider; import org.finos.legend.pure.m3.PlatformCodeRepositoryProvider; import org.finos.legend.pure.m3.pct.reports.config.PCTReportConfiguration; import org.finos.legend.pure.m3.pct.reports.config.exclusion.ExclusionSpecification; diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_RelationFunctions_PCT.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_RelationFunctions_PCT.java index 064f3881e6c..3b8bdf15a1a 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_RelationFunctions_PCT.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-PCT/src/test/java/org/finos/legend/engine/plan/execution/stores/relational/test/duckdb/pct/Test_Relational_DuckDB_RelationFunctions_PCT.java @@ -21,7 +21,6 @@ import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.DatabaseType; import org.finos.legend.engine.pure.runtime.testConnection.CoreExternalTestConnectionCodeRepositoryProvider; import org.finos.legend.engine.test.shared.framework.TestServerResource; -import org.finos.legend.pure.code.core.CoreRelationalduckdbCodeRepositoryProvider; import org.finos.legend.pure.code.core.RelationCodeRepositoryProvider; import org.finos.legend.pure.m3.pct.reports.config.PCTReportConfiguration; import org.finos.legend.pure.m3.pct.reports.config.exclusion.ExclusionSpecification; diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/pom.xml b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/pom.xml deleted file mode 100644 index 18bc6c45c15..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb - 4.47.4-SNAPSHOT - - 4.0.0 - - legend-engine-xt-relationalStore-duckdb-execution - jar - Legend Engine - XT - Relational Store - DuckDB - Execution - - - - org.duckdb - duckdb_jdbc - runtime - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-protocol - - - org.finos.legend.engine - legend-engine-xt-relationalStore-protocol - - - org.finos.legend.engine - legend-engine-xt-relationalStore-executionPlan - - - org.finos.legend.engine - legend-engine-xt-relationalStore-executionPlan-connection - - - - - org.eclipse.collections - eclipse-collections-api - - - org.eclipse.collections - eclipse-collections - - - - diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/DuckDBConnectionExtension.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/DuckDBConnectionExtension.java deleted file mode 100644 index 779235cb076..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/DuckDBConnectionExtension.java +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package org.finos.legend.engine.plan.execution.stores.relational; - -import org.eclipse.collections.api.block.function.Function2; -import org.eclipse.collections.api.factory.Lists; -import org.eclipse.collections.api.list.MutableList; -import org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey; -import org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.AuthenticationStrategy; -import org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.strategy.OAuthProfile; -import org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.strategy.keys.AuthenticationStrategyKey; -import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager; -import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.commands.RelationalDatabaseCommands; -import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.duckdb.DuckDBCommands; -import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.duckdb.DuckDBManager; -import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification; -import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecificationKey; -import org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.StrategicConnectionExtension; -import org.finos.legend.engine.plan.execution.stores.relational.ds.specifications.DuckDBDataSourceSpecification; -import org.finos.legend.engine.plan.execution.stores.relational.ds.specifications.keys.DuckDBDataSourceSpecificationKey; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.RelationalDatabaseConnection; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategyVisitor; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecificationVisitor; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DuckDBDatasourceSpecification; - -import java.util.List; -import java.util.function.Function; - -public class DuckDBConnectionExtension implements RelationalConnectionExtension, StrategicConnectionExtension -{ - - @Override - public String type() - { - return "MIX_ConnectionExtension_&_Strategic_Connection_Extension"; - } - - @Override - public MutableList group() - { - return org.eclipse.collections.impl.factory.Lists.mutable.with("Store", "Relational", "DuckDB"); - } - - @Override - public MutableList getAdditionalDatabaseManager() - { - return Lists.mutable.of(new DuckDBManager()); - } - - @Override - public Boolean visit(StreamResultToTempTableVisitor visitor, RelationalDatabaseCommands databaseCommands) - { - if (databaseCommands instanceof DuckDBCommands) - { - throw new UnsupportedOperationException("not yet implemented"); - } - return null; - } - - @Override - public AuthenticationStrategyVisitor getExtraAuthenticationKeyGenerators() - { - return authenticationStrategy -> null; - } - - @Override - public AuthenticationStrategyVisitor getExtraAuthenticationStrategyTransformGenerators(List oauthProfiles) - { - return authenticationStrategy -> null; - } - - @Override - public Function> getExtraDataSourceSpecificationKeyGenerators(int testDbPort) - { - return connection -> datasourceSpecification -> - { - if (datasourceSpecification instanceof DuckDBDatasourceSpecification) - { - DuckDBDatasourceSpecification databricksSpecification = (DuckDBDatasourceSpecification) datasourceSpecification; - return new DuckDBDataSourceSpecificationKey( - databricksSpecification.path - ); - } - return null; - }; - } - - @Override - public Function2> getExtraDataSourceSpecificationTransformerGenerators(Function authenticationStrategyProvider) - { - return (connection, connectionKey) -> datasourceSpecification -> - { - if (datasourceSpecification instanceof DuckDBDatasourceSpecification) - { - return new DuckDBDataSourceSpecification( - (DuckDBDataSourceSpecificationKey) connectionKey.getDataSourceSpecificationKey(), - new DuckDBManager(), - authenticationStrategyProvider.apply(connection) - ); - } - return null; - }; - } -} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/resources/META-INF/services/org.finos.legend.engine.plan.execution.stores.relational.RelationalConnectionExtension b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/resources/META-INF/services/org.finos.legend.engine.plan.execution.stores.relational.RelationalConnectionExtension deleted file mode 100644 index b2023e1a38a..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/resources/META-INF/services/org.finos.legend.engine.plan.execution.stores.relational.RelationalConnectionExtension +++ /dev/null @@ -1 +0,0 @@ -org.finos.legend.engine.plan.execution.stores.relational.DuckDBConnectionExtension \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/resources/META-INF/services/org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionExtension b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/resources/META-INF/services/org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionExtension deleted file mode 100644 index b2023e1a38a..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/resources/META-INF/services/org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionExtension +++ /dev/null @@ -1 +0,0 @@ -org.finos.legend.engine.plan.execution.stores.relational.DuckDBConnectionExtension \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/resources/META-INF/services/org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.StrategicConnectionExtension b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/resources/META-INF/services/org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.StrategicConnectionExtension deleted file mode 100644 index b2023e1a38a..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/resources/META-INF/services/org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.StrategicConnectionExtension +++ /dev/null @@ -1 +0,0 @@ -org.finos.legend.engine.plan.execution.stores.relational.DuckDBConnectionExtension \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/pom.xml b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/pom.xml deleted file mode 100644 index 95c9c3195d7..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/pom.xml +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb - 4.47.4-SNAPSHOT - - 4.0.0 - - legend-engine-xt-relationalStore-duckdb-grammar - jar - Legend Engine - XT - Relational Store - DuckDB - Grammar - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-antlr-core-grammar - initialize - - unpack - - - - - org.finos.legend.engine - legend-engine-language-pure-grammar - jar - false - ${project.build.directory} - antlr/*.g4 - - - - - - - - org.antlr - antlr4-maven-plugin - ${antlr.version} - - - - antlr4 - - - true - true - true - target/antlr - ${project.build.directory}/generated-sources - - - - - - - - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-pure - - - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-protocol - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-pure - - - org.finos.legend.engine - legend-engine-language-pure-grammar - - - org.finos.legend.engine - legend-engine-language-pure-compiler - - - org.finos.legend.engine - legend-engine-xt-relationalStore-protocol - - - org.finos.legend.engine - legend-engine-xt-relationalStore-grammar - - - - - - org.antlr - antlr4-runtime - compile - - - - - - org.eclipse.collections - eclipse-collections-api - - - org.eclipse.collections - eclipse-collections - - - - - - junit - junit - test - - - org.finos.legend.engine - legend-engine-language-pure-grammar - test-jar - test - - - org.finos.legend.engine - legend-engine-language-pure-compiler - test-jar - test - - - - - - com.googlecode.json-simple - json-simple - 1.1.1 - test - - - org.finos.legend.pure - legend-pure-runtime-java-extension-compiled-functions-json - test - - - - - diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/DuckDBLexerGrammar.g4 b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/DuckDBLexerGrammar.g4 deleted file mode 100644 index e72f0dd755e..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/DuckDBLexerGrammar.g4 +++ /dev/null @@ -1,7 +0,0 @@ -lexer grammar DuckDBLexerGrammar; - -import CoreLexerGrammar; - -DUCKDB: 'DuckDB'; -PATH: 'path'; - diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/DuckDBParserGrammar.g4 b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/DuckDBParserGrammar.g4 deleted file mode 100644 index 1e7740f79a4..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/DuckDBParserGrammar.g4 +++ /dev/null @@ -1,22 +0,0 @@ -parser grammar DuckDBParserGrammar; - -import CoreParserGrammar; - -options -{ - tokenVocab = DuckDBLexerGrammar; -} - -identifier: VALID_STRING -; - -duckDBDatasourceSpecification: DUCKDB - BRACE_OPEN - ( - path - )* - BRACE_CLOSE -; - -path: PATH COLON STRING SEMI_COLON -; \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/java/org/finos/legend/engine/language/pure/compiler/toPureGraph/DuckDBCompilerExtension.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/java/org/finos/legend/engine/language/pure/compiler/toPureGraph/DuckDBCompilerExtension.java deleted file mode 100644 index 04bcacab954..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/java/org/finos/legend/engine/language/pure/compiler/toPureGraph/DuckDBCompilerExtension.java +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package org.finos.legend.engine.language.pure.compiler.toPureGraph; - -import org.eclipse.collections.api.block.function.Function2; -import org.eclipse.collections.api.factory.Lists; -import org.eclipse.collections.api.list.MutableList; -import org.finos.legend.engine.language.pure.compiler.toPureGraph.extension.CompilerExtension; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DuckDBDatasourceSpecification; -import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_authentication_AuthenticationStrategy; -import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_DatasourceSpecification; -import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_DuckDBDatasourceSpecification; -import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_DuckDBDatasourceSpecification_Impl; - -import java.util.List; - -public class DuckDBCompilerExtension implements IRelationalCompilerExtension -{ - @Override - public MutableList group() - { - return org.eclipse.collections.impl.factory.Lists.mutable.with("Store", "Relational", "DuckDB"); - } - - @Override - public List> getExtraAuthenticationStrategyProcessors() - { - return Lists.mutable.with((authenticationStrategy, context) -> null); - } - - @Override - public List> getExtraDataSourceSpecificationProcessors() - { - return Lists.mutable.with((datasourceSpecification, context) -> - { - if (datasourceSpecification instanceof DuckDBDatasourceSpecification) - { - DuckDBDatasourceSpecification staticDatasourceSpecification = (DuckDBDatasourceSpecification) datasourceSpecification; - Root_meta_pure_alloy_connections_alloy_specification_DuckDBDatasourceSpecification _static = new Root_meta_pure_alloy_connections_alloy_specification_DuckDBDatasourceSpecification_Impl("", null, context.pureModel.getClass("meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification")); - _static._path(staticDatasourceSpecification.path); - return _static; - } - return null; - }); - } - - @Override - public CompilerExtension build() - { - return new DuckDBCompilerExtension(); - } -} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/DuckDBGrammarParserExtension.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/DuckDBGrammarParserExtension.java deleted file mode 100644 index ae7fd3b0917..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/DuckDBGrammarParserExtension.java +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package org.finos.legend.engine.language.pure.grammar.from; - -import org.eclipse.collections.api.list.MutableList; -import org.finos.legend.engine.language.pure.grammar.from.antlr4.connection.DuckDBParserGrammar; -import org.finos.legend.engine.language.pure.grammar.from.authentication.AuthenticationStrategySourceCode; -import org.finos.legend.engine.language.pure.grammar.from.datasource.DataSourceSpecificationSourceCode; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DuckDBDatasourceSpecification; -import org.finos.legend.engine.language.pure.grammar.from.antlr4.connection.DuckDBLexerGrammar; - -import java.util.Collections; -import java.util.List; -import java.util.function.Function; - -public class DuckDBGrammarParserExtension implements IRelationalGrammarParserExtension -{ - @Override - public MutableList group() - { - return org.eclipse.collections.impl.factory.Lists.mutable.with("Store", "Relational", "DuckDB"); - } - - @Override - public List> getExtraAuthenticationStrategyParsers() - { - return Collections.singletonList(code -> null); - } - - @Override - public List> getExtraDataSourceSpecificationParsers() - { - return Collections.singletonList(code -> - { - if ("DuckDB".equals(code.getType())) - { - return IRelationalGrammarParserExtension.parse(code, DuckDBLexerGrammar::new, DuckDBParserGrammar::new, - p -> visitDuckDBDatasourceSpecification(code, p.duckDBDatasourceSpecification())); - } - return null; - }); - } - - public DuckDBDatasourceSpecification visitDuckDBDatasourceSpecification(DataSourceSpecificationSourceCode code, DuckDBParserGrammar.DuckDBDatasourceSpecificationContext dbSpecCtx) - { - DuckDBDatasourceSpecification dsSpec = new DuckDBDatasourceSpecification(); - dsSpec.sourceInformation = code.getSourceInformation(); - - DuckDBParserGrammar.PathContext pathCtx = PureGrammarParserUtility.validateAndExtractOptionalField(dbSpecCtx.path(), "path", dsSpec.sourceInformation); - dsSpec.path = pathCtx != null ? PureGrammarParserUtility.fromGrammarString(pathCtx.STRING().getText(), true) : null; - - return dsSpec; - } -} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/to/DuckDBGrammarComposerExtension.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/to/DuckDBGrammarComposerExtension.java deleted file mode 100644 index e801a1a744d..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/to/DuckDBGrammarComposerExtension.java +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package org.finos.legend.engine.language.pure.grammar.to; - -import org.eclipse.collections.api.block.function.Function2; -import org.eclipse.collections.api.list.MutableList; -import org.eclipse.collections.impl.factory.Lists; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DuckDBDatasourceSpecification; - -import java.util.List; - -import static org.finos.legend.engine.language.pure.grammar.to.PureGrammarComposerUtility.convertString; -import static org.finos.legend.engine.language.pure.grammar.to.PureGrammarComposerUtility.getTabString; - -public class DuckDBGrammarComposerExtension implements IRelationalGrammarComposerExtension -{ - @Override - public MutableList group() - { - return org.eclipse.collections.impl.factory.Lists.mutable.with("Store", "Relational", "DuckDB"); - } - - @Override - public List> getExtraAuthenticationStrategyComposers() - { - return Lists.mutable.with((_strategy, context) -> null); - } - - @Override - public List> getExtraDataSourceSpecificationComposers() - { - return Lists.mutable.with((_spec, context) -> - { - if (_spec instanceof DuckDBDatasourceSpecification) - { - DuckDBDatasourceSpecification spec = (DuckDBDatasourceSpecification) _spec; - int baseIndentation = 1; - return "DuckDB\n" + - context.getIndentationString() + getTabString(baseIndentation) + "{\n" + - context.getIndentationString() + getTabString(baseIndentation + 1) + "path: " + convertString(spec.path, true) + ";\n" + - context.getIndentationString() + getTabString(baseIndentation) + "}"; - } - return null; - }); - } -} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/resources/META-INF/services/org.finos.legend.engine.language.pure.compiler.toPureGraph.extension.CompilerExtension b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/resources/META-INF/services/org.finos.legend.engine.language.pure.compiler.toPureGraph.extension.CompilerExtension deleted file mode 100644 index 48b4697e39d..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/resources/META-INF/services/org.finos.legend.engine.language.pure.compiler.toPureGraph.extension.CompilerExtension +++ /dev/null @@ -1 +0,0 @@ -org.finos.legend.engine.language.pure.compiler.toPureGraph.DuckDBCompilerExtension \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/resources/META-INF/services/org.finos.legend.engine.language.pure.grammar.from.IRelationalGrammarParserExtension b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/resources/META-INF/services/org.finos.legend.engine.language.pure.grammar.from.IRelationalGrammarParserExtension deleted file mode 100644 index 63af63d9fff..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/resources/META-INF/services/org.finos.legend.engine.language.pure.grammar.from.IRelationalGrammarParserExtension +++ /dev/null @@ -1 +0,0 @@ -org.finos.legend.engine.language.pure.grammar.from.DuckDBGrammarParserExtension \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/resources/META-INF/services/org.finos.legend.engine.language.pure.grammar.to.extension.PureGrammarComposerExtension b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/resources/META-INF/services/org.finos.legend.engine.language.pure.grammar.to.extension.PureGrammarComposerExtension deleted file mode 100644 index b5058d860f2..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/main/resources/META-INF/services/org.finos.legend.engine.language.pure.grammar.to.extension.PureGrammarComposerExtension +++ /dev/null @@ -1 +0,0 @@ -org.finos.legend.engine.language.pure.grammar.to.DuckDBGrammarComposerExtension \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/test/java/org/finos/legend/engine/language/pure/grammar/test/TestDuckDBConnectionGrammarRoundtrip.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/test/java/org/finos/legend/engine/language/pure/grammar/test/TestDuckDBConnectionGrammarRoundtrip.java deleted file mode 100644 index 4228c6d66b1..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-grammar/src/test/java/org/finos/legend/engine/language/pure/grammar/test/TestDuckDBConnectionGrammarRoundtrip.java +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2021 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package org.finos.legend.engine.language.pure.grammar.test; - -import org.junit.Test; - -public class TestDuckDBConnectionGrammarRoundtrip extends TestGrammarRoundtrip.TestGrammarRoundtripTestSuite -{ - @Test - public void testDeltaLakeDatabaseConnection() - { - test("###Connection\n" + - "RelationalDatabaseConnection simple::DuckDBConnection\n" + - "{\n" + - " store: apps::pure::studio::relational::tests::dbInc;\n" + - " type: DuckDB;\n" + - " specification: DuckDB\n" + - " {\n" + - " path: '/test';\n" + - " };\n" + - " auth: Test;\n" + - "}\n"); - } -} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/pom.xml b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/pom.xml deleted file mode 100644 index bd0f3f14d41..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/pom.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb - 4.47.4-SNAPSHOT - - 4.0.0 - - legend-engine-xt-relationalStore-duckdb-protocol - jar - Legend Engine - XT - Relational Store - DuckDB - Protocol - - - - - org.finos.legend.engine - legend-engine-protocol-pure - - - org.finos.legend.engine - legend-engine-xt-relationalStore-protocol - - - - - - org.eclipse.collections - eclipse-collections-api - - - org.eclipse.collections - eclipse-collections - - - - diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/DuckDBProtocolExtension.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/DuckDBProtocolExtension.java deleted file mode 100644 index 0888b0830a6..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/DuckDBProtocolExtension.java +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package org.finos.legend.engine.protocol.pure.v1; - -import org.eclipse.collections.api.block.function.Function0; -import org.eclipse.collections.api.list.MutableList; -import org.eclipse.collections.impl.factory.Lists; -import org.finos.legend.engine.protocol.pure.v1.extension.ProtocolSubTypeInfo; -import org.finos.legend.engine.protocol.pure.v1.extension.PureProtocolExtension; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DuckDBDatasourceSpecification; - -import java.util.List; - -public class DuckDBProtocolExtension implements PureProtocolExtension -{ - @Override - public MutableList group() - { - return org.eclipse.collections.impl.factory.Lists.mutable.with("Store", "Relational", "DuckDB"); - } - - @Override - public List>>> getExtraProtocolSubTypeInfoCollectors() - { - return Lists.fixedSize.with(() -> Lists.fixedSize.with( - //DatasourceSpecification - ProtocolSubTypeInfo.newBuilder(DatasourceSpecification.class) - .withSubtype(DuckDBDatasourceSpecification.class, "duckDB") - .build() - )); - } -} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/src/main/resources/META-INF/services/org.finos.legend.engine.protocol.pure.v1.extension.PureProtocolExtension b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/src/main/resources/META-INF/services/org.finos.legend.engine.protocol.pure.v1.extension.PureProtocolExtension deleted file mode 100644 index 1cba4486581..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/src/main/resources/META-INF/services/org.finos.legend.engine.protocol.pure.v1.extension.PureProtocolExtension +++ /dev/null @@ -1 +0,0 @@ -org.finos.legend.engine.protocol.pure.v1.DuckDBProtocolExtension \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/pom.xml b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/pom.xml deleted file mode 100644 index 035d87fd7e3..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/pom.xml +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb - 4.47.4-SNAPSHOT - - 4.0.0 - - legend-engine-xt-relationalStore-duckdb-pure - jar - Legend Engine - XT - Relational Store - DuckDB - Pure - - - - - org.finos.legend.pure - legend-pure-maven-generation-par - - ${project.basedir}/src/main/resources - ${legend.pure.version} - - platform - core - core_relational - core_relational_duckdb - - - ${project.basedir}/src/main/resources/core_relational_duckdb.definition.json - - - - - generate-sources - - build-pure-jar - - - - - - - org.finos.legend.engine - legend-engine-pure-code-compiled-core - ${project.version} - - - org.finos.legend.engine - legend-engine-xt-relationalStore-pure - ${project.version} - - - org.finos.legend.pure - legend-pure-m2-store-relational-grammar - ${legend.pure.version} - - - org.finos.legend.pure - legend-pure-m2-dsl-diagram-grammar - ${legend.pure.version} - - - - - org.finos.legend.pure - legend-pure-maven-generation-java - - - compile - - build-pure-compiled-jar - - - true - true - modular - true - - core_relational_duckdb - - - - - - - - org.finos.legend.engine - legend-engine-pure-code-compiled-core - ${project.version} - - - org.finos.legend.engine - legend-engine-xt-relationalStore-pure - ${project.version} - - - org.finos.legend.pure - legend-pure-m2-dsl-graph-grammar - ${legend.pure.version} - - - org.finos.legend.pure - legend-pure-m2-dsl-mapping-grammar - ${legend.pure.version} - - - org.finos.legend.pure - legend-pure-m2-dsl-diagram-grammar - ${legend.pure.version} - - - org.finos.legend.pure - legend-pure-m2-dsl-path-grammar - ${legend.pure.version} - - - org.finos.legend.pure - legend-pure-m2-store-relational-grammar - ${legend.pure.version} - - - - - - - - - org.finos.legend.pure - legend-pure-m4 - - - org.finos.legend.pure - legend-pure-m3-core - - - org.finos.legend.pure - legend-pure-runtime-java-engine-compiled - - - - org.finos.legend.engine - legend-engine-pure-code-compiled-core - - - org.finos.legend.engine - legend-engine-pure-code-compiled-functions - - - org.finos.legend.engine - legend-engine-pure-platform-functions-java - - - org.finos.legend.engine - legend-engine-pure-platform-java - - - org.finos.legend.pure - legend-pure-m2-store-relational-pure - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-pure - - - - - org.eclipse.collections - eclipse-collections - - - org.eclipse.collections - eclipse-collections-api - - - - - - junit - junit - - - org.finos.legend.pure - legend-pure-m2-functions-json-pure - test - - - com.fasterxml.jackson.core - jackson-annotations - test - - - com.fasterxml.jackson.core - jackson-databind - test - - - com.fasterxml.jackson.core - jackson-core - test - - - - - - - org.finos.legend.engine - legend-engine-pure-ide-light-pure - test - - - org.finos.legend.pure - legend-pure-runtime-java-engine-interpreted - ${legend.pure.version} - test - - - org.finos.legend.engine - legend-engine-xt-relationalStore-grammar - test - - - - diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/java/org/finos/legend/pure/code/core/CoreRelationalduckdbCodeRepositoryProvider.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/java/org/finos/legend/pure/code/core/CoreRelationalduckdbCodeRepositoryProvider.java deleted file mode 100644 index 425fbbdf9bf..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/java/org/finos/legend/pure/code/core/CoreRelationalduckdbCodeRepositoryProvider.java +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package org.finos.legend.pure.code.core; - -import org.finos.legend.pure.m3.pct.reports.model.Adapter; -import org.finos.legend.pure.m3.serialization.filesystem.repository.CodeRepository; -import org.finos.legend.pure.m3.serialization.filesystem.repository.CodeRepositoryProvider; -import org.finos.legend.pure.m3.serialization.filesystem.repository.GenericCodeRepository; - -public class CoreRelationalduckdbCodeRepositoryProvider implements CodeRepositoryProvider -{ - @Override - public CodeRepository repository() - { - return GenericCodeRepository.build("core_relational_duckdb.definition.json"); - } -} - diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/META-INF/services/org.finos.legend.pure.m3.serialization.filesystem.repository.CodeRepositoryProvider b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/META-INF/services/org.finos.legend.pure.m3.serialization.filesystem.repository.CodeRepositoryProvider deleted file mode 100644 index a2796594cd5..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/META-INF/services/org.finos.legend.pure.m3.serialization.filesystem.repository.CodeRepositoryProvider +++ /dev/null @@ -1 +0,0 @@ -org.finos.legend.pure.code.core.CoreRelationalduckdbCodeRepositoryProvider \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb.definition.json b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb.definition.json deleted file mode 100644 index d0785828946..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb.definition.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "core_relational_duckdb", - "pattern": "(meta::relational::functions::sqlQueryToString::duckDB|meta::relational::tests::sqlQueryToString::duckDB|meta::pure::alloy::connections|meta::external::store::relational::runtime|meta::protocols::pure|meta::relational::tests::connEquality)(::.*)?", - "dependencies": [ - "platform", - "platform_functions", - "platform_store_relational", - "core", - "core_functions", - "core_relational" - ] -} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/connection/connectionEqualityTest.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/connection/connectionEqualityTest.pure deleted file mode 100644 index f30a7b1e236..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/connection/connectionEqualityTest.pure +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import meta::relational::metamodel::execute::tests::*; -import meta::external::store::relational::runtime::*; -import meta::relational::translation::*; -import meta::pure::extension::*; -import meta::relational::extension::*; -import meta::relational::runtime::*; -import meta::relational::tests::csv::*; -import meta::relational::metamodel::execute::*; -import meta::relational::metamodel::*; -import meta::pure::mapping::*; - - -function <> meta::relational::tests::connEquality::testConnectionEqualityAllSameDuckDB() : Boolean[1] -{ - let c1 = ^RelationalDatabaseConnection( - - type = DatabaseType.DuckDB, - datasourceSpecification = ^meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification(path='/tst'), - authenticationStrategy = ^meta::pure::alloy::connections::alloy::authentication::TestDatabaseAuthenticationStrategy() - ); - - let c2 = ^RelationalDatabaseConnection( - - type = DatabaseType.DuckDB, - datasourceSpecification = ^meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification(path='/tst'), - authenticationStrategy = ^meta::pure::alloy::connections::alloy::authentication::TestDatabaseAuthenticationStrategy() - ); - - assert(runRelationalRouterExtensionConnectionEquality($c1, $c2)); - -} - diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/connection/metamodel.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/connection/metamodel.pure deleted file mode 100644 index 2640fbe40bd..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/connection/metamodel.pure +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -Class meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification extends meta::pure::alloy::connections::alloy::specification::DatasourceSpecification -{ - <> path:String[0..1]; -} \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/protocols/pure/vX_X_X/extension/extension_duckdb.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/protocols/pure/vX_X_X/extension/extension_duckdb.pure deleted file mode 100644 index af4d80fb9c8..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/protocols/pure/vX_X_X/extension/extension_duckdb.pure +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -function <> -meta::protocols::pure::vX_X_X::transformation::fromPureGraph::connection::duckDBSerializerExtension(): meta::protocols::pure::vX_X_X::extension::RelationalModuleSerializerExtension[1] -{ - ^meta::protocols::pure::vX_X_X::extension::RelationalModuleSerializerExtension( - module = 'duckDB', - transfers_connection_transformDatasourceSpecification = [ - d:meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification[1] | - ^meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::alloy::specification::DuckDBDatasourceSpecification( - _type = 'duckDB', - path = $d.path - ) - ], - reverse_transfers_typeLookups = [ - pair('duckDB', 'DuckDBDatasourceSpecification') - ], - reverse_transfers_connection_transformDatasourceSpecification = [ - d:meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::alloy::specification::DuckDBDatasourceSpecification[1] | - ^meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification( - // _type = 'duckDB', - path = $d.path - ) - ] - ) -} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/protocols/pure/vX_X_X/extension/metamodel_connection.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/protocols/pure/vX_X_X/extension/metamodel_connection.pure deleted file mode 100644 index 06860eff7bc..00000000000 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/protocols/pure/vX_X_X/extension/metamodel_connection.pure +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2024 Goldman Sachs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -Class meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::alloy::specification::DuckDBDatasourceSpecification extends meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::alloy::specification::DatasourceSpecification -{ - path:String[0..1]; -} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/pom.xml b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/pom.xml index f95785674d4..2f0f9d3eafc 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/pom.xml +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/pom.xml @@ -1,4 +1,19 @@ + org.finos.legend.engine @@ -8,50 +23,10 @@ 4.0.0 legend-engine-xt-relationalStore-duckdb - Legend Engine - XT - Relational Store - DB Extension - DuckDB - pom + Legend Engine - XT - Relational Store - DB Extension - DuckDB - legend-engine-xt-relationalStore-duckdb-execution legend-engine-xt-relationalStore-duckdb-PCT - legend-engine-xt-relationalStore-duckdb-grammar - legend-engine-xt-relationalStore-duckdb-protocol - legend-engine-xt-relationalStore-duckdb-pure - - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-execution - ${project.version} - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-execution-tests - ${project.version} - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-grammar - ${project.version} - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-protocol - ${project.version} - - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-pure - ${project.version} - - - - \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/pom.xml b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/pom.xml index b2a8742af50..fb43d2c1e26 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/pom.xml +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/pom.xml @@ -204,6 +204,11 @@ com.h2database h2 + + org.duckdb + duckdb_jdbc + runtime + com.databricks databricks-jdbc diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/DatabaseManager.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/DatabaseManager.java index 4541400ecbc..79367b8ce24 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/DatabaseManager.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/DatabaseManager.java @@ -21,6 +21,7 @@ import org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionExtension; import org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.AuthenticationStrategy; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.commands.RelationalDatabaseCommands; +import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.duckdb.DuckDBManager; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.h2.H2Manager; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; @@ -47,7 +48,7 @@ private static void initialize() LOGGER.info("DatabaseManager starting initialization"); long start = System.currentTimeMillis(); register(new H2Manager()); - + register(new DuckDBManager()); MutableList extensions = Iterate.addAllTo(ServiceLoader.load(ConnectionExtension.class), Lists.mutable.empty()); extensions.flatCollect(ConnectionExtension::getAdditionalDatabaseManager).forEach(DatabaseManager::register); dbManagerReady.getAndSet(true); diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBCommands.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBCommands.java similarity index 100% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBCommands.java rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBCommands.java diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBDriver.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBDriver.java similarity index 100% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBDriver.java rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBDriver.java diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBManager.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBManager.java similarity index 97% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBManager.java rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBManager.java index e89017109ed..32b0ff71620 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBManager.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/driver/vendors/duckdb/DuckDBManager.java @@ -21,7 +21,7 @@ import org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.AuthenticationStrategy; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.commands.RelationalDatabaseCommands; -import org.finos.legend.engine.plan.execution.stores.relational.ds.specifications.DuckDBDataSourceSpecification; +import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.DuckDBDataSourceSpecification; public class DuckDBManager extends DatabaseManager { diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/ds/specifications/DuckDBDataSourceSpecification.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/ds/specifications/DuckDBDataSourceSpecification.java similarity index 94% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/ds/specifications/DuckDBDataSourceSpecification.java rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/ds/specifications/DuckDBDataSourceSpecification.java index 2be621a679e..26264cd0b92 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/ds/specifications/DuckDBDataSourceSpecification.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/ds/specifications/DuckDBDataSourceSpecification.java @@ -12,12 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -package org.finos.legend.engine.plan.execution.stores.relational.ds.specifications; +package org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications; import org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.AuthenticationStrategy; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification; -import org.finos.legend.engine.plan.execution.stores.relational.ds.specifications.keys.DuckDBDataSourceSpecificationKey; +import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.keys.DuckDBDataSourceSpecificationKey; import java.util.Properties; diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/ds/specifications/keys/DuckDBDataSourceSpecificationKey.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/ds/specifications/keys/DuckDBDataSourceSpecificationKey.java similarity index 98% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/ds/specifications/keys/DuckDBDataSourceSpecificationKey.java rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/ds/specifications/keys/DuckDBDataSourceSpecificationKey.java index db10b6fdd3e..44943937357 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-execution/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/ds/specifications/keys/DuckDBDataSourceSpecificationKey.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan-connection/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/ds/specifications/keys/DuckDBDataSourceSpecificationKey.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package org.finos.legend.engine.plan.execution.stores.relational.ds.specifications.keys; +package org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.keys; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecificationKey; diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/pom.xml b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/pom.xml index bbca248c93e..35098377417 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/pom.xml +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/pom.xml @@ -183,6 +183,12 @@ + + org.duckdb + duckdb_jdbc + runtime + + io.opentracing diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/StreamResultToTempTableVisitor.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/StreamResultToTempTableVisitor.java index 2b60b233dd5..05528763714 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/StreamResultToTempTableVisitor.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/StreamResultToTempTableVisitor.java @@ -29,6 +29,7 @@ import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.commands.IngestionMethod; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.commands.RelationalDatabaseCommands; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.commands.RelationalDatabaseCommandsVisitor; +import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.duckdb.DuckDBCommands; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.h2.H2Commands; import org.finos.legend.engine.plan.execution.stores.relational.result.RealizedRelationalResult; import org.finos.legend.engine.plan.execution.stores.relational.result.RelationalResult; @@ -81,6 +82,10 @@ public Boolean visit(RelationalDatabaseCommands databaseCommands) { return visitH2((H2Commands) databaseCommands); } + else if (databaseCommands instanceof DuckDBCommands) + { + throw new UnsupportedOperationException("not yet implemented"); + } for (RelationalConnectionExtension extension: ServiceLoader.load(RelationalConnectionExtension.class)) { Boolean result = extension.visit(this, databaseCommands); diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/DataSourceSpecificationKeyGenerator.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/DataSourceSpecificationKeyGenerator.java index bb90807647c..5ee8def3210 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/DataSourceSpecificationKeyGenerator.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/DataSourceSpecificationKeyGenerator.java @@ -15,15 +15,12 @@ package org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecificationKey; +import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.keys.DuckDBDataSourceSpecificationKey; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.keys.EmbeddedH2DataSourceSpecificationKey; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.keys.LocalH2DataSourceSpecificationKey; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.keys.StaticDataSourceSpecificationKey; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.RelationalDatabaseConnection; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecificationVisitor; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.EmbeddedH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.LocalH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification; +import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.*; import java.io.File; @@ -68,6 +65,13 @@ else if (datasourceSpecification instanceof StaticDatasourceSpecification) staticDatasourceSpecification.port, staticDatasourceSpecification.databaseName); } + else if (datasourceSpecification instanceof DuckDBDatasourceSpecification) + { + DuckDBDatasourceSpecification databricksSpecification = (DuckDBDatasourceSpecification) datasourceSpecification; + return new DuckDBDataSourceSpecificationKey( + databricksSpecification.path + ); + } return null; } } \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/DataSourceSpecificationTransformer.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/DataSourceSpecificationTransformer.java index 381f847a7a4..2142d3b00d1 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/DataSourceSpecificationTransformer.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-execution/legend-engine-xt-relationalStore-executionPlan/src/main/java/org/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/DataSourceSpecificationTransformer.java @@ -17,18 +17,17 @@ import org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.AuthenticationStrategy; import org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.strategy.TestDatabaseAuthenticationStrategy; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager; +import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.duckdb.DuckDBManager; import org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.h2.H2Manager; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecificationKey; +import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.DuckDBDataSourceSpecification; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.LocalH2DataSourceSpecification; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.StaticDataSourceSpecification; +import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.keys.DuckDBDataSourceSpecificationKey; import org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.keys.StaticDataSourceSpecificationKey; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.RelationalDatabaseConnection; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecificationVisitor; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.EmbeddedH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.LocalH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification; +import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.*; public class DataSourceSpecificationTransformer implements DatasourceSpecificationVisitor { @@ -79,6 +78,15 @@ else if (datasourceSpecification instanceof StaticDatasourceSpecification) authenticationStrategy ); } + else if (datasourceSpecification instanceof DuckDBDatasourceSpecification) + { + return new DuckDBDataSourceSpecification( + (DuckDBDataSourceSpecificationKey) key, + new DuckDBManager(), + this.authenticationStrategy + + ); + } return null; } diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/datasource/DataSourceSpecificationLexerGrammar.g4 b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/datasource/DataSourceSpecificationLexerGrammar.g4 index e9858f01e07..6bd82e83522 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/datasource/DataSourceSpecificationLexerGrammar.g4 +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/datasource/DataSourceSpecificationLexerGrammar.g4 @@ -17,3 +17,6 @@ BRACKET_CLOSE: ']'; REGION: 'region'; +DUCKDB: 'DuckDB'; +PATH: 'path'; + diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/datasource/DataSourceSpecificationParserGrammar.g4 b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/datasource/DataSourceSpecificationParserGrammar.g4 index 2b449062c5c..17f93ef0681 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/datasource/DataSourceSpecificationParserGrammar.g4 +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/antlr4/org/finos/legend/engine/language/pure/grammar/from/antlr4/connection/datasource/DataSourceSpecificationParserGrammar.g4 @@ -12,6 +12,17 @@ identifier: VALID_STRING // ----------------------------- RELATIONAL DATABASE CONNECTION DATASOURCE SPEC ----------------------------- +duckDBDatasourceSpecification: DUCKDB + BRACE_OPEN + ( + path + )* + BRACE_CLOSE +; + +path: PATH COLON STRING SEMI_COLON +; + localH2DatasourceSpecification: LOCAL_H2_DSP BRACE_OPEN ( diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/compiler/toPureGraph/DatasourceSpecificationBuilder.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/compiler/toPureGraph/DatasourceSpecificationBuilder.java index 03b61badc28..c421aecef78 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/compiler/toPureGraph/DatasourceSpecificationBuilder.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/compiler/toPureGraph/DatasourceSpecificationBuilder.java @@ -15,11 +15,7 @@ package org.finos.legend.engine.language.pure.compiler.toPureGraph; import org.eclipse.collections.impl.list.mutable.FastList; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecificationVisitor; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.EmbeddedH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.LocalH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification; +import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.*; import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_DatasourceSpecification; import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_EmbeddedH2DatasourceSpecification; import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_EmbeddedH2DatasourceSpecification_Impl; @@ -27,6 +23,8 @@ import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_LocalH2DatasourceSpecification_Impl; import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_StaticDatasourceSpecification; import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_StaticDatasourceSpecification_Impl; +import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_DuckDBDatasourceSpecification; +import org.finos.legend.pure.generated.Root_meta_pure_alloy_connections_alloy_specification_DuckDBDatasourceSpecification_Impl; public class DatasourceSpecificationBuilder implements DatasourceSpecificationVisitor @@ -67,6 +65,13 @@ else if (datasourceSpecification instanceof StaticDatasourceSpecification) _static._databaseName(staticDatasourceSpecification.databaseName); return _static; } + else if (datasourceSpecification instanceof DuckDBDatasourceSpecification) + { + DuckDBDatasourceSpecification staticDatasourceSpecification = (DuckDBDatasourceSpecification) datasourceSpecification; + Root_meta_pure_alloy_connections_alloy_specification_DuckDBDatasourceSpecification _static = new Root_meta_pure_alloy_connections_alloy_specification_DuckDBDatasourceSpecification_Impl("", null, context.pureModel.getClass("meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification")); + _static._path(staticDatasourceSpecification.path); + return _static; + } return null; } } \ No newline at end of file diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/RelationalGrammarParserExtension.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/RelationalGrammarParserExtension.java index 57702704309..69413afee33 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/RelationalGrammarParserExtension.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/RelationalGrammarParserExtension.java @@ -202,6 +202,8 @@ public List walker.visitStaticDatasourceSpecification(code, p.staticDatasourceSpecification())); case "EmbeddedH2": return parseDataSourceSpecification(code, p -> walker.visitEmbeddedH2DatasourceSpecification(code, p.embeddedH2DatasourceSpecification())); + case "DuckDB": + return parseDataSourceSpecification(code, p -> walker.visitDuckDBDatasourceSpecification(code, p.duckDBDatasourceSpecification())); default: return null; } diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/datasource/DataSourceSpecificationParseTreeWalker.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/datasource/DataSourceSpecificationParseTreeWalker.java index ee4e121a278..3bcc4b25175 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/datasource/DataSourceSpecificationParseTreeWalker.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/from/datasource/DataSourceSpecificationParseTreeWalker.java @@ -17,6 +17,7 @@ import org.eclipse.collections.impl.utility.ListIterate; import org.finos.legend.engine.language.pure.grammar.from.PureGrammarParserUtility; import org.finos.legend.engine.language.pure.grammar.from.antlr4.connection.datasource.DataSourceSpecificationParserGrammar; +import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DuckDBDatasourceSpecification; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.EmbeddedH2DatasourceSpecification; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.LocalH2DatasourceSpecification; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification; @@ -73,4 +74,15 @@ public StaticDatasourceSpecification visitStaticDatasourceSpecification(DataSour dsSpec.databaseName = PureGrammarParserUtility.fromGrammarString(nameCtx.STRING().getText(), true); return dsSpec; } + + public DuckDBDatasourceSpecification visitDuckDBDatasourceSpecification(DataSourceSpecificationSourceCode code, DataSourceSpecificationParserGrammar.DuckDBDatasourceSpecificationContext dbSpecCtx) + { + DuckDBDatasourceSpecification dsSpec = new DuckDBDatasourceSpecification(); + dsSpec.sourceInformation = code.getSourceInformation(); + + DataSourceSpecificationParserGrammar.PathContext pathCtx = PureGrammarParserUtility.validateAndExtractOptionalField(dbSpecCtx.path(), "path", dsSpec.sourceInformation); + dsSpec.path = pathCtx != null ? PureGrammarParserUtility.fromGrammarString(pathCtx.STRING().getText(), true) : null; + + return dsSpec; + } } diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/to/HelperRelationalGrammarComposer.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/to/HelperRelationalGrammarComposer.java index b8a9745a3c7..edd6f96f9a1 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/to/HelperRelationalGrammarComposer.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/main/java/org/finos/legend/engine/language/pure/grammar/to/HelperRelationalGrammarComposer.java @@ -30,10 +30,7 @@ import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.postprocessor.MapperPostProcessor; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.postprocessor.SchemaNameMapper; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.postprocessor.TableNameMapper; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.EmbeddedH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.LocalH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification; +import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.*; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.mapping.EmbeddedRelationalPropertyMapping; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.mapping.FilterMapping; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.mapping.InlineEmbeddedPropertyMapping; @@ -669,6 +666,15 @@ else if (_spec instanceof StaticDatasourceSpecification) context.getIndentationString() + getTabString(baseIndentation + 1) + "port: " + spec.port + ";\n" + context.getIndentationString() + getTabString(baseIndentation) + "}"; } + else if (_spec instanceof DuckDBDatasourceSpecification) + { + DuckDBDatasourceSpecification spec = (DuckDBDatasourceSpecification) _spec; + int baseIndentation = 1; + return "DuckDB\n" + + context.getIndentationString() + getTabString(baseIndentation) + "{\n" + + context.getIndentationString() + getTabString(baseIndentation + 1) + "path: " + convertString(spec.path, true) + ";\n" + + context.getIndentationString() + getTabString(baseIndentation) + "}"; + } return null; } diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/test/java/org/finos/legend/engine/language/pure/grammar/test/TestRelationalConnectionGrammarRoundtrip.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/test/java/org/finos/legend/engine/language/pure/grammar/test/TestRelationalConnectionGrammarRoundtrip.java index 869d979c9ed..5b10725939e 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/test/java/org/finos/legend/engine/language/pure/grammar/test/TestRelationalConnectionGrammarRoundtrip.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-grammar/src/test/java/org/finos/legend/engine/language/pure/grammar/test/TestRelationalConnectionGrammarRoundtrip.java @@ -249,4 +249,19 @@ public void testRelationalDatabaseConnectionWithQuoteIdentifiers() " auth: DefaultH2;\n" + "}\n"); } + + public void testDuckDBDatabaseConnection() + { + test("###Connection\n" + + "RelationalDatabaseConnection simple::DuckDBConnection\n" + + "{\n" + + " store: apps::pure::studio::relational::tests::dbInc;\n" + + " type: DuckDB;\n" + + " specification: DuckDB\n" + + " {\n" + + " path: '/test';\n" + + " };\n" + + " auth: Test;\n" + + "}\n"); + } } diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/RelationalProtocolExtension.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/RelationalProtocolExtension.java index a2df782add0..5fb013a819b 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/RelationalProtocolExtension.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/RelationalProtocolExtension.java @@ -60,10 +60,7 @@ import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.postprocessor.MapperPostProcessor; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.postprocessor.PostProcessor; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.postprocessor.RelationalMapperPostProcessor; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.EmbeddedH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.LocalH2DatasourceSpecification; -import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification; +import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.*; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.data.RelationalCSVData; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.mapping.EmbeddedRelationalPropertyMapping; import org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.mapping.InlineEmbeddedPropertyMapping; @@ -168,6 +165,7 @@ public List>>> getExtraProtocolSubTypeInfo .withSubtype(LocalH2DatasourceSpecification.class, "h2Local") .withSubtype(StaticDatasourceSpecification.class, "static") .withSubtype(EmbeddedH2DatasourceSpecification.class, "h2Embedded") + .withSubtype(DuckDBDatasourceSpecification.class, "duckDB") .build(), // AuthenticationStrategy diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/model/packageableElement/store/relational/connection/specification/DuckDBDatasourceSpecification.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/model/packageableElement/store/relational/connection/specification/DuckDBDatasourceSpecification.java similarity index 100% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/model/packageableElement/store/relational/connection/specification/DuckDBDatasourceSpecification.java rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-protocol/src/main/java/org/finos/legend/engine/protocol/pure/v1/model/packageableElement/store/relational/connection/specification/DuckDBDatasourceSpecification.java diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/invocations/execution_relational_testConnection.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/invocations/execution_relational_testConnection.pure index 009607d477c..cd7f1e69d82 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/invocations/execution_relational_testConnection.pure +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/invocations/execution_relational_testConnection.pure @@ -68,7 +68,8 @@ function meta::protocols::pure::vX_X_X::transformation::toPureGraph::connection: pair('static', 'StaticDatasourceSpecification'), pair('h2Embedded', 'EmbeddedH2DatasourceSpecification'), - pair('h2Local', 'LocalH2DatasourceSpecification(') + pair('h2Local', 'LocalH2DatasourceSpecification('), + pair('duckDB', 'DuckDBDatasourceSpecification') ]) ) ); @@ -166,7 +167,12 @@ function meta::protocols::pure::vX_X_X::transformation::toPureGraph::connection: // _type = 'h2Local', testDataSetupCsv = $l.testDataSetupCsv, testDataSetupSqls = $l.testDataSetupSqls - ) + ), + d:meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::alloy::specification::DuckDBDatasourceSpecification[1] | + ^meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification( + // _type = 'duckDB', + path = $d.path + ) ])->toOneMany()); } diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/models/metamodel_connection.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/models/metamodel_connection.pure index 2cf66190f14..0a48f0ee020 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/models/metamodel_connection.pure +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/models/metamodel_connection.pure @@ -84,6 +84,11 @@ Class meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::a databaseName: String[1]; } +Class meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::alloy::specification::DuckDBDatasourceSpecification extends meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::alloy::specification::DatasourceSpecification +{ + path:String[0..1]; +} + Class meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::TestDatabaseConnection extends meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::DatabaseConnection { testDataSetupCsv : String[0..1]; diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/transfers/connection_relational.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/transfers/connection_relational.pure index 62c87728701..c82b483c60d 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/transfers/connection_relational.pure +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/protocols/pure/vX_X_X/transfers/connection_relational.pure @@ -187,7 +187,12 @@ function meta::protocols::pure::vX_X_X::transformation::fromPureGraph::connectio _type = 'h2Local', testDataSetupCsv = $l.testDataSetupCsv, testDataSetupSqls = $l.testDataSetupSqls - ) + ), + d:meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification[1] | + ^meta::protocols::pure::vX_X_X::metamodel::store::relational::connection::alloy::specification::DuckDBDatasourceSpecification( + _type = 'duckDB', + path = $d.path + ) ])->toOneMany()) } diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/runtime/connection/datasourceSpecification.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/runtime/connection/datasourceSpecification.pure index 0eec4ed5d67..11ce443590b 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/runtime/connection/datasourceSpecification.pure +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/runtime/connection/datasourceSpecification.pure @@ -36,3 +36,8 @@ Class meta::pure::alloy::connections::alloy::specification::LocalH2DatasourceSpe <> testDataSetupCsv:String[0..1]; <> testDataSetupSqls:String[*]; } + +Class meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification extends meta::pure::alloy::connections::alloy::specification::DatasourceSpecification +{ + <> path:String[0..1]; +} diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/sqlQueryToString/duckdbExtension.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/sqlQueryToString/dbSpecific/duckDB/duckdbExtension.pure similarity index 100% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/sqlQueryToString/duckdbExtension.pure rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/sqlQueryToString/dbSpecific/duckDB/duckdbExtension.pure diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/sqlQueryToString/duckdbTestSuiteInvoker.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/sqlQueryToString/dbSpecific/duckDB/duckdbTestSuiteInvoker.pure similarity index 100% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/main/resources/core_relational_duckdb/relational/sqlQueryToString/duckdbTestSuiteInvoker.pure rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/sqlQueryToString/dbSpecific/duckDB/duckdbTestSuiteInvoker.pure diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/tests/testRelationalExtension.pure b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/tests/testRelationalExtension.pure index 6eb303906aa..2b8be3a8055 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/tests/testRelationalExtension.pure +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/main/resources/core_relational/relational/tests/testRelationalExtension.pure @@ -129,6 +129,26 @@ function <> meta::relational::metamodel::execute::tests::testConnecti } +function <> meta::relational::tests::connEquality::testConnectionEqualityAllSameDuckDB() : Boolean[1] +{ + let c1 = ^RelationalDatabaseConnection( + + type = DatabaseType.DuckDB, + datasourceSpecification = ^meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification(path='/tst'), + authenticationStrategy = ^meta::pure::alloy::connections::alloy::authentication::TestDatabaseAuthenticationStrategy() + ); + + let c2 = ^RelationalDatabaseConnection( + + type = DatabaseType.DuckDB, + datasourceSpecification = ^meta::pure::alloy::connections::alloy::specification::DuckDBDatasourceSpecification(path='/tst'), + authenticationStrategy = ^meta::pure::alloy::connections::alloy::authentication::TestDatabaseAuthenticationStrategy() + ); + + assert(runRelationalRouterExtensionConnectionEquality($c1, $c2)); + +} + function <> meta::relational::metamodel::execute::tests::testExecuteInDbToTDS() : Boolean[1] { let result = meta::relational::metamodel::execute::executeInDbToTDS('select 1 as "Count"', {|createTestDatabaseConnection()}); diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/test/java/org/finos/legend/pure/code/core/Test_Pure_Relational_ConnectionEquality.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/test/java/org/finos/legend/pure/code/core/relational/Test_Pure_Relational_ConnectionEquality.java similarity index 96% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/test/java/org/finos/legend/pure/code/core/Test_Pure_Relational_ConnectionEquality.java rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/test/java/org/finos/legend/pure/code/core/relational/Test_Pure_Relational_ConnectionEquality.java index c072278365f..82660fcbe0b 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/test/java/org/finos/legend/pure/code/core/Test_Pure_Relational_ConnectionEquality.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/test/java/org/finos/legend/pure/code/core/relational/Test_Pure_Relational_ConnectionEquality.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package org.finos.legend.pure.code.core; +package org.finos.legend.pure.code.core.relational; import junit.framework.TestSuite; import org.finos.legend.pure.m3.execution.test.PureTestBuilder; diff --git a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/test/java/org/finos/legend/pure/code/core/Test_Pure_Relational_DbSpecific_duckdb.java b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/test/java/org/finos/legend/pure/code/core/relational/dbSpecific/Test_Pure_Relational_DbSpecific_duckdb.java similarity index 96% rename from legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/test/java/org/finos/legend/pure/code/core/Test_Pure_Relational_DbSpecific_duckdb.java rename to legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/test/java/org/finos/legend/pure/code/core/relational/dbSpecific/Test_Pure_Relational_DbSpecific_duckdb.java index e74820fd66c..5abddf6953c 100644 --- a/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-dbExtension/legend-engine-xt-relationalStore-duckdb/legend-engine-xt-relationalStore-duckdb-pure/src/test/java/org/finos/legend/pure/code/core/Test_Pure_Relational_DbSpecific_duckdb.java +++ b/legend-engine-xts-relationalStore/legend-engine-xt-relationalStore-generation/legend-engine-xt-relationalStore-pure/src/test/java/org/finos/legend/pure/code/core/relational/dbSpecific/Test_Pure_Relational_DbSpecific_duckdb.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package org.finos.legend.pure.code.core; +package org.finos.legend.pure.code.core.relational.dbSpecific; import junit.framework.TestSuite; import org.finos.legend.pure.m3.execution.test.PureTestBuilder; diff --git a/pom.xml b/pom.xml index d888f7cbd81..e35c8f77888 100644 --- a/pom.xml +++ b/pom.xml @@ -1190,27 +1190,6 @@ ${project.version} - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-protocol - ${project.version} - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-grammar - ${project.version} - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-execution - ${project.version} - - - org.finos.legend.engine - legend-engine-xt-relationalStore-duckdb-execution-tests - ${project.version} - - org.finos.legend.engine legend-engine-xt-relationalStore-spanner-execution