diff --git a/distribution/proxy-native/pom.xml b/distribution/proxy-native/pom.xml
index 10c1f5354fe01..df02de36c456c 100644
--- a/distribution/proxy-native/pom.xml
+++ b/distribution/proxy-native/pom.xml
@@ -718,7 +718,7 @@
com.clickhouse
clickhouse-jdbc
- http
+ all
runtime
diff --git a/distribution/proxy/pom.xml b/distribution/proxy/pom.xml
index fe6d087a4d804..2b58d13aaab8a 100644
--- a/distribution/proxy/pom.xml
+++ b/distribution/proxy/pom.xml
@@ -753,7 +753,7 @@
com.clickhouse
clickhouse-jdbc
- http
+ all
runtime
diff --git a/distribution/proxy/src/main/release-docs/LICENSE b/distribution/proxy/src/main/release-docs/LICENSE
index e104befce96cb..4efe9abd7e9c7 100644
--- a/distribution/proxy/src/main/release-docs/LICENSE
+++ b/distribution/proxy/src/main/release-docs/LICENSE
@@ -324,7 +324,7 @@ BSD licenses
The following components are provided under a BSD license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.
- antlr4-runtime 4.10.1: https://github.com/antlr/antlr4, BSD-3-Clause
+ antlr4-runtime 4.13.2: https://github.com/antlr/antlr4, BSD-3-Clause
asm 9.3: https://github.com/llbit/ow2-asm, BSD-3-Clause
commons-compiler 3.1.11: https://github.com/janino-compiler/janino, BSD-3-Clause
janino 3.1.11: https://github.com/janino-compiler/janino, BSD-3-Clause
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md
index 67103d87c4200..b4029669f0213 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md
@@ -280,42 +280,13 @@ Caused by: java.io.UnsupportedEncodingException: Codepage Cp1252 is not supporte
}
```
-6. 当需要通过 ShardingSphere JDBC 使用 ClickHouse 方言时,
-用户需要手动引入相关的可选模块和 classifier 为 `http` 的 ClickHouse JDBC 驱动。
-原则上,ShardingSphere 的 GraalVM Native Image 集成不希望使用 classifier 为 `all` 的 `com.clickhouse:clickhouse-jdbc`,
-因为 Uber Jar 会导致采集重复的 GraalVM Reachability Metadata。
-可能的配置例子如下,
-
-```xml
-
-
-
- org.apache.shardingsphere
- shardingsphere-jdbc
- ${shardingsphere.version}
-
-
- org.apache.shardingsphere
- shardingsphere-jdbc-dialect-clickhouse
- ${shardingsphere.version}
-
-
- com.clickhouse
- clickhouse-jdbc
- 0.6.3
- http
-
-
-
-```
-
-7. ShardingSphere 的单元测试仅使用 Maven 模块 `io.github.linghengqian:hive-server2-jdbc-driver-thin` 来在 GraalVM Native Image 下验证 HiveServer2 集成的可用性。
+6. ShardingSphere 的单元测试仅使用 Maven 模块 `io.github.linghengqian:hive-server2-jdbc-driver-thin` 来在 GraalVM Native Image 下验证 HiveServer2 集成的可用性。
如果开发者直接使用 `org.apache.hive:hive-jdbc`,则应自行处理依赖冲突和提供额外的 GraalVM Reachability Metadata 。
-8. 由于 https://github.com/oracle/graal/issues/7979 的影响,
+7. 由于 https://github.com/oracle/graal/issues/7979 的影响,
对应 `com.oracle.database.jdbc:ojdbc8` Maven 模块的 Oracle JDBC Driver 无法在 GraalVM Native Image 下使用。
-9. 包括但不限于来自第三方依赖的 `com.mysql.cj.LocalizedErrorMessages`,
+8. 包括但不限于来自第三方依赖的 `com.mysql.cj.LocalizedErrorMessages`,
`com.microsoft.sqlserver.jdbc.SQLServerResource`,
`org.postgresql.translation.messages`,
`org.opengauss.translation.messages` 等 `Resource Bundles` 在默认情况下会根据系统的默认语言环境加载 L10N 资源,
@@ -340,11 +311,11 @@ without it being registered as reachable. Add it to the resource metadata to sol
com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:186)
```
-10. 受 `apache/calcite` 使用的 `janino-compiler/janino` 的影响,
+9. 受 `apache/calcite` 使用的 `janino-compiler/janino` 的影响,
ShardingSphere 的 `SQL Federation` 功能在 GraalVM Native Image 下不可用。
这同样导致 ShardingSphere Proxy Native 无法使用 OpenGauss 集成。
-11. 受 https://github.com/oracle/graal/issues/11280 影响,
+10. 受 https://github.com/oracle/graal/issues/11280 影响,
Etcd 的 Cluster 模式集成无法在通过 Windows 11 编译的 GraalVM Native Image 下使用,
且 Etcd 的 Cluster 模式会与 GraalVM Tracing Agent 产生冲突。
若开发者需要在通过 Linux 编译的 GraalVM Native Image 下使用 Etcd 的 Cluster 模式,
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md
index 472bd64d70757..dc2b58bad0528 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md
@@ -291,42 +291,13 @@ Users need to define the following JSON in the `reachability-metadata.json` file
}
```
-6. When using the ClickHouse dialect through ShardingSphere JDBC,
-users need to manually introduce the relevant optional modules and the ClickHouse JDBC driver with the classifier `http`.
-In principle, ShardingSphere's GraalVM Native Image integration does not want to use `com.clickhouse:clickhouse-jdbc` with classifier `all`,
-because Uber Jar will cause the collection of duplicate GraalVM Reachability Metadata.
-Possible configuration examples are as follows,
-
-```xml
-
-
-
- org.apache.shardingsphere
- shardingsphere-jdbc
- ${shardingsphere.version}
-
-
- org.apache.shardingsphere
- shardingsphere-jdbc-dialect-clickhouse
- ${shardingsphere.version}
-
-
- com.clickhouse
- clickhouse-jdbc
- 0.6.3
- http
-
-
-
-```
-
-7. ShardingSphere's unit test only uses the Maven module `io.github.linghengqian:hive-server2-jdbc-driver-thin` to verify the availability of HiveServer2 integration under GraalVM Native Image.
+6. ShardingSphere's unit test only uses the Maven module `io.github.linghengqian:hive-server2-jdbc-driver-thin` to verify the availability of HiveServer2 integration under GraalVM Native Image.
If developers use `org.apache.hive:hive-jdbc` directly, they should handle dependency conflicts and provide additional GraalVM Reachability Metadata by themselves.
-8. Due to https://github.com/oracle/graal/issues/7979 ,
+7. Due to https://github.com/oracle/graal/issues/7979 ,
the Oracle JDBC Driver corresponding to the `com.oracle.database.jdbc:ojdbc8` Maven module cannot be used under GraalVM Native Image.
-9. Including but not limited to `com.mysql.cj.LocalizedErrorMessages`,
+8. Including but not limited to `com.mysql.cj.LocalizedErrorMessages`,
`com.microsoft.sqlserver.jdbc.SQLServerResource`,
`org.postgresql.translation.messages`,
`org.opengauss.translation.messages` from third-party dependencies. By default, L10N resources are loaded according to the system's default locale,
@@ -351,11 +322,11 @@ without it being registered as reachable. Add it to the resource metadata to sol
com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:186)
```
-10. Due to the use of `janino-compiler/janino` by `apache/calcite`,
+9. Due to the use of `janino-compiler/janino` by `apache/calcite`,
ShardingSphere's `SQL Federation` feature is unavailable in the GraalVM Native Image.
This also prevents ShardingSphere Proxy Native from integrating with OpenGauss.
-11. Due to the issue at https://github.com/oracle/graal/issues/11280,
+10. Due to the issue at https://github.com/oracle/graal/issues/11280,
Etcd's Cluster mode integration cannot be used on GraalVM Native Images compiled via Windows 11,
and Etcd's Cluster mode will conflict with the GraalVM Tracing Agent.
If developers need to use Etcd's Cluster mode on GraalVM Native Images compiled via Linux,
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 8728ff87cddfa..da5237fb6a76e 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
@@ -28,8 +28,8 @@ ShardingSphere 对 ClickHouse JDBC Driver 的支持位于可选模块中。
com.clickhouse
clickhouse-jdbc
- http
- 0.6.3
+ all
+ 0.9.4
```
@@ -43,7 +43,7 @@ ShardingSphere 对 ClickHouse JDBC Driver 的支持位于可选模块中。
```yaml
services:
clickhouse-server:
- image: clickhouse/clickhouse-server:25.9.6.117
+ image: clickhouse/clickhouse-server:25.10.3.100
environment:
CLICKHOUSE_SKIP_USER_SETUP: "1"
ports:
@@ -167,24 +167,14 @@ public class ExampleUtils {
### SQL 限制
ShardingSphere JDBC DataSource 尚不支持执行 ClickHouse 的 `create table`,`truncate table` 和 `drop table` 语句。
-用户应考虑为 ShardingSphere 提交包含单元测试的 PR。
+当前 ShardingSphere 对 ClickHouse 的 `INNER JOIN` 语法解析存在不足,
+对 `SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id` 这类 SQL,它可能返回错误的查询结果。
### 分布式序列限制
-ClickHouse 自身的,对应分布式序列功能的列类型是 `UUID`,`UUID` 在 ClickHouse JDBC Driver 中接收为 `java.util.UUID`,
-参考 https://github.com/ClickHouse/ClickHouse/issues/56228 。
-而 ShardingSphere 的 `SNOWFLAKE` 的分布式序列 SPI 实现对应的列类型是 `UInt64`,
-在 ShardingSphere JDBC Driver 中接收为 `java.lang.Long`。
-
-当为 ShardingSphere 配置连接至 ClickHouse 时, 若同时配置了 ShardingSphere 使用 `SNOWFLAKE` 的分布式序列 SPI 实现,
-ShardingSphere 的分布式序列功能使用的 ClickHouse 真实数据库中的列类型不应该被设置为 `UUID`。
-
-由于 `com.clickhouse:clickhouse-jdbc:0.6.3:http` Maven 模块的 `com.clickhouse.jdbc.ClickHouseConnection#prepareStatement(String, int)`
-故意在 `autoGeneratedKeys` 为 `java.sql.Statement.RETURN_GENERATED_KEYS` 时抛出异常,
-以阻止 ShardingSphere 正常代理 `com.clickhouse.jdbc.internal.ClickHouseConnectionImpl`,
-因此如果用户需要从 JDBC 业务代码获取 ShardingSphere 生成的分布式序列,需要将 `autoGeneratedKeys` 置为 `java.sql.Statement.NO_GENERATED_KEYS`。
-
-一个可能的示例如下,
+受 https://github.com/ClickHouse/ClickHouse/issues/21697 影响,
+由于 ClickHouse 不支持 `INSERT ... RETURNING` 语法,
+开发者无法在向 ShardingSphere 的逻辑数据源执行 `INSERT` SQL 后获得分布式序列。即,如下操作是不允许的,
```java
import com.zaxxer.hikari.HikariConfig;
@@ -199,7 +189,7 @@ public class ExampleTest {
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(
"INSERT INTO t_order (user_id, order_type, address_id, status) VALUES (1, 1, 1, 'INSERT_TEST')",
- Statement.NO_GENERATED_KEYS
+ Statement.RETURN_GENERATED_KEYS
)) {
preparedStatement.executeUpdate();
try (ResultSet resultSet = preparedStatement.getGeneratedKeys()) {
@@ -227,9 +217,3 @@ ClickHouse 不支持 ShardingSphere 集成级别的本地事务,XA 事务或 S
嵌入式 ClickHouse `chDB` 尚未发布 Java 客户端,
ShardingSphere 不针对 SNAPSHOT 版本的 https://github.com/chdb-io/chdb-java 做集成测试。
参考 https://github.com/chdb-io/chdb/issues/243 。
-
-### ClickHouse JDBC Driver V2 限制
-
-ClickHouse JDBC Driver V2 自 https://github.com/ClickHouse/clickhouse-java/pull/2368 所在的 `0.8.6` 里程碑开始,
-使用 `org.antlr:antlr4-maven-plugin:4.13.2`。这与 ShardingSphere 使用的 `org.antlr:antlr4-runtime:4.10.1` 产生冲突。
-ShardingSphere 仅使用 `com.clickhouse:clickhouse-jdbc:0.6.3:http` 测试 ClickHouse 集成。
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 71999eadf74c1..37d44757b61b0 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
@@ -28,8 +28,8 @@ the possible Maven dependencies are as follows,
com.clickhouse
clickhouse-jdbc
- http
- 0.6.3
+ all
+ 0.9.4
```
@@ -43,7 +43,7 @@ Write a Docker Compose file to start ClickHouse.
```yaml
services:
clickhouse-server:
- image: clickhouse/clickhouse-server:25.9.6.117
+ image: clickhouse/clickhouse-server:25.10.3.100
environment:
CLICKHOUSE_SKIP_USER_SETUP: "1"
ports:
@@ -170,27 +170,15 @@ public class ExampleUtils {
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.
+The current ShardingSphere parsing of ClickHouse's `INNER JOIN` syntax has shortcomings,
+and it may return incorrect query results for SQL statements such as `SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id`.
### Key Generate restrictions
-The column type corresponding to the Key Generate function of ClickHouse itself is `UUID`,
-and `UUID` is received as `java.util.UUID` in ClickHouse JDBC Driver,
-refer to https://github.com/ClickHouse/ClickHouse/issues/56228 .
-The column type corresponding to the Key Generate SPI implementation of ShardingSphere's `SNOWFLAKE` is `UInt64`,
-which is received as `java.lang.Long` in ShardingSphere JDBC Driver.
-
-When configuring ShardingSphere to connect to ClickHouse,
-if ShardingSphere is also configured to use the Key Generate SPI implementation of `SNOWFLAKE`,
-the column type in the ClickHouse real database used by ShardingSphere's Key Generate function should not be set to `UUID`.
-
-Because `com.clickhouse.jdbc.ClickHouseConnection#prepareStatement(String, int)` of `com.clickhouse:clickhouse-jdbc:0.6.3:http`
-Maven module intentionally throws an exception when `autoGeneratedKeys` is `java.sql.Statement.RETURN_GENERATED_KEYS`,
-to prevent ShardingSphere from proxying `com.clickhouse.jdbc.internal.ClickHouseConnectionImpl` normally,
-therefore, if users need to obtain the Key generated by ShardingSphere from the JDBC business code,
-they need to set `autoGeneratedKeys` to `java.sql.Statement.NO_GENERATED_KEYS`.
-
-A possible example is as follows,
+Due to the issue mentioned in https://github.com/ClickHouse/ClickHouse/issues/21697 ,
+because ClickHouse does not support the `INSERT ... RETURNING` syntax,
+developers cannot obtain distributed sequences after executing `INSERT` SQL into ShardingSphere's logical data source.
+Specifically, the following operations are not allowed:
```java
import com.zaxxer.hikari.HikariConfig;
@@ -205,7 +193,7 @@ public class ExampleTest {
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(
"INSERT INTO t_order (user_id, order_type, address_id, status) VALUES (1, 1, 1, 'INSERT_TEST')",
- Statement.NO_GENERATED_KEYS
+ Statement.RETURN_GENERATED_KEYS
)) {
preparedStatement.executeUpdate();
try (ResultSet resultSet = preparedStatement.getGeneratedKeys()) {
@@ -233,10 +221,3 @@ See https://github.com/ClickHouse/clickhouse-java/issues/2023 .
The embedded ClickHouse `chDB` Java client has not been released yet.
ShardingSphere does not do integration testing for the SNAPSHOT version of https://github.com/chdb-io/chdb-java .
Refer to https://github.com/chdb-io/chdb/issues/243 .
-
-### Limitations of ClickHouse JDBC Driver V2
-
-Starting from the `0.8.6` milestone at https://github.com/ClickHouse/clickhouse-java/pull/2368 ,
-ClickHouse JDBC Driver V2 uses `org.antlr:antlr4-maven-plugin:4.13.2`.
-This conflicts with `org.antlr:antlr4-runtime:4.10.1` used by ShardingSphere.
-ShardingSphere only uses `com.clickhouse:clickhouse-jdbc:0.6.3:http` to test ClickHouse integration.
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 423171971cfce..78273748cc422 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
@@ -366,9 +366,9 @@ ShardingSphere 仅针对 HiveServer2 `4.0.1` 进行集成测试。
### SQL 限制
-HiveServer2 并不能保证每一条 `insert` 相关的 DML SQL 都能成功执行,尽管可能没有任何异常被抛出。
-
ShardingSphere JDBC DataSource 尚不支持执行 HiveServer2 的 `set` 语句。
+当前 ShardingSphere 对 HiveServer2 的 `INNER JOIN` 语法解析存在不足,
+对 `SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id` 这类 SQL,它可能返回错误的查询结果。
#### 使用 `initFile` 参数部分绕开 SQL 限制
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 c6d350df7938e..cf58b89e4ebb3 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
@@ -372,9 +372,9 @@ Reference https://issues.apache.org/jira/browse/HIVE-28418 .
### SQL Limitations
-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 the `set` statement of HiveServer2.
+The current ShardingSphere parsing of HiveServer2's `INNER JOIN` syntax has shortcomings,
+and it may return incorrect query results for SQL statements such as `SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id`.
#### Use `initFile` parameter to partially bypass SQL restrictions
diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.clickhouse/clickhouse-jdbc/0.6.3/reachability-metadata.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.clickhouse/clickhouse-jdbc/0.6.3/reachability-metadata.json
deleted file mode 100644
index 09bf953ccfedb..0000000000000
--- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.clickhouse/clickhouse-jdbc/0.6.3/reachability-metadata.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "resources": [
- {
- "condition": {
- "typeReached": "com.clickhouse.logging.LoggerFactory"
- },
- "glob": "META-INF/services/com.clickhouse.*"
- },
- {
- "condition": {
- "typeReached": "com.clickhouse.client.internal.jpountz.lz4.LZ4JNI"
- },
- "glob": "com/clickhouse/client/internal/jpountz/util/*/amd64/liblz4-java.so"
- }
- ]
-}
diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.clickhouse/clickhouse-jdbc/0.9.4-all/reachability-metadata.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.clickhouse/clickhouse-jdbc/0.9.4-all/reachability-metadata.json
new file mode 100644
index 0000000000000..edbd018579579
--- /dev/null
+++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.clickhouse/clickhouse-jdbc/0.9.4-all/reachability-metadata.json
@@ -0,0 +1,167 @@
+{
+ "reflection": [
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4Factory"
+ },
+ "type": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4HCJNICompressor",
+ "fields": [
+ {
+ "name": "INSTANCE"
+ }
+ ],
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "int"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4Factory"
+ },
+ "type": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4HCJavaUnsafeCompressor",
+ "fields": [
+ {
+ "name": "INSTANCE"
+ }
+ ],
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "int"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4Factory"
+ },
+ "type": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4JNICompressor",
+ "fields": [
+ {
+ "name": "INSTANCE"
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4Factory"
+ },
+ "type": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4JNIFastDecompressor",
+ "fields": [
+ {
+ "name": "INSTANCE"
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4Factory"
+ },
+ "type": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4JNISafeDecompressor",
+ "fields": [
+ {
+ "name": "INSTANCE"
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4Factory"
+ },
+ "type": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4JavaUnsafeCompressor",
+ "fields": [
+ {
+ "name": "INSTANCE"
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4Factory"
+ },
+ "type": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4JavaUnsafeFastDecompressor",
+ "fields": [
+ {
+ "name": "INSTANCE"
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4Factory"
+ },
+ "type": "com.clickhouse.client.internal.net.jpountz.lz4.LZ4JavaUnsafeSafeDecompressor",
+ "fields": [
+ {
+ "name": "INSTANCE"
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.data.ClickHouseFormat"
+ },
+ "type": "com.clickhouse.data.ClickHouseFormat",
+ "fields": [
+ {
+ "name": "RowBinary"
+ },
+ {
+ "name": "TabSeparated"
+ }
+ ]
+ }
+ ],
+ "resources": [
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.logging.LoggerFactory"
+ },
+ "glob": "META-INF/services/com.clickhouse.logging.LoggerFactory"
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.config.ClickHouseClientOption"
+ },
+ "glob": "clickhouse-client-version.properties"
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.api.Client"
+ },
+ "glob": "client-v2-version.properties"
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.api.internal.HttpAPIClientHelper"
+ },
+ "glob": "client-v2-version.properties"
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.net.jpountz.util.Native"
+ },
+ "glob": "com/clickhouse/client/internal/net/jpountz/util/win32/amd64/liblz4-java.so"
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.client.internal.org.apache.hc.core5.util.VersionInfo"
+ },
+ "glob": "com/clickhouse/client/internal/org/apache/hc/client5/version.properties"
+ },
+ {
+ "condition": {
+ "typeReached": "com.clickhouse.jdbc.Driver"
+ },
+ "glob": "jdbc-v2-version.properties"
+ }
+ ],
+ "bundles": []
+}
diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.github.docker-java/docker-java-api/3.6.0/reachability-metadata.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.github.docker-java/docker-java-api/3.6.0/reachability-metadata.json
new file mode 100644
index 0000000000000..49f87e4b12b59
--- /dev/null
+++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.github.docker-java/docker-java-api/3.6.0/reachability-metadata.json
@@ -0,0 +1,1100 @@
+{
+ "reflection": [
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.CreateContainerCmd"
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.CreateContainerResponse",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ },
+ {
+ "name": "setId",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ },
+ {
+ "name": "setWarnings",
+ "parameterTypes": [
+ "java.lang.String[]"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.DockerCmd"
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.GraphData",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.GraphDriver",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.HealthState",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.HealthStateLog",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.InspectContainerResponse",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.InspectContainerResponse$ContainerState",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "com.github.dockerjava.api.command.InspectContainerResponse"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.InspectContainerResponse$Mount",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.InspectContainerResponse$Node",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.InspectImageResponse",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.RootFS",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.command.SyncDockerCmd"
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.AccessMode",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.AuthConfig",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Bind",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.BindOptions",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.BindPropagation",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Binds",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "fromPrimitive",
+ "parameterTypes": [
+ "java.lang.String[]"
+ ]
+ },
+ {
+ "name": "toPrimitive",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.BlkioRateDevice",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.BlkioWeightDevice",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Capability",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ClusterInfo",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ContainerConfig",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ContainerNetwork",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ContainerNetwork$Ipam",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Device",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.DeviceRequest",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.DockerObject",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "getRawValues",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Driver",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ExposedPort",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ExposedPorts",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "fromPrimitive",
+ "parameterTypes": [
+ "java.util.Map"
+ ]
+ },
+ {
+ "name": "toPrimitive",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ExternalCA",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ExternalCAProtocol",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.HealthCheck",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.HostConfig",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ },
+ {
+ "name": "getAnnotations",
+ "parameterTypes": []
+ },
+ {
+ "name": "getAutoRemove",
+ "parameterTypes": []
+ },
+ {
+ "name": "getBlkioDeviceReadBps",
+ "parameterTypes": []
+ },
+ {
+ "name": "getBlkioDeviceReadIOps",
+ "parameterTypes": []
+ },
+ {
+ "name": "getBlkioDeviceWriteBps",
+ "parameterTypes": []
+ },
+ {
+ "name": "getBlkioDeviceWriteIOps",
+ "parameterTypes": []
+ },
+ {
+ "name": "getBlkioWeight",
+ "parameterTypes": []
+ },
+ {
+ "name": "getBlkioWeightDevice",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCapAdd",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCapDrop",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCgroup",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCgroupParent",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCgroupnsMode",
+ "parameterTypes": []
+ },
+ {
+ "name": "getConsoleSize",
+ "parameterTypes": []
+ },
+ {
+ "name": "getContainerIDFile",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCpuCount",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCpuPercent",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCpuPeriod",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCpuQuota",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCpuRealtimePeriod",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCpuRealtimeRuntime",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCpuShares",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCpusetCpus",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCpusetMems",
+ "parameterTypes": []
+ },
+ {
+ "name": "getDeviceCgroupRules",
+ "parameterTypes": []
+ },
+ {
+ "name": "getDeviceRequests",
+ "parameterTypes": []
+ },
+ {
+ "name": "getDevices",
+ "parameterTypes": []
+ },
+ {
+ "name": "getDiskQuota",
+ "parameterTypes": []
+ },
+ {
+ "name": "getDns",
+ "parameterTypes": []
+ },
+ {
+ "name": "getDnsOptions",
+ "parameterTypes": []
+ },
+ {
+ "name": "getDnsSearch",
+ "parameterTypes": []
+ },
+ {
+ "name": "getExtraHosts",
+ "parameterTypes": []
+ },
+ {
+ "name": "getGroupAdd",
+ "parameterTypes": []
+ },
+ {
+ "name": "getInit",
+ "parameterTypes": []
+ },
+ {
+ "name": "getIoMaximumBandwidth",
+ "parameterTypes": []
+ },
+ {
+ "name": "getIoMaximumIOps",
+ "parameterTypes": []
+ },
+ {
+ "name": "getIpcMode",
+ "parameterTypes": []
+ },
+ {
+ "name": "getIsolation",
+ "parameterTypes": []
+ },
+ {
+ "name": "getKernelMemory",
+ "parameterTypes": []
+ },
+ {
+ "name": "getLxcConf",
+ "parameterTypes": []
+ },
+ {
+ "name": "getMemory",
+ "parameterTypes": []
+ },
+ {
+ "name": "getMemoryReservation",
+ "parameterTypes": []
+ },
+ {
+ "name": "getMemorySwap",
+ "parameterTypes": []
+ },
+ {
+ "name": "getMemorySwappiness",
+ "parameterTypes": []
+ },
+ {
+ "name": "getMounts",
+ "parameterTypes": []
+ },
+ {
+ "name": "getNanoCPUs",
+ "parameterTypes": []
+ },
+ {
+ "name": "getNetworkMode",
+ "parameterTypes": []
+ },
+ {
+ "name": "getOomKillDisable",
+ "parameterTypes": []
+ },
+ {
+ "name": "getOomScoreAdj",
+ "parameterTypes": []
+ },
+ {
+ "name": "getPidMode",
+ "parameterTypes": []
+ },
+ {
+ "name": "getPidsLimit",
+ "parameterTypes": []
+ },
+ {
+ "name": "getPortBindings",
+ "parameterTypes": []
+ },
+ {
+ "name": "getPrivileged",
+ "parameterTypes": []
+ },
+ {
+ "name": "getPublishAllPorts",
+ "parameterTypes": []
+ },
+ {
+ "name": "getReadonlyRootfs",
+ "parameterTypes": []
+ },
+ {
+ "name": "getRestartPolicy",
+ "parameterTypes": []
+ },
+ {
+ "name": "getRuntime",
+ "parameterTypes": []
+ },
+ {
+ "name": "getSecurityOpts",
+ "parameterTypes": []
+ },
+ {
+ "name": "getShmSize",
+ "parameterTypes": []
+ },
+ {
+ "name": "getStorageOpt",
+ "parameterTypes": []
+ },
+ {
+ "name": "getSysctls",
+ "parameterTypes": []
+ },
+ {
+ "name": "getTmpFs",
+ "parameterTypes": []
+ },
+ {
+ "name": "getUlimits",
+ "parameterTypes": []
+ },
+ {
+ "name": "getUsernsMode",
+ "parameterTypes": []
+ },
+ {
+ "name": "getUtSMode",
+ "parameterTypes": []
+ },
+ {
+ "name": "getVolumeDriver",
+ "parameterTypes": []
+ },
+ {
+ "name": "getVolumesFrom",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Image",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ImageOptions",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Info",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.InfoRegistryConfig",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.InfoRegistryConfig$IndexConfig",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.InternetProtocol",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Isolation",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "fromValue",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Link",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Links",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "toPrimitive",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.LocalNodeState",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "forValue",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.LogConfig",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ },
+ {
+ "name": "setType",
+ "parameterTypes": [
+ "com.github.dockerjava.api.model.LogConfig$LoggingType"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.LogConfig$LoggingType",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "fromValue",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.LxcConf",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Mount",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.MountType",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.NetworkSettings",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.PeerNode",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Ports",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "fromPrimitive",
+ "parameterTypes": [
+ "java.util.Map"
+ ]
+ },
+ {
+ "name": "toPrimitive",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Ports$Binding",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.PropagationMode",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.ResourceVersion",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.RestartPolicy",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.RuntimeInfo",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ },
+ {
+ "name": "setPath",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.SELContext",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.SwarmCAConfig",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.SwarmDispatcherConfig",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.SwarmInfo",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.SwarmOrchestration",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.SwarmRaftConfig",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.SwarmSpec",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.TaskDefaults",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.TmpfsOptions",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Ulimit",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Version",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.VersionComponent",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.VersionPlatform",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Volume",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.VolumeBind",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.VolumeBinds",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.VolumeOptions",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.VolumeRW",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.Volumes",
+ "allDeclaredFields": true,
+ "methods": [
+ {
+ "name": "toPrimitive",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.VolumesFrom",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "type": "com.github.dockerjava.api.model.VolumesRW",
+ "allDeclaredFields": true
+ }
+ ],
+ "resources": [
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.util.VersionInfo"
+ },
+ "glob": "com/github/dockerjava/zerodep/shaded/org/apache/hc/client5/version.properties"
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.api.DockerClientDelegate"
+ },
+ "glob": "docker-java.properties"
+ },
+ {
+ "condition": {
+ "typeReached": "com.github.dockerjava.zerodep.shaded.org.apache.hc.client5.http.psl.PublicSuffixMatcherLoader"
+ },
+ "glob": "org/publicsuffix/list/effective_tld_names.dat"
+ }
+ ]
+}
diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reachability-metadata.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reachability-metadata.json
index 01ad295c03e42..22411bf900c1d 100644
--- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reachability-metadata.json
+++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reachability-metadata.json
@@ -613,7 +613,12 @@
"condition": {
"typeReached": "org.apache.shardingsphere.infra.expr.groovy.GroovyInlineExpressionParser"
},
- "type": "java.lang.Thread"
+ "type": "java.lang.Thread",
+ "fields": [
+ {
+ "name": "threadLocalRandomProbe"
+ }
+ ]
},
{
"condition": {
@@ -2488,6 +2493,12 @@
},
"type": "org.apache.shardingsphere.driver.ShardingSphereDriver"
},
+ {
+ "condition": {
+ "typeReached": "org.apache.shardingsphere.proxy.backend.connector.jdbc.datasource.JDBCBackendDataSource"
+ },
+ "type": "org.apache.shardingsphere.driver.ShardingSphereDriver"
+ },
{
"condition": {
"typeReached": "org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLUpdateProxyBackendHandler"
@@ -11222,6 +11233,12 @@
},
"glob": "META-INF/services/java.nio.charset.spi.CharsetProvider"
},
+ {
+ "condition": {
+ "typeReached": "org.apache.shardingsphere.infra.algorithm.keygen.snowflake.SnowflakeKeyGenerateAlgorithm"
+ },
+ "glob": "META-INF/services/java.time.zone.ZoneRulesProvider"
+ },
{
"condition": {
"typeReached": "org.apache.shardingsphere.mode.repository.standalone.jdbc.sql.JDBCRepositorySQLLoader"
diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reachability-metadata.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reachability-metadata.json
index d58c1d1f5d8d2..5b0058f55ded8 100644
--- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reachability-metadata.json
+++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reachability-metadata.json
@@ -2,23 +2,30 @@
"reflection": [
{
"condition": {
- "typeReached": "com.oracle.svm.core.code.CodeCacheManagerMXBean"
+ "typeReached": "com.oracle.svm.core.jdk.management.SubstrateCompilationMXBean"
},
- "type": "com.oracle.svm.core.code.CodeCacheManagerMXBean",
+ "type": "com.oracle.svm.core.jdk.management.SubstrateCompilationMXBean",
"allPublicConstructors": true
},
{
"condition": {
- "typeReached": "com.oracle.svm.core.genscavenge.CompleteGarbageCollectorMXBean"
+ "typeReached": "com.oracle.svm.core.jdk.management.SubstrateClassLoadingMXBean"
},
- "type": "com.oracle.svm.core.genscavenge.CompleteGarbageCollectorMXBean",
+ "type": "com.oracle.svm.core.jdk.management.SubstrateClassLoadingMXBean",
"allPublicConstructors": true
},
{
"condition": {
- "typeReached": "com.oracle.svm.core.genscavenge.HeapImplMemoryMXBean"
+ "typeReached": "com.oracle.svm.core.jdk.management.SubstrateThreadMXBean"
},
- "type": "com.oracle.svm.core.genscavenge.HeapImplMemoryMXBean",
+ "type": "com.oracle.svm.core.jdk.management.SubstrateThreadMXBean",
+ "allPublicConstructors": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.oracle.svm.core.jdk.management.SubstrateRuntimeMXBean"
+ },
+ "type": "com.oracle.svm.core.jdk.management.SubstrateRuntimeMXBean",
"allPublicConstructors": true
},
{
@@ -30,9 +37,16 @@
},
{
"condition": {
- "typeReached": "com.oracle.svm.core.genscavenge.GenScavengeMemoryPoolMXBeans"
+ "typeReached": "com.oracle.svm.core.genscavenge.CompleteGarbageCollectorMXBean"
},
- "type": "com.oracle.svm.core.genscavenge.GenScavengeMemoryPoolMXBeans$SurvivorMemoryPoolMXBean",
+ "type": "com.oracle.svm.core.genscavenge.CompleteGarbageCollectorMXBean",
+ "allPublicConstructors": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.oracle.svm.core.code.CodeCacheManagerMXBean"
+ },
+ "type": "com.oracle.svm.core.code.CodeCacheManagerMXBean",
"allPublicConstructors": true
},
{
@@ -44,194 +58,199 @@
},
{
"condition": {
- "typeReached": "com.oracle.svm.core.genscavenge.IncrementalGarbageCollectorMXBean"
+ "typeReached": "com.oracle.svm.core.genscavenge.HeapImplMemoryMXBean"
},
- "type": "com.oracle.svm.core.genscavenge.IncrementalGarbageCollectorMXBean",
+ "type": "com.oracle.svm.core.genscavenge.HeapImplMemoryMXBean",
"allPublicConstructors": true
},
{
"condition": {
- "typeReached": "com.oracle.svm.core.jdk.management.SubstrateCompilationMXBean"
+ "typeReached": "com.oracle.svm.core.genscavenge.GenScavengeMemoryPoolMXBeans"
},
- "type": "com.oracle.svm.core.jdk.management.SubstrateCompilationMXBean",
+ "type": "com.oracle.svm.core.genscavenge.GenScavengeMemoryPoolMXBeans$SurvivorMemoryPoolMXBean",
"allPublicConstructors": true
},
{
"condition": {
- "typeReached": "com.oracle.svm.core.jdk.management.SubstrateThreadMXBean"
+ "typeReached": "com.oracle.svm.core.genscavenge.IncrementalGarbageCollectorMXBean"
},
- "type": "com.oracle.svm.core.jdk.management.SubstrateThreadMXBean",
+ "type": "com.oracle.svm.core.genscavenge.IncrementalGarbageCollectorMXBean",
"allPublicConstructors": true
},
{
"condition": {
- "typeReached": "com.oracle.svm.core.jdk.management.SubstrateRuntimeMXBean"
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
- "type": "com.oracle.svm.core.jdk.management.SubstrateRuntimeMXBean",
- "allPublicConstructors": true
+ "type": "com.sun.management.OperatingSystemMXBean",
+ "allPublicMethods": true
},
{
"condition": {
- "typeReached": "com.oracle.svm.core.jdk.management.SubstrateClassLoadingMXBean"
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
- "type": "com.oracle.svm.core.jdk.management.SubstrateClassLoadingMXBean",
+ "type": "com.sun.management.internal.OperatingSystemImpl",
"allPublicConstructors": true
},
{
"condition": {
- "typeReached": "com.sun.management.GarbageCollectorMXBean"
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
- "type": "com.sun.management.GarbageCollectorMXBean",
+ "type": "com.sun.management.ThreadMXBean",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "com.sun.management.ThreadMXBean"
+ "typeReached": "com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory"
},
- "type": "com.sun.management.ThreadMXBean",
+ "type": "com.sun.management.GcInfo",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "com.sun.management.OperatingSystemMXBean"
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
- "type": "com.sun.management.OperatingSystemMXBean",
+ "type": "com.sun.management.GarbageCollectorMXBean",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "com.sun.management.UnixOperatingSystemMXBean"
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
- "type": "com.sun.management.UnixOperatingSystemMXBean",
+ "type": "java.lang.Deprecated",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "com.sun.management.internal.OperatingSystemImpl"
+ "typeReached": "sun.net.www.protocol.http.HttpURLConnection"
},
- "type": "com.sun.management.internal.OperatingSystemImpl",
- "allPublicMethods": true,
+ "type": "java.net.SocketException",
"allPublicConstructors": true
},
{
"condition": {
- "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
+ "typeReached": "java.util.Collections"
},
- "type": "java.lang.Deprecated",
- "allPublicMethods": true
+ "type": "java.util.Collections$UnmodifiableMap",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
},
{
"condition": {
- "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
+ "typeReached": "java.util.Collections"
},
- "type": "java.lang.management.ClassLoadingMXBean",
- "allPublicMethods": true
+ "type": "java.util.Collections$SingletonMap",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
},
{
"condition": {
- "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
+ "typeReached": "java.util.AbstractList"
},
- "type": "java.lang.management.MonitorInfo",
- "allPublicMethods": true
+ "type": "java.util.AbstractList",
+ "allDeclaredFields": true
},
{
"condition": {
- "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
+ "typeReached": "java.util.Arrays"
},
- "type": "java.lang.management.MemoryMXBean",
- "allPublicMethods": true
+ "type": "java.util.Arrays$ArrayList",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
},
{
"condition": {
- "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
+ "typeReached": "java.util.RandomAccess"
},
- "type": "java.lang.management.MemoryPoolMXBean",
- "allPublicMethods": true
+ "type": "java.util.RandomAccess",
+ "allDeclaredMethods": true
},
{
"condition": {
- "typeReached": "com.sun.jmx.mbeanserver.MXBeanIntrospector"
+ "typeReached": "java.util.HashSet"
},
- "type": "com.sun.management.GcInfo",
+ "type": "java.util.HashSet",
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory"
+ },
+ "type": "java.lang.StackTraceElement",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "java.lang.management.CompilationMXBean"
+ "typeReached": "java.net.HttpURLConnection"
+ },
+ "type": "java.net.SocketTimeoutException",
+ "allPublicConstructors": true
+ },
+ {
+ "condition": {
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
"type": "java.lang.management.CompilationMXBean",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "java.lang.management.MemoryManagerMXBean"
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
- "type": "java.lang.management.MemoryManagerMXBean",
+ "type": "java.lang.management.ClassLoadingMXBean",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "java.lang.management.LockInfo"
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
- "type": "java.lang.management.LockInfo",
+ "type": "java.lang.management.MemoryPoolMXBean",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "com.sun.jmx.mbeanserver.MXBeanIntrospector"
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
- "type": "java.lang.management.MemoryUsage",
+ "type": "java.lang.management.MemoryManagerMXBean",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "java.lang.management.ThreadInfo"
+ "typeReached": "com.sun.jmx.mbeanserver.MBeanIntrospector"
},
- "type": "java.lang.management.ThreadInfo",
+ "type": "java.lang.management.MemoryMXBean",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "java.lang.StackTraceElement"
+ "typeReached": "com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory"
},
- "type": "java.lang.StackTraceElement",
+ "type": "java.lang.management.ThreadInfo",
"allPublicMethods": true
},
{
"condition": {
- "typeReached": "java.net.SocketException"
+ "typeReached": "com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory"
},
- "type": "java.net.SocketException",
- "methods": [
- {
- "name": "",
- "parameterTypes": [
- "java.lang.String"
- ]
- }
- ]
+ "type": "java.lang.management.LockInfo",
+ "allPublicMethods": true
},
{
"condition": {
- "typeReached": "java.net.SocketTimeoutException"
+ "typeReached": "com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory"
},
- "type": "java.net.SocketTimeoutException",
- "methods": [
- {
- "name": "",
- "parameterTypes": [
- "java.lang.String"
- ]
- }
- ]
+ "type": "java.lang.management.MonitorInfo",
+ "allPublicMethods": true
},
{
"condition": {
- "typeReached": "java.util.HashSet"
+ "typeReached": "com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory"
},
- "type": "java.util.HashSet",
- "allDeclaredMethods": true,
- "allDeclaredConstructors": true
+ "type": "java.lang.management.MemoryUsage",
+ "allPublicMethods": true
},
{
"condition": {
@@ -541,14 +560,7 @@
"typeReached": "sun.security.provider.SecureRandom"
},
"type": "sun.security.provider.SecureRandom",
- "methods": [
- {
- "name": "",
- "parameterTypes": [
- "java.security.SecureRandomParameters"
- ]
- }
- ]
+ "allPublicConstructors": true
},
{
"condition": {
@@ -564,7 +576,7 @@
"resources": [
{
"condition": {
- "typeReached": "org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader"
+ "typeReached": "org.apache.shardingsphere.database.connector.core.metadata.data.loader.MetaDataLoader"
},
"glob": "META-INF/services/org.apache.shardingsphere.*"
},
@@ -585,6 +597,12 @@
"typeReached": "javax.xml.parsers.FactoryFinder"
},
"glob": "META-INF/services/javax.xml.parsers.SAXParserFactory"
+ },
+ {
+ "condition": {
+ "typeReached": "java.net.spi.InetAddressResolverProvider"
+ },
+ "glob": "META-INF/services/java.net.spi.InetAddressResolverProvider"
}
],
"bundles": [
@@ -593,12 +611,6 @@
"typeReached": "org.opengauss.util.GT"
},
"name": "org.opengauss.translation.messages"
- },
- {
- "condition": {
- "typeReached": "org.postgresql.util.GT"
- },
- "name": "org.postgresql.translation.messages"
}
]
}
diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.testcontainers/testcontainers-junit-jupiter/2.0.1/reachability-metadata.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.testcontainers/testcontainers-junit-jupiter/2.0.1/reachability-metadata.json
new file mode 100644
index 0000000000000..4f8fdb5bb9487
--- /dev/null
+++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.testcontainers/testcontainers-junit-jupiter/2.0.1/reachability-metadata.json
@@ -0,0 +1,303 @@
+{
+ "reflection": [
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.jdbc.ContainerDatabaseDriver"
+ },
+ "type": "org.testcontainers.containers.ClickHouseProvider"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.jdbc.ContainerDatabaseDriver"
+ },
+ "type": "org.testcontainers.containers.MSSQLServerContainerProvider"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.jdbc.ContainerDatabaseDriver"
+ },
+ "type": "org.testcontainers.containers.PgVectorContainerProvider"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.jdbc.ContainerDatabaseDriver"
+ },
+ "type": "org.testcontainers.containers.PostgisContainerProvider"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.jdbc.ContainerDatabaseDriver"
+ },
+ "type": "org.testcontainers.containers.PostgreSQLContainerProvider"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.jdbc.ContainerDatabaseDriver"
+ },
+ "type": "org.testcontainers.containers.TimescaleDBContainerProvider"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.DockerClientFactory"
+ },
+ "type": "org.testcontainers.dockerclient.DockerDesktopClientProviderStrategy"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.DockerClientFactory"
+ },
+ "type": "org.testcontainers.dockerclient.DockerMachineClientProviderStrategy"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.DockerClientFactory"
+ },
+ "type": "org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.DockerClientFactory"
+ },
+ "type": "org.testcontainers.dockerclient.NpipeSocketClientProviderStrategy"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.dockerclient.DockerClientProviderStrategy"
+ },
+ "type": "org.testcontainers.dockerclient.NpipeSocketClientProviderStrategy",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.DockerClientFactory"
+ },
+ "type": "org.testcontainers.dockerclient.RootlessDockerClientProviderStrategy"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.DockerClientFactory"
+ },
+ "type": "org.testcontainers.dockerclient.TestcontainersHostPropertyClientProviderStrategy"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.DockerClientFactory"
+ },
+ "type": "org.testcontainers.dockerclient.UnixSocketClientProviderStrategy"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.fasterxml.jackson.databind.ext.Java7Support"
+ },
+ "type": "org.testcontainers.shaded.com.fasterxml.jackson.databind.ext.Java7SupportImpl"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.fasterxml.jackson.databind.util.ClassUtil"
+ },
+ "type": "org.testcontainers.shaded.com.fasterxml.jackson.databind.ext.Java7SupportImpl",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.dockerclient.DockerClientProviderStrategy"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.github.dockerjava.core.DefaultDockerClientConfig$Builder"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.DockerConfigFile"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.command.AbstrAsyncDockerCmd"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.containers.ExecInContainerPattern"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.command.AbstrDockerCmd"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.containers.Network$NetworkImpl"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.command.CreateNetworkCmdImpl"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.github.dockerjava.core.exec.CreateNetworkCmdExec"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.command.CreateNetworkCmdImpl",
+ "methods": [
+ {
+ "name": "getAttachable",
+ "parameterTypes": []
+ },
+ {
+ "name": "getCheckDuplicate",
+ "parameterTypes": []
+ },
+ {
+ "name": "getDriver",
+ "parameterTypes": []
+ },
+ {
+ "name": "getEnableIPv6",
+ "parameterTypes": []
+ },
+ {
+ "name": "getInternal",
+ "parameterTypes": []
+ },
+ {
+ "name": "getIpam",
+ "parameterTypes": []
+ },
+ {
+ "name": "getLabels",
+ "parameterTypes": []
+ },
+ {
+ "name": "getName",
+ "parameterTypes": []
+ },
+ {
+ "name": "getOptions",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.containers.ExecInContainerPattern"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.command.ExecCreateCmdImpl",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.github.dockerjava.core.command.ExecCreateCmdImpl"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.command.ExecCreateCmdImpl"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.github.dockerjava.core.exec.ExecCreateCmdExec"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.command.ExecCreateCmdImpl",
+ "methods": [
+ {
+ "name": "getContainerId",
+ "parameterTypes": []
+ },
+ {
+ "name": "getEnv",
+ "parameterTypes": []
+ },
+ {
+ "name": "getPrivileged",
+ "parameterTypes": []
+ },
+ {
+ "name": "getUser",
+ "parameterTypes": []
+ },
+ {
+ "name": "getWorkingDir",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder"
+ },
+ "type": "org.testcontainers.shaded.com.github.dockerjava.core.command.ExecStartCmdImpl",
+ "allDeclaredFields": true
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.containers.GenericContainer"
+ },
+ "type": "org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.org.awaitility.core.ConditionFactory"
+ },
+ "type": "org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
+ },
+ "type": "org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.org.hamcrest.TypeSafeMatcher"
+ },
+ "type": "org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.shaded.org.hamcrest.internal.ReflectiveTypeFinder"
+ },
+ "type": "org.testcontainers.shaded.org.awaitility.core.ConditionFactory$1"
+ }
+ ],
+ "resources": [
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.jdbc.ContainerDatabaseDriver"
+ },
+ "glob": "META-INF/services/org.testcontainers.**"
+ },
+ {
+ "condition": {
+ "typeReached": "org.testcontainers.utility.ClasspathScanner"
+ },
+ "glob": "testcontainers.properties"
+ }
+ ]
+}
diff --git a/pom.xml b/pom.xml
index 65f1a3486c749..f00b54ef3d9b0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,7 +82,7 @@
2.9.3
2.14.2
- 4.10.1
+ 4.13.2
2.2
2.10.1
2.16.1
@@ -124,7 +124,7 @@
2.2.224
3.1.0-og
2.4.2
- 0.6.3
+ 0.9.4
4.0.1
1.8.2
0.296
@@ -561,7 +561,7 @@
com.clickhouse
clickhouse-jdbc
${clickhouse-jdbc.version}
- http
+ all
test
diff --git a/test/e2e/operation/pipeline/pom.xml b/test/e2e/operation/pipeline/pom.xml
index 63f73b54dfae1..b8aa2ba43cc3b 100644
--- a/test/e2e/operation/pipeline/pom.xml
+++ b/test/e2e/operation/pipeline/pom.xml
@@ -164,7 +164,7 @@
org.testcontainers
- postgresql
+ testcontainers-postgresql
test
diff --git a/test/native/native-image-filter/extra-filter.json b/test/native/native-image-filter/extra-filter.json
index 074ec8da14751..f9bced562d18c 100644
--- a/test/native/native-image-filter/extra-filter.json
+++ b/test/native/native-image-filter/extra-filter.json
@@ -4,8 +4,6 @@
{"excludeClasses": "android.app.**"},
{"excludeClasses": "com.**"},
- {"includeClasses": "com.oracle.svm.core.**"},
- {"includeClasses": "com.sun.management.**"},
{"excludeClasses": "ch.qos.logback.**"},
{"excludeClasses": "groovy.**"},
{"excludeClasses": "io.**"},
@@ -14,11 +12,14 @@
{"excludeClasses": "libcore.io.**"},
{"excludeClasses": "net.bytebuddy.**"},
{"excludeClasses": "org.**"},
- {"includeClasses": "org.apache.shardingsphere.**"},
{"excludeClasses": "sun.**"},
- {"includeClasses": "sun.security.provider.SecureRandom"},
{"excludeClasses": "JdkLogger"},
+ {"includeClasses": "com.oracle.svm.core.**"},
+ {"includeClasses": "com.sun.management.**"},
+ {"includeClasses": "org.apache.shardingsphere.**"},
+ {"includeClasses": "sun.security.provider.SecureRandom"},
+
{"excludeClasses": "org.apache.shardingsphere.test.natived.**"}
],
"regexRules": [
diff --git a/test/native/pom.xml b/test/native/pom.xml
index 4867e65049d5b..9994b917328f4 100644
--- a/test/native/pom.xml
+++ b/test/native/pom.xml
@@ -96,7 +96,7 @@
com.clickhouse
clickhouse-jdbc
- http
+ all
test
@@ -118,22 +118,22 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
org.testcontainers
- postgresql
+ testcontainers-postgresql
test
org.testcontainers
- mssqlserver
+ testcontainers-mssqlserver
test
org.testcontainers
- clickhouse
+ testcontainers-clickhouse
test
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 3a2913247fa96..9c12cab20eff3 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
@@ -27,10 +27,10 @@
import javax.sql.DataSource;
import java.sql.SQLException;
-import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
+import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
@@ -68,63 +68,36 @@ public void processSuccess() throws SQLException {
}
/**
- * Process success in ClickHouse. ClickHouse JDBC Driver does not support the use of transactions.
+ * Process success in ClickHouse.
+ * ClickHouse JDBC Driver does not support the use of transactions.
+ * Databases like ClickHouse do not support returning auto generated keys after executing SQL,
+ * see ClickHouse/ClickHouse#56228 .
+ * TODO The current ShardingSphere parsing of ClickHouse's `INNER JOIN` syntax has shortcomings,
+ * and it returns incorrect query results for SQL statements such as `SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id`.
*
* @throws SQLException An exception that provides information on a database access error or other errors
*/
public void processSuccessInClickHouse() throws SQLException {
- Collection orderIds = insertData(Statement.NO_GENERATED_KEYS);
- assertQueryInClickHouse();
+ Collection orderIds = insertDataWithoutGeneratedKeys();
+ assertQueryLoose();
deleteDataInClickHouse(orderIds);
assertTrue(orderRepository.selectAll().isEmpty());
assertTrue(orderItemRepository.selectAll().isEmpty());
assertTrue(addressRepository.selectAll().isEmpty());
}
- private void assertQueryInClickHouse() throws SQLException {
- Collection orders = orderRepository.selectAll();
- assertThat(orders.stream().map(Order::getOrderId).collect(Collectors.toList()), not(empty()));
- assertThat(orders.stream().map(Order::getOrderType).collect(Collectors.toList()),
- containsInAnyOrder(0, 1, 0, 1, 0, 1, 0, 1, 0, 1));
- assertThat(orders.stream().map(Order::getUserId).collect(Collectors.toList()),
- containsInAnyOrder(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
- assertThat(orders.stream().map(Order::getAddressId).collect(Collectors.toList()),
- containsInAnyOrder(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L));
- assertThat(orders.stream().map(Order::getStatus).collect(Collectors.toList()),
- is(IntStream.range(1, 11).mapToObj(i -> "INSERT_TEST").collect(Collectors.toList())));
- Collection orderItems = orderItemRepository.selectAll();
- assertThat(orderItems.stream().map(OrderItem::getOrderItemId).collect(Collectors.toList()), not(empty()));
- assertThat(orderItems.stream().map(OrderItem::getOrderId).collect(Collectors.toList()), not(empty()));
- assertThat(orderItems.stream().map(OrderItem::getUserId).collect(Collectors.toList()),
- containsInAnyOrder(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
- assertThat(orderItems.stream().map(OrderItem::getPhone).collect(Collectors.toList()),
- is(IntStream.range(1, 11).mapToObj(i -> "13800000001").collect(Collectors.toList())));
- assertThat(orderItems.stream().map(OrderItem::getStatus).collect(Collectors.toList()),
- is(IntStream.range(1, 11).mapToObj(i -> "INSERT_TEST").collect(Collectors.toList())));
- assertThat(new HashSet<>(addressRepository.selectAll()),
- is(LongStream.range(1L, 11L).mapToObj(each -> new Address(each, "address_test_" + each)).collect(Collectors.toSet())));
- }
-
- private void deleteDataInClickHouse(final Collection orderIds) throws SQLException {
- long count = 1L;
- for (Long each : orderIds) {
- orderRepository.deleteInClickHouse(each);
- orderItemRepository.deleteInClickHouse(each);
- addressRepository.deleteInClickHouse(count++);
- }
- }
-
/**
* Process success in Hive.
* Hive has not fully supported BEGIN, COMMIT, and ROLLBACK. Refer to Hive Transactions.
* So ShardingSphere should not use {@link OrderItemRepository#assertRollbackWithTransactions()}
- * TODO It looks like HiveServer2 insert statements are inserted out of order. Waiting for further investigation.
- * The result of the insert is not currently asserted.
+ * TODO The current ShardingSphere parsing of HiveServer2's `INNER JOIN` syntax has shortcomings,
+ * and it returns incorrect query results for SQL statements such as `SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id`.
*
* @throws SQLException An exception that provides information on a database access error or other errors
*/
public void processSuccessInHive() throws SQLException {
- Collection orderIds = insertData(Statement.RETURN_GENERATED_KEYS);
+ Collection orderIds = insertData();
+ assertQueryLoose();
deleteData(orderIds);
assertTrue(orderRepository.selectAll().isEmpty());
assertTrue(orderItemRepository.selectAll().isEmpty());
@@ -142,22 +115,71 @@ public void processSuccessInHive() throws SQLException {
* @throws SQLException SQL exception
*/
public void processSuccessWithoutTransactions() throws SQLException {
- Collection orderIds = insertData(Statement.RETURN_GENERATED_KEYS);
- assertQueryInClickHouse();
+ Collection orderIds = insertData();
+ assertQuery();
deleteData(orderIds);
assertTrue(orderRepository.selectAll().isEmpty());
assertTrue(orderItemRepository.selectAll().isEmpty());
assertTrue(addressRepository.selectAll().isEmpty());
}
+ private void assertQuery() throws SQLException {
+ assertQueryInTOrder();
+ assertQueryInTOrderItem(orderItemRepository.selectAll());
+ assertQueryInTAddress();
+ }
+
+ private void assertQueryLoose() throws SQLException {
+ assertQueryInTOrder();
+ assertQueryInTOrderItem(orderItemRepository.selectAllLoose());
+ assertQueryInTAddress();
+ }
+
+ private void assertQueryInTOrder() throws SQLException {
+ List orders = orderRepository.selectAll();
+ assertThat(orders.stream().map(Order::getOrderId).collect(Collectors.toList()), not(empty()));
+ assertThat(orders.stream().map(Order::getOrderType).collect(Collectors.toList()),
+ containsInAnyOrder(0, 1, 0, 1, 0, 1, 0, 1, 0, 1));
+ assertThat(orders.stream().map(Order::getUserId).collect(Collectors.toList()),
+ containsInAnyOrder(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
+ assertThat(orders.stream().map(Order::getAddressId).collect(Collectors.toList()),
+ containsInAnyOrder(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L));
+ assertThat(orders.stream().map(Order::getStatus).collect(Collectors.toList()),
+ is(IntStream.range(1, 11).mapToObj(i -> "INSERT_TEST").collect(Collectors.toList())));
+ }
+
+ private void assertQueryInTOrderItem(final List orderItems) {
+ assertThat(orderItems.stream().map(OrderItem::getOrderItemId).collect(Collectors.toList()), not(empty()));
+ assertThat(orderItems.stream().map(OrderItem::getOrderId).collect(Collectors.toList()), not(empty()));
+ assertThat(orderItems.stream().map(OrderItem::getUserId).collect(Collectors.toList()),
+ containsInAnyOrder(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
+ assertThat(orderItems.stream().map(OrderItem::getPhone).collect(Collectors.toList()),
+ is(IntStream.range(1, 11).mapToObj(i -> "13800000001").collect(Collectors.toList())));
+ assertThat(orderItems.stream().map(OrderItem::getStatus).collect(Collectors.toList()),
+ is(IntStream.range(1, 11).mapToObj(i -> "INSERT_TEST").collect(Collectors.toList())));
+ }
+
+ private void assertQueryInTAddress() throws SQLException {
+ assertThat(new HashSet<>(addressRepository.selectAll()),
+ is(LongStream.range(1L, 11L).mapToObj(each -> new Address(each, "address_test_" + each)).collect(Collectors.toSet())));
+ }
+
+ private void deleteDataInClickHouse(final Collection orderIds) throws SQLException {
+ long count = 1L;
+ for (Long each : orderIds) {
+ orderRepository.deleteInClickHouse(each);
+ orderItemRepository.deleteInClickHouse(each);
+ addressRepository.deleteInClickHouse(count++);
+ }
+ }
+
/**
* Insert data.
*
- * @param autoGeneratedKeys a flag indicating whether auto-generated keys should be returned; one of {@code Statement.RETURN_GENERATED_KEYS} or {@code Statement.NO_GENERATED_KEYS}
* @return orderId of the insert statement
* @throws SQLException An exception that provides information on a database access error or other errors
*/
- public Collection insertData(final int autoGeneratedKeys) throws SQLException {
+ public Collection insertData() throws SQLException {
Collection result = new ArrayList<>(10);
for (int i = 1; i <= 10; i++) {
Order order = new Order();
@@ -165,13 +187,13 @@ public Collection insertData(final int autoGeneratedKeys) throws SQLExcept
order.setOrderType(i % 2);
order.setAddressId(i);
order.setStatus("INSERT_TEST");
- orderRepository.insert(order, autoGeneratedKeys);
+ orderRepository.insert(order);
OrderItem orderItem = new OrderItem();
orderItem.setOrderId(order.getOrderId());
orderItem.setUserId(i);
orderItem.setPhone("13800000001");
orderItem.setStatus("INSERT_TEST");
- orderItemRepository.insert(orderItem, autoGeneratedKeys);
+ orderItemRepository.insert(orderItem);
Address address = new Address((long) i, "address_test_" + i);
addressRepository.insert(address);
result.add(order.getOrderId());
@@ -179,6 +201,35 @@ public Collection insertData(final int autoGeneratedKeys) throws SQLExcept
return result;
}
+ /**
+ * Insert data without generated keys.
+ *
+ * @return orderId of the insert statement
+ * @throws SQLException An exception that provides information on a database access error or other errors
+ */
+ public Collection insertDataWithoutGeneratedKeys() throws SQLException {
+ for (int i = 1; i <= 10; i++) {
+ Order order = new Order();
+ order.setUserId(i);
+ order.setOrderType(i % 2);
+ order.setAddressId(i);
+ order.setStatus("INSERT_TEST");
+ orderRepository.insertWithoutGeneratedKeys(order);
+ Address address = new Address((long) i, "address_test_" + i);
+ addressRepository.insert(address);
+ }
+ List result = orderRepository.selectAll().stream().map(Order::getOrderId).collect(Collectors.toList());
+ for (int i = 1; i <= 10; i++) {
+ OrderItem orderItem = new OrderItem();
+ orderItem.setOrderId(result.get(i - 1));
+ orderItem.setUserId(i);
+ orderItem.setPhone("13800000001");
+ orderItem.setStatus("INSERT_TEST");
+ orderItemRepository.insertWithoutGeneratedKeys(orderItem);
+ }
+ return result;
+ }
+
/**
* Delete data.
*
@@ -206,7 +257,7 @@ public void cleanEnvironment() throws SQLException {
}
/**
- * Clean environment in Firebird.
+ * Clean environment in Firebird. See FirebirdSQL/firebird#4203.
*
* @throws SQLException An exception that provides information on a database access error or other errors
*/
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 eb5859e035bd8..f55c50726964e 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
@@ -231,24 +231,10 @@ public void truncateTableShadow() throws SQLException {
* @throws SQLException SQL Exception
*/
public Long insert(final OrderItem orderItem) throws SQLException {
- return insert(orderItem, Statement.RETURN_GENERATED_KEYS);
- }
-
- /**
- * insert OrderItem to table. Databases like ClickHouse do not support returning auto generated keys after executing SQL,
- * see ClickHouse/ClickHouse#56228 .
- *
- * @param orderItem orderItem
- * @param autoGeneratedKeys a flag indicating whether auto-generated keys should be returned; one of {@code Statement.RETURN_GENERATED_KEYS} or {@code Statement.NO_GENERATED_KEYS}
- * @return orderItemId of the insert statement
- * @throws SQLException SQL exception
- */
- @SuppressWarnings("MagicConstant")
- public Long insert(final OrderItem orderItem, final int autoGeneratedKeys) throws SQLException {
String sql = "INSERT INTO t_order_item (order_id, user_id, phone, status) VALUES (?, ?, ?, ?)";
try (
Connection connection = dataSource.getConnection();
- PreparedStatement preparedStatement = connection.prepareStatement(sql, autoGeneratedKeys)) {
+ PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
preparedStatement.setLong(1, orderItem.getOrderId());
preparedStatement.setInt(2, orderItem.getUserId());
preparedStatement.setString(3, orderItem.getPhone());
@@ -263,6 +249,27 @@ public Long insert(final OrderItem orderItem, final int autoGeneratedKeys) throw
return orderItem.getOrderItemId();
}
+ /**
+ * insert OrderItem to table without generated keys.
+ *
+ * @param orderItem order item
+ * @throws RuntimeException Runtime exception
+ */
+ public void insertWithoutGeneratedKeys(final OrderItem orderItem) {
+ String sql = "INSERT INTO t_order_item (order_id, user_id, phone, status) VALUES (?, ?, ?, ?)";
+ try (
+ Connection connection = dataSource.getConnection();
+ PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
+ preparedStatement.setLong(1, orderItem.getOrderId());
+ preparedStatement.setInt(2, orderItem.getUserId());
+ preparedStatement.setString(3, orderItem.getPhone());
+ preparedStatement.setString(4, orderItem.getStatus());
+ preparedStatement.executeUpdate();
+ } catch (final SQLException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
/**
* delete by orderItemId.
*
@@ -321,6 +328,31 @@ public List selectAll() throws SQLException {
return result;
}
+ /**
+ * select all loose. This is primarily in contrast to {@link OrderItemRepository#selectAll()}.
+ *
+ * @return order items
+ * @throws SQLException SQL exception
+ */
+ public List selectAllLoose() throws SQLException {
+ List result = new LinkedList<>();
+ try (
+ Connection connection = dataSource.getConnection();
+ PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM t_order_item");
+ ResultSet resultSet = preparedStatement.executeQuery()) {
+ while (resultSet.next()) {
+ OrderItem orderItem = new OrderItem();
+ orderItem.setOrderItemId(resultSet.getLong(1));
+ orderItem.setOrderId(resultSet.getLong(2));
+ orderItem.setUserId(resultSet.getInt(3));
+ orderItem.setPhone(resultSet.getString(4));
+ orderItem.setStatus(resultSet.getString(5));
+ result.add(orderItem);
+ }
+ }
+ return result;
+ }
+
/**
* Assert rollback with transactions.
* This is currently just a simple test against a non-existent table {@code t_order_item_does_not_exist}
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 0e6c661c9b2d2..862b469965f3d 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
@@ -254,37 +254,41 @@ public void deleteShadow(final Long orderId) throws SQLException {
* @throws SQLException SQL Exception
*/
public Long insert(final Order order) throws SQLException {
- return insert(order, Statement.RETURN_GENERATED_KEYS);
+ String sql = "INSERT INTO t_order (user_id, order_type, address_id, status) VALUES (?, ?, ?, ?)";
+ try (
+ Connection connection = dataSource.getConnection();
+ PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
+ preparedStatement.setInt(1, order.getUserId());
+ preparedStatement.setInt(2, order.getOrderType());
+ preparedStatement.setLong(3, order.getAddressId());
+ preparedStatement.setString(4, order.getStatus());
+ preparedStatement.executeUpdate();
+ try (ResultSet resultSet = preparedStatement.getGeneratedKeys()) {
+ if (resultSet.next()) {
+ order.setOrderId(resultSet.getLong(1));
+ }
+ }
+ }
+ return order.getOrderId();
}
/**
- * Insert Order to table.
- * Databases like ClickHouse do not support returning auto generated keys after executing SQL,
- * see ClickHouse/ClickHouse#56228 .
+ * Insert Order to table without generated keys.
*
* @param order order
- * @param autoGeneratedKeys a flag indicating whether auto-generated keys should be returned; one of {@link Statement#RETURN_GENERATED_KEYS} or {@link Statement#NO_GENERATED_KEYS}
- * @return order ID of the insert statement
* @throws SQLException SQL Exception
*/
- @SuppressWarnings("MagicConstant")
- public Long insert(final Order order, final int autoGeneratedKeys) throws SQLException {
+ public void insertWithoutGeneratedKeys(final Order order) throws SQLException {
String sql = "INSERT INTO t_order (user_id, order_type, address_id, status) VALUES (?, ?, ?, ?)";
try (
Connection connection = dataSource.getConnection();
- PreparedStatement preparedStatement = connection.prepareStatement(sql, autoGeneratedKeys)) {
+ PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
preparedStatement.setInt(1, order.getUserId());
preparedStatement.setInt(2, order.getOrderType());
preparedStatement.setLong(3, order.getAddressId());
preparedStatement.setString(4, order.getStatus());
preparedStatement.executeUpdate();
- try (ResultSet resultSet = preparedStatement.getGeneratedKeys()) {
- if (resultSet.next()) {
- order.setOrderId(resultSet.getLong(1));
- }
- }
}
- return order.getOrderId();
}
/**
diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/SQLServerTest.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/SQLServerTest.java
index 512049999bd83..8fa8d6ebde04d 100644
--- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/SQLServerTest.java
+++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/SQLServerTest.java
@@ -22,15 +22,12 @@
import org.apache.shardingsphere.test.natived.commons.TestShardingService;
import org.apache.shardingsphere.test.natived.commons.util.ResourceUtils;
import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledInNativeImage;
import org.testcontainers.jdbc.ContainerDatabaseDriver;
import javax.sql.DataSource;
import java.sql.SQLException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
@EnabledInNativeImage
class SQLServerTest {
@@ -39,15 +36,6 @@ class SQLServerTest {
private TestShardingService testShardingService;
- /**
- * Related to testcontainers/testcontainers-java#3079
- * and {@link com.microsoft.sqlserver.jdbc.SQLServerConnection}.
- */
- @BeforeEach
- void beforeEach() {
- Logger.getLogger("com.microsoft.sqlserver.jdbc.internals.SQLServerConnection").setLevel(Level.SEVERE);
- }
-
@AfterEach
void afterEach() throws SQLException {
ResourceUtils.closeJdbcDataSource(logicDataSource);
diff --git a/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native/reachability-metadata.json b/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native/reachability-metadata.json
index f775cf3df0a26..be2c5d146f341 100644
--- a/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native/reachability-metadata.json
+++ b/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native/reachability-metadata.json
@@ -286,7 +286,7 @@
},
{
"condition": {
- "typeReached": "org.apache.shardingsphere.infra.url.classpath.ClassPathLocalFileURLLoader"
+ "typeReached": "org.testcontainers.jdbc.ContainerDatabaseDriver"
},
"glob": "test-native/sql/**/*.sql"
},
diff --git a/test/native/src/test/resources/test-native/sql/clickhouse-init.sql b/test/native/src/test/resources/test-native/sql/clickhouse-init.sql
index 63222b527380b..c290a3a08af30 100644
--- a/test/native/src/test/resources/test-native/sql/clickhouse-init.sql
+++ b/test/native/src/test/resources/test-native/sql/clickhouse-init.sql
@@ -36,7 +36,7 @@ create table IF NOT EXISTS t_order_item (
primary key (order_item_id)
order by (order_item_id);
CREATE TABLE IF NOT EXISTS t_address (
- address_id BIGINT NOT NULL,
+ address_id Int64 NOT NULL,
address_name VARCHAR(100) NOT NULL,
PRIMARY KEY (address_id)
);
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 44127a2162303..9f86d3b58e00c 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
@@ -19,15 +19,15 @@ dataSources:
ds_0:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: org.testcontainers.jdbc.ContainerDatabaseDriver
- jdbcUrl: jdbc:tc:clickhouse:25.9.6.117:///demo_ds_0?TC_INITSCRIPT=test-native/sql/clickhouse-init.sql
+ jdbcUrl: jdbc:tc:clickhouse:25.10.3.100:///demo_ds_0?TC_INITSCRIPT=test-native/sql/clickhouse-init.sql
ds_1:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: org.testcontainers.jdbc.ContainerDatabaseDriver
- jdbcUrl: jdbc:tc:clickhouse:25.9.6.117:///demo_ds_1?TC_INITSCRIPT=test-native/sql/clickhouse-init.sql
+ jdbcUrl: jdbc:tc:clickhouse:25.10.3.100:///demo_ds_1?TC_INITSCRIPT=test-native/sql/clickhouse-init.sql
ds_2:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: org.testcontainers.jdbc.ContainerDatabaseDriver
- jdbcUrl: jdbc:tc:clickhouse:25.9.6.117:///demo_ds_2?TC_INITSCRIPT=test-native/sql/clickhouse-init.sql
+ jdbcUrl: jdbc:tc:clickhouse:25.10.3.100:///demo_ds_2?TC_INITSCRIPT=test-native/sql/clickhouse-init.sql
rules:
- !SHARDING
diff --git a/test/pom.xml b/test/pom.xml
index cc3c00bfbb56c..4851422f2e1fa 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -36,7 +36,7 @@
2.3.9
- 1.21.3
+ 2.0.1
true