diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 01833a33ee55e..4cd92365e0220 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -27,6 +27,7 @@ 1. Infra: Support connecting to HiveServer2 through database connection pools other than HikariCP - [#33762](https://github.com/apache/shardingsphere/pull/33762) 1. Infra: Partial support for connecting to embedded ClickHouse `chDB` - [#33786](https://github.com/apache/shardingsphere/pull/33786) 1. Proxy Native: Support connecting to HiveServer2 with ZooKeeper Service Discovery enabled in GraalVM Native Image - [#33768](https://github.com/apache/shardingsphere/pull/33768) +1. Proxy Native: Support local transactions of ClickHouse under GraalVM Native Image - [#33801](https://github.com/apache/shardingsphere/pull/33801) 1. Doc: Adds documentation for ClickHouse support - [#33779](https://github.com/apache/shardingsphere/pull/33779) ### Bug Fixes diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/clickhouse/_index.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/clickhouse/_index.cn.md index cc401c672aecc..ecf0eaeca0b53 100644 --- a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/clickhouse/_index.cn.md +++ b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/clickhouse/_index.cn.md @@ -76,11 +76,11 @@ CREATE DATABASE demo_ds_2; ```sql -- noinspection SqlNoDataSourceInspectionForFile create table IF NOT EXISTS t_order ( - order_id Int64 NOT NULL DEFAULT rand(), + order_id Int64 NOT NULL, order_type Int32, user_id Int32 NOT NULL, address_id Int64 NOT NULL, - status String + status VARCHAR(50) ) engine = MergeTree primary key (order_id) order by (order_id); @@ -158,7 +158,7 @@ public class ExampleUtils { ### SQL 限制 -ShardingSphere JDBC DataSource 尚不支持执行 ClickHouse 的 `CREATE TABLE` 语句和 `TRUNCATE TABLE` 语句。 +ShardingSphere JDBC DataSource 尚不支持执行 ClickHouse 的 `create table`,`truncate table` 和 `drop table` 语句。 用户应考虑为 ShardingSphere 提交包含单元测试的 PR。 ### 分布式序列限制 @@ -207,9 +207,177 @@ public class ExampleTest { ### 事务限制 -ClickHouse 不支持 ShardingSphere 集成级别的本地事务,XA 事务和 Seata AT 模式事务, +ClickHouse 不支持 ShardingSphere 集成级别的 XA 事务, +因为 https://github.com/ClickHouse/clickhouse-java 未实现 `javax.sql.XADataSource` 的相关 Java 接口。 + +ClickHouse 不支持 ShardingSphere 集成级别的 Seata AT 模式事务, +因为 https://github.com/apache/incubator-seata 未实现 ClickHouse 的 SQL 方言解析。 + +ClickHouse 支持 ShardingSphere 集成级别的本地事务,但需要对 ClickHouse 进行额外配置, 更多讨论位于 https://github.com/ClickHouse/clickhouse-docs/issues/2300 。 +引入讨论,编写 Docker Compose 文件来启动 ClickHouse 和 ClickHouse Keeper。 + +```yaml +services: + clickhouse-keeper-01: + image: clickhouse/clickhouse-keeper:24.10.2.80 + volumes: + - ./keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml + clickhouse-server: + image: clickhouse/clickhouse-server:24.10.2.80 + depends_on: + - clickhouse-keeper-01 + ports: + - "8123:8123" + volumes: + - ./transactions.xml:/etc/clickhouse-server/config.d/transactions.xml +``` + +`./keeper_config.xml` 的内容如下, + +```xml + + 0.0.0.0 + + 9181 + 1 + /var/lib/clickhouse/coordination/snapshots + + + 1 + clickhouse-keeper-01 + 9234 + + + + +``` + +`./transactions.xml` 的内容如下, + +```xml + + 1 + + + clickhouse-keeper-01 + 9181 + + + +``` + +在 DBeaver Community 内,使用 `jdbc:ch://localhost:8123/default` 的 `jdbcUrl`,`default` 的`username` 连接至 ClickHouse, +`password` 留空。 +执行如下 SQL, + +```sql +-- noinspection SqlNoDataSourceInspectionForFile +CREATE DATABASE demo_ds_0; +CREATE DATABASE demo_ds_1; +CREATE DATABASE demo_ds_2; +``` + +分别使用 `jdbc:ch://localhost:8123/demo_ds_0` , +`jdbc:ch://localhost:8123/demo_ds_1` 和 `jdbc:ch://localhost:8123/demo_ds_2` 的 `jdbcUrl` 连接至 ClickHouse 来执行如下 SQL, + +```sql +-- noinspection SqlNoDataSourceInspectionForFile +create table IF NOT EXISTS t_order ( + order_id Int64 NOT NULL, + order_type Int32, + user_id Int32 NOT NULL, + address_id Int64 NOT NULL, + status VARCHAR(50) +) engine = MergeTree + primary key (order_id) + order by (order_id); + +TRUNCATE TABLE t_order; +``` + +在业务项目引入`前提条件`涉及的依赖后,在业务项目的 classpath 上编写 ShardingSphere 数据源的配置文件`demo.yaml`, + +```yaml +dataSources: + ds_0: + dataSourceClassName: com.zaxxer.hikari.HikariDataSource + driverClassName: com.clickhouse.jdbc.ClickHouseDriver + jdbcUrl: jdbc:ch://localhost:8123/demo_ds_0?transactionSupport=true + ds_1: + dataSourceClassName: com.zaxxer.hikari.HikariDataSource + driverClassName: com.clickhouse.jdbc.ClickHouseDriver + jdbcUrl: jdbc:ch://localhost:8123/demo_ds_1?transactionSupport=true + ds_2: + dataSourceClassName: com.zaxxer.hikari.HikariDataSource + driverClassName: com.clickhouse.jdbc.ClickHouseDriver + jdbcUrl: jdbc:ch://localhost:8123/demo_ds_2?transactionSupport=true +rules: +- !SHARDING + tables: + t_order: + actualDataNodes: + keyGenerateStrategy: + column: order_id + keyGeneratorName: snowflake + defaultDatabaseStrategy: + standard: + shardingColumn: user_id + shardingAlgorithmName: inline + shardingAlgorithms: + inline: + type: INLINE + props: + algorithm-expression: ds_${user_id % 2} + keyGenerators: + snowflake: + type: SNOWFLAKE +``` + +创建 ShardingSphere 的数据源后可正常使用本地事务, + +```java +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; +import java.sql.Connection; +import java.sql.SQLException; +@SuppressWarnings({"SqlNoDataSourceInspection", "AssertWithSideEffects"}) +public class ExampleUtils { + void test() throws SQLException { + HikariConfig config = new HikariConfig(); + config.setJdbcUrl("jdbc:shardingsphere:classpath:demo.yaml"); + config.setDriverClassName("org.apache.shardingsphere.driver.ShardingSphereDriver"); + try (HikariDataSource dataSource = new HikariDataSource(config); Connection connection = dataSource.getConnection()) { + try { + connection.setAutoCommit(false); + connection.createStatement().executeUpdate("INSERT INTO t_order (user_id, order_type, address_id, status) VALUES (2024, 0, 2024, 'INSERT_TEST')"); + connection.createStatement().executeUpdate("INSERT INTO t_order_does_not_exist (test_id_does_not_exist) VALUES (2024)"); + connection.commit(); + } catch (final SQLException ignored) { + connection.rollback(); + } finally { + connection.setAutoCommit(true); + } + try (Connection conn = dataSource.getConnection()) { + assert !conn.createStatement().executeQuery("SELECT * FROM t_order WHERE user_id = 2024").next(); + } + } + } +} +``` + +一旦在 ShardingSphere 的配置文件为 ClickHouse JDBC Driver 的 jdbcUrl 设置 `transactionSupport=true`, +用户在执行 `alter table` 语句前应确保没有尚未完成执行的 `insert` 语句,以避免如下 Error 的发生, + +```shell +java.sql.BatchUpdateException: Code: 341. DB::Exception: Exception happened during execution of mutation 'mutation_6.txt' with part 'all_1_1_0' reason: 'Serialization error: part all_1_1_0 is locked by transaction 5672402456378293316'. This error maybe retryable or not. In case of unretryable error, mutation can be killed with KILL MUTATION query. (UNFINISHED) (version 24.10.2.80 (official build)) + at com.clickhouse.jdbc.SqlExceptionUtils.batchUpdateError(SqlExceptionUtils.java:107) + at com.clickhouse.jdbc.internal.SqlBasedPreparedStatement.executeAny(SqlBasedPreparedStatement.java:223) + at com.clickhouse.jdbc.internal.SqlBasedPreparedStatement.executeLargeUpdate(SqlBasedPreparedStatement.java:302) + at com.clickhouse.jdbc.internal.AbstractPreparedStatement.executeUpdate(AbstractPreparedStatement.java:135) +``` + ### 嵌入式 ClickHouse 限制 嵌入式 ClickHouse `chDB` 尚未发布 Java 客户端, diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/clickhouse/_index.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/clickhouse/_index.en.md index d2fccfdfcdc36..9cfd11bacf31c 100644 --- a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/clickhouse/_index.en.md +++ b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/clickhouse/_index.en.md @@ -77,11 +77,11 @@ to connect to ClickHouse and execute the following SQL. ```sql -- noinspection SqlNoDataSourceInspectionForFile create table IF NOT EXISTS t_order ( - order_id Int64 NOT NULL DEFAULT rand(), + order_id Int64 NOT NULL, order_type Int32, user_id Int32 NOT NULL, address_id Int64 NOT NULL, - status String + status VARCHAR(50) ) engine = MergeTree primary key (order_id) order by (order_id); @@ -160,7 +160,8 @@ public class ExampleUtils { ### SQL Limitations -ShardingSphere JDBC DataSource does not yet support the execution of ClickHouse's `CREATE TABLE` statement and `TRUNCATE TABLE` statement. +ShardingSphere JDBC DataSource does not yet support executing ClickHouse's `create table`, `truncate table`, +and `drop table` statements. Users should consider submitting a PR containing unit tests for ShardingSphere. ### Key Generate restrictions @@ -212,8 +213,176 @@ public class ExampleTest { ### Transaction Limitations -ClickHouse does not support ShardingSphere integration-level local transactions, XA transactions, and Seata AT mode transactions. -More discussions are at https://github.com/ClickHouse/clickhouse-docs/issues/2300 . +ClickHouse does not support XA transactions at the ShardingSphere integration level, +because https://github.com/ClickHouse/clickhouse-java does not implement the relevant Java interface of `javax.sql.XADataSource`. + +ClickHouse does not support Seata AT mode transactions at the ShardingSphere integration level, +because https://github.com/apache/incubator-seata does not implement ClickHouse's SQL dialect parsing. + +ClickHouse supports local transactions at the ShardingSphere integration level, but additional configuration of ClickHouse is required, +For more discussion, please visit https://github.com/ClickHouse/clickhouse-docs/issues/2300 . + +Introduce the discussion of writing a Docker Compose file to start ClickHouse and ClickHouse Keeper. + +```yaml +services: + clickhouse-keeper-01: + image: clickhouse/clickhouse-keeper:24.10.2.80 + volumes: + - ./keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml + clickhouse-server: + image: clickhouse/clickhouse-server:24.10.2.80 + depends_on: + - clickhouse-keeper-01 + ports: + - "8123:8123" + volumes: + - ./transactions.xml:/etc/clickhouse-server/config.d/transactions.xml +``` + +The content of `./keeper_config.xml` is as follows, + +```xml + + 0.0.0.0 + + 9181 + 1 + /var/lib/clickhouse/coordination/snapshots + + + 1 + clickhouse-keeper-01 + 9234 + + + + +``` + +The content of `./transactions.xml` is as follows, + +```xml + + 1 + + + clickhouse-keeper-01 + 9181 + + + +``` + +In DBeaver Community, use `jdbcUrl` of `jdbc:ch://localhost:8123/default`, `username` of `default` to connect to ClickHouse, +and leave `password` blank. Execute the following SQL, + +```sql +-- noinspection SqlNoDataSourceInspectionForFile +CREATE DATABASE demo_ds_0; +CREATE DATABASE demo_ds_1; +CREATE DATABASE demo_ds_2; +``` + +Use `jdbcUrl` of `jdbc:ch://localhost:8123/demo_ds_0`, `jdbc:ch://localhost:8123/demo_ds_1` +and `jdbc:ch://localhost:8123/demo_ds_2` to connect to ClickHouse and execute the following SQL. + +```sql +-- noinspection SqlNoDataSourceInspectionForFile +create table IF NOT EXISTS t_order ( + order_id Int64 NOT NULL, + order_type Int32, + user_id Int32 NOT NULL, + address_id Int64 NOT NULL, + status VARCHAR(50) +) engine = MergeTree + primary key (order_id) + order by (order_id); + +TRUNCATE TABLE t_order; +``` + +After the business project introduces the dependencies involved in the `prerequisites`, +write the ShardingSphere data source configuration file `demo.yaml` on the classpath of the business project. + +```yaml +dataSources: + ds_0: + dataSourceClassName: com.zaxxer.hikari.HikariDataSource + driverClassName: com.clickhouse.jdbc.ClickHouseDriver + jdbcUrl: jdbc:ch://localhost:8123/demo_ds_0?transactionSupport=true + ds_1: + dataSourceClassName: com.zaxxer.hikari.HikariDataSource + driverClassName: com.clickhouse.jdbc.ClickHouseDriver + jdbcUrl: jdbc:ch://localhost:8123/demo_ds_1?transactionSupport=true + ds_2: + dataSourceClassName: com.zaxxer.hikari.HikariDataSource + driverClassName: com.clickhouse.jdbc.ClickHouseDriver + jdbcUrl: jdbc:ch://localhost:8123/demo_ds_2?transactionSupport=true +rules: +- !SHARDING + tables: + t_order: + actualDataNodes: + keyGenerateStrategy: + column: order_id + keyGeneratorName: snowflake + defaultDatabaseStrategy: + standard: + shardingColumn: user_id + shardingAlgorithmName: inline + shardingAlgorithms: + inline: + type: INLINE + props: + algorithm-expression: ds_${user_id % 2} + keyGenerators: + snowflake: + type: SNOWFLAKE +``` + +After creating the ShardingSphere data source, local transactions can be used normally. + +```java +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; +import java.sql.Connection; +import java.sql.SQLException; +@SuppressWarnings({"SqlNoDataSourceInspection", "AssertWithSideEffects"}) +public class ExampleUtils { + void test() throws SQLException { + HikariConfig config = new HikariConfig(); + config.setJdbcUrl("jdbc:shardingsphere:classpath:demo.yaml"); + config.setDriverClassName("org.apache.shardingsphere.driver.ShardingSphereDriver"); + try (HikariDataSource dataSource = new HikariDataSource(config); Connection connection = dataSource.getConnection()) { + try { + connection.setAutoCommit(false); + connection.createStatement().executeUpdate("INSERT INTO t_order (user_id, order_type, address_id, status) VALUES (2024, 0, 2024, 'INSERT_TEST')"); + connection.createStatement().executeUpdate("INSERT INTO t_order_does_not_exist (test_id_does_not_exist) VALUES (2024)"); + connection.commit(); + } catch (final SQLException ignored) { + connection.rollback(); + } finally { + connection.setAutoCommit(true); + } + try (Connection conn = dataSource.getConnection()) { + assert !conn.createStatement().executeQuery("SELECT * FROM t_order WHERE user_id = 2024").next(); + } + } + } +} +``` + +Once `transactionSupport=true` is set for the jdbcUrl of ClickHouse JDBC Driver in the ShardingSphere configuration file, +users should ensure that there are no unfinished `insert` statements before executing the `alter table` statement to avoid the following Error. + +```shell +java.sql.BatchUpdateException: Code: 341. DB::Exception: Exception happened during execution of mutation 'mutation_6.txt' with part 'all_1_1_0' reason: 'Serialization error: part all_1_1_0 is locked by transaction 5672402456378293316'. This error maybe retryable or not. In case of unretryable error, mutation can be killed with KILL MUTATION query. (UNFINISHED) (version 24.10.2.80 (official build)) + at com.clickhouse.jdbc.SqlExceptionUtils.batchUpdateError(SqlExceptionUtils.java:107) + at com.clickhouse.jdbc.internal.SqlBasedPreparedStatement.executeAny(SqlBasedPreparedStatement.java:223) + at com.clickhouse.jdbc.internal.SqlBasedPreparedStatement.executeLargeUpdate(SqlBasedPreparedStatement.java:302) + at com.clickhouse.jdbc.internal.AbstractPreparedStatement.executeUpdate(AbstractPreparedStatement.java:135) +``` ### Embedded ClickHouse Limitations diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/hiveserver2/_index.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/hiveserver2/_index.cn.md index bb11ed7def68a..239a753ec74c4 100644 --- a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/hiveserver2/_index.cn.md +++ b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/hiveserver2/_index.cn.md @@ -130,7 +130,7 @@ set iceberg.mr.schema.auto.conversion=true; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, @@ -260,7 +260,7 @@ set iceberg.mr.schema.auto.conversion=true; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, @@ -380,7 +380,7 @@ set iceberg.mr.schema.auto.conversion=true; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, @@ -438,8 +438,9 @@ HiveServer2 JDBC Driver `4.0.1` 不支持 Hadoop `3.4.1`, ### SQL 限制 -ShardingSphere JDBC DataSource 尚不支持执行 HiveServer2 的 `SET` 语句,`CREATE TABLE` 语句和 `TRUNCATE TABLE` 语句。 +HiveServer2 并不能保证每一条 `insert` 相关的 DML SQL 都能成功执行,尽管可能没有任何异常被抛出。 +ShardingSphere JDBC DataSource 尚不支持执行 HiveServer2 的 `set`,`create table`,`truncate table` 和 `drop table` 语句。 用户应考虑为 ShardingSphere 提交包含单元测试的 PR。 ### 在 ShardingSphere 数据源上使用 DML SQL 语句的前提条件 @@ -462,7 +463,7 @@ set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, @@ -480,7 +481,7 @@ set iceberg.mr.schema.auto.conversion=true; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/hiveserver2/_index.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/hiveserver2/_index.en.md index 38c6781a568e2..91967f757f8b1 100644 --- a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/hiveserver2/_index.en.md +++ b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/hiveserver2/_index.en.md @@ -133,7 +133,7 @@ set iceberg.mr.schema.auto.conversion=true; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, @@ -264,7 +264,7 @@ set iceberg.mr.schema.auto.conversion=true; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, @@ -385,7 +385,7 @@ set iceberg.mr.schema.auto.conversion=true; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, @@ -444,9 +444,10 @@ Reference https://github.com/apache/hive/pull/5500. ### SQL Limitations -ShardingSphere JDBC DataSource does not yet support executing HiveServer2's `SET` statement, -`CREATE TABLE` statement, and `TRUNCATE TABLE` statement. +HiveServer2 does not guarantee that every `insert` related DML SQL can be executed successfully, although no exception may be thrown. +ShardingSphere JDBC DataSource does not yet support executing HiveServer2's `set`, `create table`, `truncate table`, +and `drop table` statements. Users should consider submitting a PR containing unit tests for ShardingSphere. ### Prerequisites for using DML SQL statements on ShardingSphere data sources @@ -471,7 +472,7 @@ set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, @@ -489,7 +490,7 @@ set iceberg.mr.schema.auto.conversion=true; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json index 31fa795126018..c09eb7197a5b9 100644 --- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json @@ -16,7 +16,7 @@ "name":"[Lcom.github.dockerjava.api.model.VolumesFrom;" }, { - "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager$$Lambda/0x00007fb05bce1828"}, + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager$$Lambda/0x00007ff897cab858"}, "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" }, { @@ -75,10 +75,6 @@ "condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.standalone.jdbc.JDBCRepository"}, "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" }, -{ - "condition":{"typeReachable":"org.apache.shardingsphere.proxy.backend.connector.jdbc.datasource.JDBCBackendDataSource"}, - "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" -}, { "condition":{"typeReachable":"org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extended.Portal"}, "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" @@ -2078,7 +2074,7 @@ "queryAllDeclaredMethods":true }, { - "condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.listener.DatabaseMetaDataChangedListener$$Lambda/0x00007fb05bb277d8"}, + "condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.listener.DatabaseMetaDataChangedListener$$Lambda/0x00007ff897b26e30"}, "name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.MetaDataChangedSubscriber" }, { @@ -3131,6 +3127,16 @@ "name":"org.apache.shardingsphere.single.yaml.config.YamlSingleRuleConfiguration", "allDeclaredFields":true }, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement"}, + "name":"org.apache.shardingsphere.sql.parser.clickhouse.parser.ClickHouseLexer", + "methods":[{"name":"","parameterTypes":["org.antlr.v4.runtime.CharStream"] }] +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement"}, + "name":"org.apache.shardingsphere.sql.parser.clickhouse.parser.ClickHouseParser", + "methods":[{"name":"","parameterTypes":["org.antlr.v4.runtime.TokenStream"] }] +}, { "condition":{"typeReachable":"org.apache.shardingsphere.proxy.backend.handler.ProxySQLComQueryParser"}, "name":"org.apache.shardingsphere.sql.parser.clickhouse.parser.ClickHouseParserFacade" @@ -3140,6 +3146,11 @@ "name":"org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHouseStatementVisitorFacade", "methods":[{"name":"","parameterTypes":[] }] }, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement"}, + "name":"org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.type.ClickHouseDMLStatementVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, { "condition":{"typeReachable":"org.apache.shardingsphere.sql.parser.core.database.cache.ParseTreeCacheBuilder"}, "name":"org.apache.shardingsphere.sql.parser.core.database.cache.ParseTreeCacheLoader" @@ -3327,6 +3338,11 @@ "name":"org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseSelectStatement", "methods":[{"name":"","parameterTypes":[] }] }, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement"}, + "name":"org.apache.shardingsphere.sql.parser.statement.clickhouse.dml.ClickHouseSelectStatement", + "methods":[{"name":"","parameterTypes":[] }] +}, { "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement"}, "name":"org.apache.shardingsphere.sql.parser.statement.hive.dml.HiveInsertStatement", @@ -3607,5 +3623,10 @@ { "condition":{"typeReachable":"org.apache.shardingsphere.proxy.initializer.BootstrapInitializer"}, "name":"org.apache.shardingsphere.transaction.yaml.config.YamlTransactionRuleConfigurationCustomizer" +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine"}, + "name":"sun.security.provider.SecureRandom", + "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.security.SecureRandomParameters"] }] } ] \ No newline at end of file diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json index 6861bc941ff55..2c4176936c6ca 100644 --- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json @@ -75,6 +75,12 @@ }, { "condition":{"typeReachable":"org.apache.shardingsphere.transaction.xa.atomikos.manager.AtomikosTransactionManagerProvider"}, "pattern":"\\QMETA-INF/services/com.atomikos.recovery.OltpLogFactory\\E" + }, { + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager"}, + "pattern":"\\QMETA-INF/services/com.clickhouse.client.ClickHouseClient\\E" + }, { + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager$$Lambda/0x00007ff897b369d0"}, + "pattern":"\\QMETA-INF/services/com.clickhouse.client.ClickHouseClient\\E" }, { "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource"}, "pattern":"\\QMETA-INF/services/com.clickhouse.client.ClickHouseClient\\E" diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json index 46d056e7c417f..4597bf4a5967c 100644 --- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json @@ -304,21 +304,6 @@ "name":"org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.type.PostgreSQLTCLStatementVisitor", "methods":[{"name":"","parameterTypes":[] }] }, -{ - "condition":{"typeReachable":"org.apache.shardingsphere.sql.parser.clickhouse.parser.ClickHouseLexer"}, - "name":"org.apache.shardingsphere.sql.parser.clickhouse.parser.ClickHouseLexer", - "methods":[{"name":"","parameterTypes":["org.antlr.v4.runtime.CharStream"] }] -}, -{ - "condition":{"typeReachable":"org.apache.shardingsphere.sql.parser.clickhouse.parser.ClickHouseParser"}, - "name":"org.apache.shardingsphere.sql.parser.clickhouse.parser.ClickHouseParser", - "methods":[{"name":"","parameterTypes":["org.antlr.v4.runtime.TokenStream"] }] -}, -{ - "condition":{"typeReachable":"org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.type.ClickHouseDMLStatementVisitor"}, - "name":"org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.type.ClickHouseDMLStatementVisitor", - "methods":[{"name":"","parameterTypes":[] }] -}, { "condition":{"typeReachable":"org.apache.shardingsphere.sharding.yaml.config.strategy.sharding.YamlBaseShardingStrategyConfiguration"}, "name":"org.apache.shardingsphere.sharding.yaml.config.strategy.sharding.YamlBaseShardingStrategyConfiguration", diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/TestShardingService.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/TestShardingService.java index c167304b9df0f..37a78afc0370b 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/TestShardingService.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/TestShardingService.java @@ -24,10 +24,12 @@ import org.apache.shardingsphere.test.natived.commons.repository.AddressRepository; import org.apache.shardingsphere.test.natived.commons.repository.OrderItemRepository; import org.apache.shardingsphere.test.natived.commons.repository.OrderRepository; +import org.awaitility.Awaitility; import javax.sql.DataSource; import java.sql.SQLException; import java.sql.Statement; +import java.time.Duration; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -84,6 +86,7 @@ public void processSuccessInClickHouse() throws SQLException { assertThat(orderRepository.selectAll(), equalTo(Collections.emptyList())); assertThat(orderItemRepository.selectAll(), equalTo(Collections.emptyList())); assertThat(addressRepository.selectAll(), equalTo(Collections.emptyList())); + orderItemRepository.assertRollbackWithTransactions(); } private void extracted() throws SQLException { @@ -173,11 +176,14 @@ public void deleteData(final Collection orderIds) throws SQLException { /** * Delete data in ClickHouse. + * TODO It is necessary to avoid the use of {@code Awaitility.await().pollDelay(Duration.ofSeconds(5L)).until(()->true)}. + * After ClickHouse enables experimental transactions, performance drops significantly. * * @param orderIds orderId of the insert statement. * @throws SQLException An exception that provides information on a database access error or other errors. */ public void deleteDataInClickHouse(final Collection orderIds) throws SQLException { + Awaitility.await().pollDelay(Duration.ofSeconds(5L)).until(() -> true); long count = 1L; for (Long each : orderIds) { orderRepository.deleteInClickHouse(each); diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/AddressRepository.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/AddressRepository.java index 2797433e0a61f..1774289c577ce 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/AddressRepository.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/AddressRepository.java @@ -70,25 +70,6 @@ public void createTableInSQLServer() throws SQLException { } } - /** - * create table t_address if not exists in Hive. - * - * @throws SQLException SQL exception - */ - public void createTableIfNotExistsInHive() throws SQLException { - String sql = "CREATE TABLE IF NOT EXISTS t_address\n" - + "(\n" - + " address_id BIGINT NOT NULL,\n" - + " address_name VARCHAR(100) NOT NULL,\n" - + " PRIMARY KEY (address_id) disable novalidate\n" - + ") STORED BY ICEBERG STORED AS ORC TBLPROPERTIES ('format-version' = '2')"; - try ( - Connection connection = dataSource.getConnection(); - Statement statement = connection.createStatement()) { - statement.executeUpdate(sql); - } - } - /** * drop table t_address. * diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/OrderItemRepository.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/OrderItemRepository.java index ce58a765bd0cb..bcd26777467dd 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/OrderItemRepository.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/OrderItemRepository.java @@ -102,52 +102,6 @@ public void createTableInSQLServer() throws SQLException { } } - /** - * create table if not exists in ClickHouse. - * ClickHouse does not support `AUTO_INCREMENT`, refer to ClickHouse/ClickHouse#56228 . - * - * @throws SQLException SQL exception - */ - public void createTableIfNotExistsInClickHouse() throws SQLException { - String sql = "create table IF NOT EXISTS t_order_item( \n" - + "order_item_id Int64 NOT NULL DEFAULT rand(), \n" - + "order_id Int64 NOT NULL, \n" - + "user_id Int32 NOT NULL, \n" - + "phone String,\n" - + "status String\n" - + ") engine = MergeTree \n" - + "primary key (order_item_id)\n" - + "order by(order_item_id); "; - try ( - Connection connection = dataSource.getConnection(); - Statement statement = connection.createStatement()) { - statement.executeUpdate(sql); - } - } - - /** - * create table if not exists in Hive. - * Hive does not support `AUTO_INCREMENT`, refer to HIVE-6905 . - * - * @throws SQLException SQL exception - */ - public void createTableIfNotExistsInHive() throws SQLException { - String sql = "CREATE TABLE IF NOT EXISTS t_order_item\n" - + "(\n" - + " order_item_id BIGINT,\n" - + " order_id BIGINT NOT NULL,\n" - + " user_id INT NOT NULL,\n" - + " phone VARCHAR(50),\n" - + " status VARCHAR(50),\n" - + " PRIMARY KEY (order_item_id) disable novalidate\n" - + ") STORED BY ICEBERG STORED AS ORC TBLPROPERTIES ('format-version' = '2')"; - try ( - Connection connection = dataSource.getConnection(); - Statement statement = connection.createStatement()) { - statement.executeUpdate(sql); - } - } - /** * drop table. * @@ -323,22 +277,23 @@ public List selectAll() throws SQLException { /** * Assert rollback with transactions. - * This is currently just a simple test against a non-existent table and does not involve the competition scenario of distributed transactions. + * This is currently just a simple test against a non-existent table {@code t_order_item_does_not_exist} + * and does not involve the competition scenario of distributed transactions. * * @throws SQLException An exception that provides information on a database access error or other errors. */ public void assertRollbackWithTransactions() throws SQLException { - Connection connection = dataSource.getConnection(); - try { - connection.setAutoCommit(false); - connection.createStatement().executeUpdate("INSERT INTO t_order_item (order_id, user_id, phone, status) VALUES (2024, 2024, '13800000001', 'INSERT_TEST')"); - connection.createStatement().executeUpdate("INSERT INTO t_order_item_does_not_exist (test_id_does_not_exist) VALUES (2024)"); - connection.commit(); - } catch (final SQLException ignored) { - connection.rollback(); - } finally { - connection.setAutoCommit(true); - connection.close(); + try (Connection connection = dataSource.getConnection()) { + try { + connection.setAutoCommit(false); + connection.createStatement().executeUpdate("INSERT INTO t_order_item (order_id, user_id, phone, status) VALUES (2024, 2024, '13800000001', 'INSERT_TEST')"); + connection.createStatement().executeUpdate("INSERT INTO t_order_item_does_not_exist (test_id_does_not_exist) VALUES (2024)"); + connection.commit(); + } catch (final SQLException ignored) { + connection.rollback(); + } finally { + connection.setAutoCommit(true); + } } try ( Connection conn = dataSource.getConnection(); diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/OrderRepository.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/OrderRepository.java index 30fdd6625687e..8e9683b529044 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/OrderRepository.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/repository/OrderRepository.java @@ -99,52 +99,6 @@ public void createTableInSQLServer() throws SQLException { } } - /** - * create table in ClickHouse. - * ClickHouse does not support `AUTO_INCREMENT`, refer to ClickHouse/ClickHouse#56228 . - * - * @throws SQLException SQL exception - */ - public void createTableIfNotExistsInClickHouse() throws SQLException { - String sql = "create table IF NOT EXISTS t_order( \n" - + "order_id Int64 NOT NULL DEFAULT rand(), \n" - + "order_type Int32, \n" - + "user_id Int32 NOT NULL, \n" - + "address_id Int64 NOT NULL,\n" - + "status String\n" - + ") engine = MergeTree \n" - + "primary key (order_id)\n" - + "order by(order_id)"; - try ( - Connection connection = dataSource.getConnection(); - Statement statement = connection.createStatement()) { - statement.executeUpdate(sql); - } - } - - /** - * create table in Hive. - * Hive does not support `AUTO_INCREMENT`, refer to HIVE-6905 . - * - * @throws SQLException SQL exception - */ - public void createTableIfNotExistsInHive() throws SQLException { - String sql = "CREATE TABLE IF NOT EXISTS t_order\n" - + "(\n" - + " order_id BIGINT,\n" - + " order_type INT,\n" - + " user_id INT NOT NULL,\n" - + " address_id BIGINT NOT NULL,\n" - + " status VARCHAR(50),\n" - + " PRIMARY KEY (order_id) disable novalidate\n" - + ") STORED BY ICEBERG STORED AS ORC TBLPROPERTIES ('format-version' = '2')"; - try ( - Connection connection = dataSource.getConnection(); - Statement statement = connection.createStatement()) { - statement.executeUpdate(sql); - } - } - /** * drop table. * TODO There is a bug in this function in shadow's unit test and requires additional fixes. diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/ClickHouseTest.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/ClickHouseTest.java index 2295102d790fd..b24a06dac8fc2 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/ClickHouseTest.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/ClickHouseTest.java @@ -26,10 +26,14 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledInNativeImage; import org.testcontainers.clickhouse.ClickHouseContainer; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.Network; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.MountableFile; import javax.sql.DataSource; +import java.nio.file.Paths; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -46,20 +50,33 @@ * Cannot use testcontainers-java style jdbcURL for Clickhouse Server due to unresolved * testcontainers/testcontainers-java#8736. */ -@SuppressWarnings("SqlNoDataSourceInspection") +@SuppressWarnings({"SqlNoDataSourceInspection", "resource"}) @EnabledInNativeImage @Testcontainers class ClickHouseTest { + private static final Network NETWORK = Network.newNetwork(); + + @Container + private static final GenericContainer CLICKHOUSE_KEEPER_CONTAINER = new GenericContainer<>("clickhouse/clickhouse-keeper:24.10.2.80") + .withCopyFileToContainer( + MountableFile.forHostPath(Paths.get("src/test/resources/test-native/xml/keeper_config.xml").toAbsolutePath()), + "/etc/clickhouse-keeper/keeper_config.xml") + .withNetwork(NETWORK) + .withNetworkAliases("clickhouse-keeper-01"); + @Container - public static final ClickHouseContainer CONTAINER = new ClickHouseContainer("clickhouse/clickhouse-server:24.10.2.80"); + public static final ClickHouseContainer CONTAINER = new ClickHouseContainer("clickhouse/clickhouse-server:24.10.2.80") + .withCopyFileToContainer( + MountableFile.forHostPath(Paths.get("src/test/resources/test-native/xml/transactions.xml").toAbsolutePath()), + "/etc/clickhouse-server/config.d/transactions.xml") + .withNetwork(NETWORK) + .dependsOn(CLICKHOUSE_KEEPER_CONTAINER); private static final String SYSTEM_PROP_KEY_PREFIX = "fixture.test-native.yaml.database.clickhouse."; private String jdbcUrlPrefix; - private TestShardingService testShardingService; - @BeforeAll static void beforeAll() { assertThat(System.getProperty(SYSTEM_PROP_KEY_PREFIX + "ds0.jdbc-url"), is(nullValue())); @@ -69,39 +86,24 @@ static void beforeAll() { @AfterAll static void afterAll() { + NETWORK.close(); System.clearProperty(SYSTEM_PROP_KEY_PREFIX + "ds0.jdbc-url"); System.clearProperty(SYSTEM_PROP_KEY_PREFIX + "ds1.jdbc-url"); System.clearProperty(SYSTEM_PROP_KEY_PREFIX + "ds2.jdbc-url"); } /** - * TODO Need to fix `shardingsphere-parser-sql-clickhouse` module to use {@link TestShardingService#cleanEnvironment()} - * after {@link TestShardingService#processSuccessInClickHouse()}. + * TODO The {@code shardingsphere-parser-sql-clickhouse} module needs to be fixed to use SQL like `create table`, + * `truncate table` and `drop table`. */ @Test void assertShardingInLocalTransactions() throws SQLException { jdbcUrlPrefix = "jdbc:ch://localhost:" + CONTAINER.getMappedPort(8123) + "/"; DataSource dataSource = createDataSource(); - testShardingService = new TestShardingService(dataSource); + TestShardingService testShardingService = new TestShardingService(dataSource); testShardingService.processSuccessInClickHouse(); } - /** - * TODO Need to fix `shardingsphere-parser-sql-clickhouse` module to use `initEnvironment()` - * before {@link TestShardingService#processSuccessInClickHouse()}. - * - * @throws SQLException An exception that provides information on a database access error or other errors. - */ - @SuppressWarnings("unused") - private void initEnvironment() throws SQLException { - testShardingService.getOrderRepository().createTableIfNotExistsInClickHouse(); - testShardingService.getOrderItemRepository().createTableIfNotExistsInClickHouse(); - testShardingService.getAddressRepository().createTableIfNotExistsInMySQL(); - testShardingService.getOrderRepository().truncateTable(); - testShardingService.getOrderItemRepository().truncateTable(); - testShardingService.getAddressRepository().truncateTable(); - } - private Connection openConnection(final String databaseName) throws SQLException { Properties props = new Properties(); props.setProperty("user", CONTAINER.getUsername()); @@ -125,33 +127,40 @@ private DataSource createDataSource() throws SQLException { HikariConfig config = new HikariConfig(); config.setDriverClassName("org.apache.shardingsphere.driver.ShardingSphereDriver"); config.setJdbcUrl("jdbc:shardingsphere:classpath:test-native/yaml/jdbc/databases/clickhouse.yaml?placeholder-type=system_props"); - System.setProperty(SYSTEM_PROP_KEY_PREFIX + "ds0.jdbc-url", jdbcUrlPrefix + "demo_ds_0"); - System.setProperty(SYSTEM_PROP_KEY_PREFIX + "ds1.jdbc-url", jdbcUrlPrefix + "demo_ds_1"); - System.setProperty(SYSTEM_PROP_KEY_PREFIX + "ds2.jdbc-url", jdbcUrlPrefix + "demo_ds_2"); + System.setProperty(SYSTEM_PROP_KEY_PREFIX + "ds0.jdbc-url", jdbcUrlPrefix + "demo_ds_0?transactionSupport=true"); + System.setProperty(SYSTEM_PROP_KEY_PREFIX + "ds1.jdbc-url", jdbcUrlPrefix + "demo_ds_1?transactionSupport=true"); + System.setProperty(SYSTEM_PROP_KEY_PREFIX + "ds2.jdbc-url", jdbcUrlPrefix + "demo_ds_2?transactionSupport=true"); return new HikariDataSource(config); } + /** + * ClickHouse does not support `AUTO_INCREMENT`, + * refer to ClickHouse/ClickHouse#56228 . + * + * @param databaseName database name + * @throws RuntimeException SQL exception + */ private void initTable(final String databaseName) { try ( Connection connection = openConnection(databaseName); Statement statement = connection.createStatement()) { statement.executeUpdate("create table IF NOT EXISTS t_order\n" + "(\n" - + " order_id Int64 NOT NULL DEFAULT rand(),\n" + + " order_id Int64 NOT NULL,\n" + " order_type Int32,\n" + " user_id Int32 NOT NULL,\n" + " address_id Int64 NOT NULL,\n" - + " status String\n" + + " status VARCHAR(50)\n" + ") engine = MergeTree\n" + " primary key (order_id)\n" + " order by (order_id)"); statement.executeUpdate("create table IF NOT EXISTS t_order_item\n" + "(\n" - + " order_item_id Int64 NOT NULL DEFAULT rand(),\n" + + " order_item_id Int64 NOT NULL,\n" + " order_id Int64 NOT NULL,\n" + " user_id Int32 NOT NULL,\n" - + " phone String,\n" - + " status String\n" + + " phone VARCHAR(50),\n" + + " status VARCHAR(50)\n" + ") engine = MergeTree\n" + " primary key (order_item_id)\n" + " order by (order_item_id)"); diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/hive/HiveSimpleTest.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/hive/HiveSimpleTest.java index adaa894756bc4..72e0e781489b6 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/hive/HiveSimpleTest.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/hive/HiveSimpleTest.java @@ -56,12 +56,10 @@ class HiveSimpleTest { private static final String SYSTEM_PROP_KEY_PREFIX = "fixture.test-native.yaml.database.hive.simple."; // Due to https://issues.apache.org/jira/browse/HIVE-28317 , the `initFile` parameter of HiveServer2 JDBC Driver must be an absolute path. - private static final String ABSOLUTE_PATH = Paths.get("src/test/resources/test-native/sql/test-native-databases-hive.sql").toAbsolutePath().normalize().toString(); + private static final String ABSOLUTE_PATH = Paths.get("src/test/resources/test-native/sql/test-native-databases-hive.sql").toAbsolutePath().toString(); private String jdbcUrlPrefix; - private TestShardingService testShardingService; - @BeforeAll static void beforeAll() { assertThat(System.getProperty(SYSTEM_PROP_KEY_PREFIX + "ds0.jdbc-url"), is(nullValue())); @@ -76,35 +74,14 @@ static void afterAll() { System.clearProperty(SYSTEM_PROP_KEY_PREFIX + "ds2.jdbc-url"); } - /** - * TODO Need to fix `shardingsphere-parser-sql-hive` module to use {@link TestShardingService#cleanEnvironment()} - * after {@link TestShardingService#processSuccessInHive()}. - * - * @throws SQLException An exception that provides information on a database access error or other errors. - */ @Test void assertShardingInLocalTransactions() throws SQLException { jdbcUrlPrefix = "jdbc:hive2://localhost:" + CONTAINER.getMappedPort(10000) + "/"; DataSource dataSource = createDataSource(); - testShardingService = new TestShardingService(dataSource); + TestShardingService testShardingService = new TestShardingService(dataSource); testShardingService.processSuccessInHive(); } - /** - * TODO Need to fix `shardingsphere-parser-sql-hive` module to use `initEnvironment()` before {@link TestShardingService#processSuccessInHive()}. - * - * @throws SQLException An exception that provides information on a database access error or other errors. - */ - @SuppressWarnings("unused") - private void initEnvironment() throws SQLException { - testShardingService.getOrderRepository().createTableIfNotExistsInHive(); - testShardingService.getOrderItemRepository().createTableIfNotExistsInHive(); - testShardingService.getAddressRepository().createTableIfNotExistsInHive(); - testShardingService.getOrderRepository().truncateTable(); - testShardingService.getOrderItemRepository().truncateTable(); - testShardingService.getAddressRepository().truncateTable(); - } - private Connection openConnection() throws SQLException { Properties props = new Properties(); return DriverManager.getConnection(jdbcUrlPrefix, props); diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/hive/HiveZookeeperServiceDiscoveryTest.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/hive/HiveZookeeperServiceDiscoveryTest.java index 1debb4aa849bf..5c6a9e7c35da7 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/hive/HiveZookeeperServiceDiscoveryTest.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/hive/HiveZookeeperServiceDiscoveryTest.java @@ -67,6 +67,7 @@ class HiveZookeeperServiceDiscoveryTest { /** * TODO Maybe we should be able to find a better solution than {@link InstanceSpec#getRandomPort()} to use a random available port on the host. * It is not a good practice to use {@link FixedHostPortGenericContainer}. + * See testcontainers/testcontainers-java#9553 . */ @SuppressWarnings("unused") @Container @@ -83,14 +84,12 @@ class HiveZookeeperServiceDiscoveryTest { private static final String SYSTEM_PROP_KEY_PREFIX = "fixture.test-native.yaml.database.hive.zookeeper.sde."; // Due to https://issues.apache.org/jira/browse/HIVE-28317 , the `initFile` parameter of HiveServer2 JDBC Driver must be an absolute path. - private static final String ABSOLUTE_PATH = Paths.get("src/test/resources/test-native/sql/test-native-databases-hive.sql").toAbsolutePath().normalize().toString(); + private static final String ABSOLUTE_PATH = Paths.get("src/test/resources/test-native/sql/test-native-databases-hive.sql").toAbsolutePath().toString(); private final String jdbcUrlSuffix = ";serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2"; private String jdbcUrlPrefix; - private TestShardingService testShardingService; - @BeforeAll static void beforeAll() { assertThat(System.getProperty(SYSTEM_PROP_KEY_PREFIX + "ds0.jdbc-url"), is(nullValue())); @@ -107,8 +106,6 @@ static void afterAll() { } /** - * TODO Need to fix `shardingsphere-parser-sql-hive` module to use {@link TestShardingService#cleanEnvironment()} - * after {@link TestShardingService#processSuccessInHive()}. * TODO Same problem {@link InstanceSpec#getRandomPort()} as {@code HIVE_SERVER2_1_CONTAINER}. * * @throws SQLException An exception that provides information on a database access error or other errors. @@ -117,7 +114,7 @@ static void afterAll() { void assertShardingInLocalTransactions() throws SQLException { jdbcUrlPrefix = "jdbc:hive2://" + ZOOKEEPER_CONTAINER.getHost() + ":" + ZOOKEEPER_CONTAINER.getMappedPort(2181) + "/"; DataSource dataSource = createDataSource(); - testShardingService = new TestShardingService(dataSource); + TestShardingService testShardingService = new TestShardingService(dataSource); testShardingService.processSuccessInHive(); HIVE_SERVER2_1_CONTAINER.stop(); int randomPortSecond = InstanceSpec.getRandomPort(); @@ -137,21 +134,6 @@ void assertShardingInLocalTransactions() throws SQLException { } } - /** - * TODO Need to fix `shardingsphere-parser-sql-hive` module to use `initEnvironment()` before {@link TestShardingService#processSuccessInHive()}. - * - * @throws SQLException An exception that provides information on a database access error or other errors. - */ - @SuppressWarnings("unused") - private void initEnvironment() throws SQLException { - testShardingService.getOrderRepository().createTableIfNotExistsInHive(); - testShardingService.getOrderItemRepository().createTableIfNotExistsInHive(); - testShardingService.getAddressRepository().createTableIfNotExistsInHive(); - testShardingService.getOrderRepository().truncateTable(); - testShardingService.getOrderItemRepository().truncateTable(); - testShardingService.getAddressRepository().truncateTable(); - } - private Connection openConnection() throws SQLException { Properties props = new Properties(); return DriverManager.getConnection(jdbcUrlPrefix + jdbcUrlSuffix, props); diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/proxy/databases/PostgresTest.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/proxy/databases/PostgresTest.java index cc1a1625612c1..4e5413aba1a95 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/proxy/databases/PostgresTest.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/proxy/databases/PostgresTest.java @@ -67,7 +67,7 @@ static void beforeAll() throws SQLException { statement.executeUpdate("CREATE DATABASE demo_ds_1"); statement.executeUpdate("CREATE DATABASE demo_ds_2"); } - String absolutePath = Paths.get("src/test/resources/test-native/yaml/proxy/databases/postgresql").toAbsolutePath().normalize().toString(); + String absolutePath = Paths.get("src/test/resources/test-native/yaml/proxy/databases/postgresql").toAbsolutePath().toString(); proxyTestingServer = new ProxyTestingServer(absolutePath); Awaitility.await().atMost(Duration.ofSeconds(30L)).ignoreExceptions().until(() -> { openConnection("root", "root", "jdbc:postgresql://127.0.0.1:" + proxyTestingServer.getProxyPort() + "/postgres").close(); diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/proxy/features/ShardingTest.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/proxy/features/ShardingTest.java index 8c993bfb91752..3b318ea4f5501 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/proxy/features/ShardingTest.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/proxy/features/ShardingTest.java @@ -68,7 +68,7 @@ static void beforeAll() throws SQLException { statement.executeUpdate("CREATE DATABASE demo_ds_1"); statement.executeUpdate("CREATE DATABASE demo_ds_2"); } - String absolutePath = Paths.get("src/test/resources/test-native/yaml/proxy/features/sharding").toAbsolutePath().normalize().toString(); + String absolutePath = Paths.get("src/test/resources/test-native/yaml/proxy/features/sharding").toAbsolutePath().toString(); proxyTestingServer = new ProxyTestingServer(absolutePath); Awaitility.await().atMost(Duration.ofSeconds(30L)).ignoreExceptionsMatching(e -> e instanceof CommunicationsException).until(() -> { openConnection("root", "root", "jdbc:mysql://127.0.0.1:" + proxyTestingServer.getProxyPort()).close(); diff --git a/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native-test-metadata/resource-config.json b/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native-test-metadata/resource-config.json index 5a22d077ea78e..0f6f4683a75bf 100644 --- a/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native-test-metadata/resource-config.json +++ b/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native-test-metadata/resource-config.json @@ -6,6 +6,9 @@ }, { "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.jdbc.transactions.base.SeataTest"}, "pattern":".*test-native/sql/.+\\.sql$" + }, { + "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.jdbc.databases.ClickHouseTest"}, + "pattern":".*test-native/xml/.+\\.xml$" }, { "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.jdbc.databases.SQLServerTest"}, "pattern":"\\Qcontainer-license-acceptance.txt\\E" diff --git a/test/native/src/test/resources/test-native/sql/test-native-databases-hive.sql b/test/native/src/test/resources/test-native/sql/test-native-databases-hive.sql index 43bc516e458e2..82f8d0dacfb00 100644 --- a/test/native/src/test/resources/test-native/sql/test-native-databases-hive.sql +++ b/test/native/src/test/resources/test-native/sql/test-native-databases-hive.sql @@ -15,15 +15,16 @@ -- limitations under the License. -- --- TODO `shardingsphere-parser-sql-hive` module does not support `CREATE`, `SET`, `TRUNCATE` statements yet, +-- TODO `shardingsphere-parser-sql-hive` module does not support `create table`, `truncate table` and `drop table` statements yet, -- we always need to execute the following Hive Session-level SQL in the current `javax.sql.DataSource`. +-- Hive does not support `AUTO_INCREMENT`, refer to HIVE-6905 . -- Fixes `Unsupported Hive type VARCHAR, use string instead or enable automatic type conversion, set 'iceberg.mr.schema.auto.conversion' to true` set iceberg.mr.schema.auto.conversion=true; CREATE TABLE IF NOT EXISTS t_order ( - order_id BIGINT, + order_id BIGINT NOT NULL, order_type INT, user_id INT NOT NULL, address_id BIGINT NOT NULL, @@ -33,7 +34,7 @@ CREATE TABLE IF NOT EXISTS t_order CREATE TABLE IF NOT EXISTS t_order_item ( - order_item_id BIGINT, + order_item_id BIGINT NOT NULL, order_id BIGINT NOT NULL, user_id INT NOT NULL, phone VARCHAR(50), diff --git a/test/native/src/test/resources/test-native/xml/keeper_config.xml b/test/native/src/test/resources/test-native/xml/keeper_config.xml new file mode 100644 index 0000000000000..2a7d254adfa74 --- /dev/null +++ b/test/native/src/test/resources/test-native/xml/keeper_config.xml @@ -0,0 +1,31 @@ + + + 0.0.0.0 + + 9181 + 1 + /var/lib/clickhouse/coordination/snapshots + + + 1 + clickhouse-keeper-01 + 9234 + + + + diff --git a/test/native/src/test/resources/test-native/xml/transactions.xml b/test/native/src/test/resources/test-native/xml/transactions.xml new file mode 100644 index 0000000000000..1c54dd5f003d5 --- /dev/null +++ b/test/native/src/test/resources/test-native/xml/transactions.xml @@ -0,0 +1,25 @@ + + + 1 + + + clickhouse-keeper-01 + 9181 + + + diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/databases/clickhouse.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/databases/clickhouse.yaml index dccec2814753e..037cebf0f5c0b 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/databases/clickhouse.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/databases/clickhouse.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -73,6 +68,3 @@ rules: - !BROADCAST tables: - t_address - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/databases/hive/simple.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/databases/hive/simple.yaml index 46056faffc4f9..2a5ff41f4312f 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/databases/hive/simple.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/databases/hive/simple.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -67,6 +62,3 @@ rules: - !BROADCAST tables: - t_address - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/databases/hive/zookeeper-sde.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/databases/hive/zookeeper-sde.yaml index 6e72411c70224..11adae6a432f2 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/databases/hive/zookeeper-sde.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/databases/hive/zookeeper-sde.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -67,6 +62,3 @@ rules: - !BROADCAST tables: - t_address - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/databases/mysql.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/databases/mysql.yaml index 5291896aa4e90..78a812a4f06c3 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/databases/mysql.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/databases/mysql.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -73,6 +68,3 @@ rules: - !BROADCAST tables: - t_address - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/databases/opengauss.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/databases/opengauss.yaml index a3e6b8d937638..38f5051da17cb 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/databases/opengauss.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/databases/opengauss.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -73,6 +68,3 @@ rules: - !BROADCAST tables: - t_address - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/databases/postgresql.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/databases/postgresql.yaml index e6415b5a8ab3a..9d240e0381e39 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/databases/postgresql.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/databases/postgresql.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -67,6 +62,3 @@ rules: - !BROADCAST tables: - t_address - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/databases/sqlserver.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/databases/sqlserver.yaml index 2a0f7518c0685..3376792b2877f 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/databases/sqlserver.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/databases/sqlserver.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -67,6 +62,3 @@ rules: - !BROADCAST tables: - t_address - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/features/encrypt.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/features/encrypt.yaml index f5264168e18d1..e4cf07cf1aad1 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/features/encrypt.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/features/encrypt.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -57,6 +52,3 @@ rules: props: aes-key-value: 123456 digest-algorithm-name: SHA-1 - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/features/mask.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/features/mask.yaml index 948845285d49d..96708da063ab3 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/features/mask.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/features/mask.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -42,6 +37,3 @@ rules: first-n: 3 last-m: 4 replace-char: '*' - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/features/readwrite-splitting.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/features/readwrite-splitting.yaml index dcf4c85f43508..25efb7075de84 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/features/readwrite-splitting.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/features/readwrite-splitting.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -51,6 +46,3 @@ rules: readDataSourceNames: - ds_1 - ds_2 - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/features/shadow.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/features/shadow.yaml index 89c73ad895f6d..bb67eb127be84 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/features/shadow.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/features/shadow.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -82,6 +77,3 @@ sqlParser: parseTreeCache: initialCapacity: 2000 maximumSize: 65535 - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/features/sharding.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/features/sharding.yaml index 3671c4176d297..7c572d08b61aa 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/features/sharding.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/features/sharding.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/modes/cluster/etcd.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/modes/cluster/etcd.yaml index e4bf8f4e41eaa..3f5fec30ab73d 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/modes/cluster/etcd.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/modes/cluster/etcd.yaml @@ -76,6 +76,3 @@ rules: - !BROADCAST tables: - t_address - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/modes/cluster/zookeeper.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/modes/cluster/zookeeper.yaml index f778adc264303..f9e0bfaa47180 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/modes/cluster/zookeeper.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/modes/cluster/zookeeper.yaml @@ -76,6 +76,3 @@ rules: - !BROADCAST tables: - t_address - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/transactions/base/seata.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/transactions/base/seata.yaml index fdb7fd77ff362..750f452a776c2 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/transactions/base/seata.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/transactions/base/seata.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -71,6 +66,3 @@ rules: transaction: defaultType: BASE providerType: Seata - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/transactions/xa/atomikos.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/transactions/xa/atomikos.yaml index 26efecf48d9df..8b584217bf2da 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/transactions/xa/atomikos.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/transactions/xa/atomikos.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -77,6 +72,3 @@ rules: transaction: defaultType: XA providerType: Atomikos - -props: - sql-show: false diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/transactions/xa/narayana.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/transactions/xa/narayana.yaml index 5fa3628ef2f8c..679059bb4719d 100644 --- a/test/native/src/test/resources/test-native/yaml/jdbc/transactions/xa/narayana.yaml +++ b/test/native/src/test/resources/test-native/yaml/jdbc/transactions/xa/narayana.yaml @@ -15,11 +15,6 @@ # limitations under the License. # -mode: - type: Standalone - repository: - type: JDBC - dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource @@ -77,6 +72,3 @@ rules: transaction: defaultType: XA providerType: Narayana - -props: - sql-show: false