This is an automated email from the ASF dual-hosted git repository. jhyde pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 9f231cc5b91b100b6a6fbc3cd6324873529dbf49 Author: Julian Hyde <[email protected]> AuthorDate: Fri Jun 21 16:53:42 2024 -0700 Add Steelwheels data set --- bom/build.gradle.kts | 1 + build.gradle.kts | 1 + .../org/apache/calcite/test/CoreQuidemTest.java | 10 +++++ gradle.properties | 1 + testkit/build.gradle.kts | 1 + .../org/apache/calcite/test/CalciteAssert.java | 47 +++++++++++++++++----- .../java/org/apache/calcite/test/QuidemTest.java | 8 ++++ 7 files changed, 60 insertions(+), 9 deletions(-) diff --git a/bom/build.gradle.kts b/bom/build.gradle.kts index 1cb1f32244..3128d72151 100644 --- a/bom/build.gradle.kts +++ b/bom/build.gradle.kts @@ -93,6 +93,7 @@ dependencies { apiv("net.hydromatic:quidem") apiv("net.hydromatic:scott-data-hsqldb") apiv("net.hydromatic:sql-logic-test") + apiv("net.hydromatic:steelwheels-data-hsqldb") apiv("net.hydromatic:tpcds", "hydromatic.tpcds") apiv("net.java.dev.jna:jna") apiv("net.java.dev.jna:jna-platform") diff --git a/build.gradle.kts b/build.gradle.kts index be829ddbb6..6f6d6c2981 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -214,6 +214,7 @@ val adaptersForSqlline = listOf( val dataSetsForSqlline = listOf( "net.hydromatic:foodmart-data-hsqldb", "net.hydromatic:scott-data-hsqldb", + "net.hydromatic:steelwheels-data-hsqldb", "net.hydromatic:chinook-data-hsqldb" ) diff --git a/core/src/test/java/org/apache/calcite/test/CoreQuidemTest.java b/core/src/test/java/org/apache/calcite/test/CoreQuidemTest.java index 9f498b7df2..b492d8b63f 100644 --- a/core/src/test/java/org/apache/calcite/test/CoreQuidemTest.java +++ b/core/src/test/java/org/apache/calcite/test/CoreQuidemTest.java @@ -17,6 +17,8 @@ package org.apache.calcite.test; import org.apache.calcite.config.CalciteConnectionProperty; +import org.apache.calcite.config.Lex; +import org.apache.calcite.sql.fun.SqlLibrary; import org.apache.calcite.sql.validate.SqlConformanceEnum; import net.hydromatic.quidem.Quidem; @@ -85,6 +87,14 @@ class CoreQuidemTest extends QuidemTest { SqlConformanceEnum.MYSQL_5) .with(CalciteAssert.Config.SCOTT) .connect(); + case "steelwheels": + return CalciteAssert.that() + .with(CalciteConnectionProperty.PARSER_FACTORY, + ExtensionDdlExecutor.class.getName() + "#PARSER_FACTORY") + .with(CalciteConnectionProperty.FUN, SqlLibrary.CALCITE.fun) + .with(CalciteAssert.SchemaSpec.STEELWHEELS) + .with(Lex.BIG_QUERY) + .connect(); default: return super.connect(name, reference); } diff --git a/gradle.properties b/gradle.properties index 49eb254a70..e044c79208 100644 --- a/gradle.properties +++ b/gradle.properties @@ -165,6 +165,7 @@ slf4j.version=1.7.25 spark.version=2.2.2 sqlline.version=1.12.0 sql-logic-test.version=0.3 +steelwheels-data-hsqldb.version=0.2 teradata.tpcds.version=1.2 testcontainers.version=1.19.3 tpch.version=1.0 diff --git a/testkit/build.gradle.kts b/testkit/build.gradle.kts index dba83160d3..2154cbf82c 100644 --- a/testkit/build.gradle.kts +++ b/testkit/build.gradle.kts @@ -28,6 +28,7 @@ dependencies { implementation("net.hydromatic:foodmart-data-hsqldb") implementation("net.hydromatic:foodmart-queries") implementation("net.hydromatic:scott-data-hsqldb") + implementation("net.hydromatic:steelwheels-data-hsqldb") implementation("org.apache.commons:commons-dbcp2") implementation("org.apache.commons:commons-lang3") implementation("org.apache.commons:commons-pool2") diff --git a/testkit/src/main/java/org/apache/calcite/test/CalciteAssert.java b/testkit/src/main/java/org/apache/calcite/test/CalciteAssert.java index 61891df2e8..4dc98a1adc 100644 --- a/testkit/src/main/java/org/apache/calcite/test/CalciteAssert.java +++ b/testkit/src/main/java/org/apache/calcite/test/CalciteAssert.java @@ -97,6 +97,7 @@ import com.google.common.collect.Lists; import net.hydromatic.foodmart.data.hsqldb.FoodmartHsqldb; import net.hydromatic.scott.data.hsqldb.ScottHsqldb; +import net.hydromatic.steelwheels.data.hsqldb.SteelwheelsHsqldb; import org.apiguardian.api.API; import org.checkerframework.checker.nullness.qual.Nullable; @@ -804,6 +805,7 @@ public class CalciteAssert { static SchemaPlus addSchema_(SchemaPlus rootSchema, SchemaSpec schema) { final SchemaPlus foodmart; final SchemaPlus jdbcScott; + final SchemaPlus jdbcSteelwheels; final SchemaPlus scott; final ConnectionSpec cs; final DataSource dataSource; @@ -819,6 +821,13 @@ public class CalciteAssert { return rootSchema.add(schema.schemaName, JdbcSchema.create(rootSchema, schema.schemaName, dataSource, cs.catalog, cs.schema)); + case JDBC_STEELWHEELS: + cs = DatabaseInstance.HSQLDB.steelwheels; + dataSource = + JdbcSchema.dataSource(cs.url, cs.driver, cs.username, cs.password); + return rootSchema.add(schema.schemaName, + JdbcSchema.create(rootSchema, schema.schemaName, dataSource, + cs.catalog, cs.schema)); case JDBC_FOODMART: cs = DB.foodmart; dataSource = @@ -852,6 +861,10 @@ public class CalciteAssert { OrdersStreamTableFactory.getRowList())); return scott; + case STEELWHEELS: + jdbcSteelwheels = addSchemaIfNotExists(rootSchema, SchemaSpec.JDBC_STEELWHEELS); + return rootSchema.add(schema.schemaName, new CloneSchema(jdbcSteelwheels)); + case TPCH: return rootSchema.add(schema.schemaName, new ReflectiveSchema(new TpchSchema())); @@ -1965,31 +1978,45 @@ public class CalciteAssert { * tests against a different database. (hsqldb is the default.) */ public enum DatabaseInstance { HSQLDB( - new ConnectionSpec(FoodmartHsqldb.URI, "FOODMART", "FOODMART", - "org.hsqldb.jdbcDriver", "foodmart"), - new ConnectionSpec(ScottHsqldb.URI, ScottHsqldb.USER, - ScottHsqldb.PASSWORD, "org.hsqldb.jdbcDriver", "SCOTT")), + new ConnectionSpec(FoodmartHsqldb.URI, + FoodmartHsqldb.USER, + FoodmartHsqldb.PASSWORD, + "org.hsqldb.jdbcDriver", + "foodmart"), + new ConnectionSpec(ScottHsqldb.URI, + ScottHsqldb.USER, + ScottHsqldb.PASSWORD, + "org.hsqldb.jdbcDriver", + "SCOTT"), + new ConnectionSpec(SteelwheelsHsqldb.URI, + SteelwheelsHsqldb.USER, + SteelwheelsHsqldb.PASSWORD, + "org.hsqldb.jdbcDriver", + "steelwheels")), H2( new ConnectionSpec("jdbc:h2:" + CalciteSystemProperty.TEST_DATASET_PATH.value() + "/h2/target/foodmart;user=foodmart;password=foodmart", - "foodmart", "foodmart", "org.h2.Driver", "foodmart"), null), + "foodmart", "foodmart", "org.h2.Driver", "foodmart"), null, null), MYSQL( new ConnectionSpec("jdbc:mysql://localhost/foodmart", "foodmart", - "foodmart", "com.mysql.jdbc.Driver", "foodmart"), null), + "foodmart", "com.mysql.jdbc.Driver", "foodmart"), null, null), ORACLE( new ConnectionSpec("jdbc:oracle:thin:@localhost:1521:XE", "foodmart", - "foodmart", "oracle.jdbc.OracleDriver", "FOODMART"), null), + "foodmart", "oracle.jdbc.OracleDriver", "FOODMART"), null, null), POSTGRESQL( new ConnectionSpec( "jdbc:postgresql://localhost/foodmart?user=foodmart&password=foodmart&searchpath=foodmart", - "foodmart", "foodmart", "org.postgresql.Driver", "foodmart"), null); + "foodmart", "foodmart", "org.postgresql.Driver", "foodmart"), null, null); public final ConnectionSpec foodmart; public final ConnectionSpec scott; + public final ConnectionSpec steelwheels; - DatabaseInstance(ConnectionSpec foodmart, ConnectionSpec scott) { + DatabaseInstance(ConnectionSpec foodmart, ConnectionSpec scott, + ConnectionSpec steelwheels) { this.foodmart = foodmart; this.scott = scott; + this.steelwheels = steelwheels; } } @@ -2006,6 +2033,8 @@ public class CalciteAssert { JDBC_SCOTT("JDBC_SCOTT"), SCOTT("scott"), SCOTT_WITH_TEMPORAL("scott_temporal"), + JDBC_STEELWHEELS("JDBC_STEELWHEELS"), + STEELWHEELS("steelwheels"), TPCH("tpch"), BLANK("BLANK"), LINGUAL("SALES"), diff --git a/testkit/src/main/java/org/apache/calcite/test/QuidemTest.java b/testkit/src/main/java/org/apache/calcite/test/QuidemTest.java index 717b4a7a78..17d824acca 100644 --- a/testkit/src/main/java/org/apache/calcite/test/QuidemTest.java +++ b/testkit/src/main/java/org/apache/calcite/test/QuidemTest.java @@ -288,6 +288,14 @@ public abstract class QuidemTest { return CalciteAssert.that() .with(CalciteAssert.Config.JDBC_SCOTT) .connect(); + case "steelwheels": + return CalciteAssert.that() + .with(CalciteAssert.SchemaSpec.STEELWHEELS) + .connect(); + case "jdbc_steelwheels": + return CalciteAssert.that() + .with(CalciteAssert.SchemaSpec.JDBC_STEELWHEELS) + .connect(); case "post": return CalciteAssert.that() .with(CalciteAssert.Config.REGULAR)
