This is an automated email from the ASF dual-hosted git repository.
jianbin pushed a commit to branch 2.6.0
in repository https://gitbox.apache.org/repos/asf/incubator-seata.git
The following commit(s) were added to refs/heads/2.6.0 by this push:
new fdbbbee6d4 test: oscar test cases should only run on Druid 1.2.5 and
higher versions (#7933)
fdbbbee6d4 is described below
commit fdbbbee6d424ebeb6a1c747a72ea4c69edbac386
Author: funkye <[email protected]>
AuthorDate: Thu Jan 15 09:38:02 2026 +0800
test: oscar test cases should only run on Druid 1.2.5 and higher versions
(#7933)
---
.github/workflows/test-druid.yml | 48 ++++++-----
changes/en-us/2.6.0.md | 1 +
changes/zh-cn/2.6.0.md | 1 +
.../http/JakartaSeataWebMvcConfigurer.java | 3 +-
.../rm/datasource/xa/DataSourceProxyXATest.java | 11 +--
dependencies/pom.xml | 6 ++
.../rm/datasource/PreparedStatementProxyTest.java | 10 +--
.../seata/rm/datasource/StatementProxyTest.java | 11 +--
.../rm/datasource/exec/DeleteExecutorTest.java | 92 +++++++++++-----------
.../rm/datasource/exec/MultiExecutorTest.java | 6 +-
.../datasource/exec/MySQLInsertExecutorTest.java | 8 +-
.../rm/datasource/exec/PlainExecutorTest.java | 6 +-
.../exec/SelectForUpdateExecutorTest.java | 6 +-
.../rm/datasource/exec/UpdateExecutorTest.java | 6 +-
.../rm/datasource/exec/UpdateJoinExecutorTest.java | 6 +-
.../rm/datasource/mock/MockExecuteHandlerImpl.java | 11 +--
.../rm/datasource/sql/struct/TableRecordsTest.java | 6 +-
.../datasource/undo/dm/DmUndoLogManagerTest.java | 6 +-
.../undo/kingbase/KingbaseUndoLogManagerTest.java | 6 +-
.../undo/mariadb/MariadbUndoLogManagerTest.java | 6 +-
.../undo/mysql/MySQLUndoLogManagerTest.java | 6 +-
.../undo/oracle/OracleUndoLogManagerTest.java | 6 +-
.../undo/oscar/OscarUndoLogManagerTest.java | 11 +--
.../undo/polardbx/PolarDBXUndoLogManagerTest.java | 6 +-
.../postgresql/PostgresqlUndoLogManagerTest.java | 6 +-
.../rm/datasource/xa/DataSourceProxyXATest.java | 5 +-
.../autoconfigure/SeataHttpAutoConfiguration.java | 2 +-
.../SeataHttpAutoConfigurationTest.java | 2 +-
sqlparser/seata-sqlparser-druid/pom.xml | 5 +-
.../druid/DruidSQLRecognizerFactoryTest.java | 23 ++++++
30 files changed, 139 insertions(+), 189 deletions(-)
diff --git a/.github/workflows/test-druid.yml b/.github/workflows/test-druid.yml
index 89dd39ed02..ff92270313 100644
--- a/.github/workflows/test-druid.yml
+++ b/.github/workflows/test-druid.yml
@@ -46,28 +46,29 @@ jobs:
# 1.2.24, #The source code depends on guava, resulting in a class not
found, see the commit
https://github.com/alibaba/druid/commit/f060c2701587948380bd0d07d5baf4f774c06e8a#diff-5200f514252efbc0c4b2dc51ebad5d840b4b3065b9556eb4368bd3476d4c220eR25
1.2.23,
1.2.22,
- 1.2.21,
- 1.2.20,
- 1.2.19,
- #1.2.18, # Unit test triggered a bug in Druid, see the commit
https://github.com/alibaba/druid/commit/6c493f852852fb287ed5fd31ee16c27ead0ea5cf
- #1.2.17, # Unit test triggered a bug in Druid, see the commit
https://github.com/alibaba/druid/commit/6c493f852852fb287ed5fd31ee16c27ead0ea5cf
- 1.2.16,
- 1.2.15,
- 1.2.14,
- 1.2.13,
- 1.2.12,
- 1.2.11,
- 1.2.10,
- 1.2.9,
- 1.2.8,
- 1.2.7,
- 1.2.6,
- 1.2.5,
- 1.2.4,
- 1.2.3,
- 1.2.2,
- 1.2.1,
- 1.2.0,
+ 1.2.21
+# not support druid:1.2.20
+# 1.2.20,
+# 1.2.19,
+# #1.2.18, # Unit test triggered a bug in Druid, see the commit
https://github.com/alibaba/druid/commit/6c493f852852fb287ed5fd31ee16c27ead0ea5cf
+# #1.2.17, # Unit test triggered a bug in Druid, see the commit
https://github.com/alibaba/druid/commit/6c493f852852fb287ed5fd31ee16c27ead0ea5cf
+# 1.2.16,
+# 1.2.15,
+# 1.2.14,
+# 1.2.13,
+# 1.2.12,
+# 1.2.11,
+# 1.2.10,
+# 1.2.9,
+# 1.2.8,
+# 1.2.7,
+# 1.2.6,
+# 1.2.5,
+# 1.2.4,
+# 1.2.3,
+# 1.2.2,
+# 1.2.1,
+# 1.2.0,
# not support druid:1.1.x
#1.1.24,
@@ -92,9 +93,6 @@ jobs:
# step 4
- name: "Test with Maven and Druid ${{ matrix.druid }}"
run: |
- if [ "${{ matrix.druid }}" = "1.2.12" ]; then
- export skip.druid.tests=false;
- fi
./mvnw -T 4C clean test \
-Ddruid.version=${{ matrix.druid }} \
-e -B
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
diff --git a/changes/en-us/2.6.0.md b/changes/en-us/2.6.0.md
index 1a10fd3a7e..44f87e5714 100644
--- a/changes/en-us/2.6.0.md
+++ b/changes/en-us/2.6.0.md
@@ -183,6 +183,7 @@ Add changes here for all PR submitted to the 2.x branch.
- [[#7906](https://github.com/apache/incubator-seata/pull/7906)] add test for
Fury/Fory
- [[#7907](https://github.com/apache/incubator-seata/pull/7907)] test: fixes
CI errors caused by timing issues in ZkConfigurationTest
- [[#7912](https://github.com/apache/incubator-seata/pull/7912)] test: add
Antlr tests to improve test coverage
+- [[#7933](https://github.com/apache/incubator-seata/pull/7933)] oscar test
cases should only run on Druid 1.2.5 and higher versions
### refactor:
diff --git a/changes/zh-cn/2.6.0.md b/changes/zh-cn/2.6.0.md
index 62c09278b1..bcd201d845 100644
--- a/changes/zh-cn/2.6.0.md
+++ b/changes/zh-cn/2.6.0.md
@@ -183,6 +183,7 @@
- [[#7906](https://github.com/apache/incubator-seata/pull/7906)] Fury/Fory
增加单元测试
- [[#7907](https://github.com/apache/incubator-seata/pull/7907)] test:
修复ZkConfigurationTest的时序问题导致的ci错误
- [[#7912](https://github.com/apache/incubator-seata/pull/7912)] test: 添加
Antlr 测试以提高测试覆盖率
+- [[#7933](https://github.com/apache/incubator-seata/pull/7933)]
oscar数据库测试用例仅运行在druid大于等于1.2.5版本
### refactor:
diff --git
a/compatible/src/main/java/io/seata/integration/http/JakartaSeataWebMvcConfigurer.java
b/compatible/src/main/java/io/seata/integration/http/JakartaSeataWebMvcConfigurer.java
index da4f88c545..41dda54cb2 100644
---
a/compatible/src/main/java/io/seata/integration/http/JakartaSeataWebMvcConfigurer.java
+++
b/compatible/src/main/java/io/seata/integration/http/JakartaSeataWebMvcConfigurer.java
@@ -20,5 +20,4 @@ package io.seata.integration.http;
* The type Jakarta seata web mvc configurer.
*/
@Deprecated
-public class JakartaSeataWebMvcConfigurer
- extends org.apache.seata.integration.http.JakartaSeataWebMvcConfigurer
{}
+public class JakartaSeataWebMvcConfigurer extends
org.apache.seata.integration.http.JakartaSeataWebMvcConfigurer {}
diff --git
a/compatible/src/test/java/io/seata/rm/datasource/xa/DataSourceProxyXATest.java
b/compatible/src/test/java/io/seata/rm/datasource/xa/DataSourceProxyXATest.java
index 3a9b84c7a7..10a705460b 100644
---
a/compatible/src/test/java/io/seata/rm/datasource/xa/DataSourceProxyXATest.java
+++
b/compatible/src/test/java/io/seata/rm/datasource/xa/DataSourceProxyXATest.java
@@ -17,7 +17,6 @@
package io.seata.rm.datasource.xa;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.mysql.jdbc.JDBC4MySQLConnection;
import com.mysql.jdbc.jdbc2.optional.JDBC4ConnectionWrapper;
import io.seata.core.context.RootContext;
@@ -80,10 +79,7 @@ public class DataSourceProxyXATest {
Connection wrappedConnection =
connectionProxyXA.getWrappedConnection();
Assertions.assertTrue(wrappedConnection instanceof PooledConnection);
- Connection wrappedPhysicalConn = ((PooledConnection)
wrappedConnection).getConnection();
- if (wrappedPhysicalConn instanceof DruidStatementConnection) {
- wrappedPhysicalConn = ((DruidStatementConnection)
wrappedPhysicalConn).getConnection();
- }
+ Connection wrappedPhysicalConn =
wrappedConnection.unwrap(Connection.class);
Assertions.assertSame(wrappedPhysicalConn, connection);
XAConnection xaConnection = connectionProxyXA.getWrappedXAConnection();
@@ -120,10 +116,7 @@ public class DataSourceProxyXATest {
Connection wrappedConnection =
connectionProxyXA.getWrappedConnection();
Assertions.assertTrue(wrappedConnection instanceof PooledConnection);
- Connection wrappedPhysicalConn = ((PooledConnection)
wrappedConnection).getConnection();
- if (wrappedPhysicalConn instanceof DruidStatementConnection) {
- wrappedPhysicalConn = ((DruidStatementConnection)
wrappedPhysicalConn).getConnection();
- }
+ Connection wrappedPhysicalConn =
wrappedConnection.unwrap(Connection.class);
Assertions.assertSame(wrappedPhysicalConn, connection);
XAConnection xaConnection = connectionProxyXA.getWrappedXAConnection();
diff --git a/dependencies/pom.xml b/dependencies/pom.xml
index 09f8d431ee..1747087fff 100644
--- a/dependencies/pom.xml
+++ b/dependencies/pom.xml
@@ -257,6 +257,12 @@
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/PreparedStatementProxyTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/PreparedStatementProxyTest.java
index bc391dd6c1..b4393c5e3f 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/PreparedStatementProxyTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/PreparedStatementProxyTest.java
@@ -21,7 +21,6 @@ import com.alibaba.druid.mock.MockNClob;
import com.alibaba.druid.mock.MockRef;
import com.alibaba.druid.mock.MockSQLXML;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import org.apache.seata.common.loader.EnhancedServiceLoader;
import org.apache.seata.rm.datasource.mock.MockBlob;
@@ -130,9 +129,7 @@ public class PreparedStatementProxyTest {
String sql = "update prepared_statement_proxy set name = ?";
Connection targetConnection = connectionProxy.getTargetConnection();
- if (targetConnection instanceof DruidStatementConnection) {
- targetConnection = ((DruidStatementConnection)
targetConnection).getConnection();
- }
+ targetConnection = targetConnection.unwrap(Connection.class);
PreparedStatement preparedStatement =
mockDriver.createSeataMockPreparedStatement((MockConnection)
targetConnection, sql);
@@ -150,10 +147,7 @@ public class PreparedStatementProxyTest {
private static Connection getPhysicsConnection(DruidDataSource dataSource)
throws SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/StatementProxyTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/StatementProxyTest.java
index f4c965a7b4..58d181505b 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/StatementProxyTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/StatementProxyTest.java
@@ -19,7 +19,6 @@ package org.apache.seata.rm.datasource;
import com.alibaba.druid.mock.MockResultSet;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.alibaba.druid.util.jdbc.ResultSetMetaDataBase;
import com.google.common.collect.Lists;
import org.apache.seata.common.loader.EnhancedServiceLoader;
@@ -115,10 +114,7 @@ public class StatementProxyTest {
ConnectionProxy connectionProxy = new ConnectionProxy(dataSourceProxy,
getPhysicsConnection(dataSource));
- Connection targetConnection = connectionProxy.getTargetConnection();
- if (targetConnection instanceof DruidStatementConnection) {
- targetConnection = ((DruidStatementConnection)
targetConnection).getConnection();
- }
+ Connection targetConnection =
connectionProxy.getTargetConnection().unwrap(Connection.class);
Statement statement = mockDriver.createMockStatement((MockConnection)
targetConnection);
@@ -139,10 +135,7 @@ public class StatementProxyTest {
private static Connection getPhysicsConnection(DruidDataSource dataSource)
throws SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@AfterEach
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/DeleteExecutorTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/DeleteExecutorTest.java
index 360085267d..0fc0714c28 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/DeleteExecutorTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/DeleteExecutorTest.java
@@ -19,9 +19,6 @@ package org.apache.seata.rm.datasource.exec;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.mock.MockStatementBase;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
-import com.alibaba.druid.sql.SQLUtils;
-import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.util.JdbcConstants;
import com.google.common.collect.Lists;
import org.apache.seata.rm.datasource.ConnectionProxy;
@@ -29,8 +26,8 @@ import org.apache.seata.rm.datasource.DataSourceProxy;
import org.apache.seata.rm.datasource.DataSourceProxyTest;
import org.apache.seata.rm.datasource.StatementProxy;
import org.apache.seata.rm.datasource.mock.MockDriver;
+import org.apache.seata.rm.datasource.sql.SQLVisitorFactory;
import org.apache.seata.rm.datasource.sql.struct.TableRecords;
-import org.apache.seata.sqlparser.druid.mysql.MySQLDeleteRecognizer;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -117,30 +114,26 @@ public class DeleteExecutorTest {
throw new RuntimeException("init failed");
}
String sql = "delete from table_delete_executor_test where id = 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
deleteExecutor = new DeleteExecutor(
statementProxy,
(statement, args) -> {
return null;
},
- recognizer);
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
}
private static Connection getPhysicsConnection(DruidDataSource dataSource)
throws SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
public void testBeforeAndAfterImage() throws SQLException {
String sql = "delete from table_delete_executor_test";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -151,9 +144,10 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithTableAlias() throws SQLException {
String sql = "delete from table_delete_executor_test t where t.id = 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -164,9 +158,10 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithTableSchema() throws SQLException {
String sql = "delete from seata.table_delete_executor_test where id =
1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -177,9 +172,10 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithTableSchemaAndTableAlias() throws
SQLException {
String sql = "delete from seata.table_delete_executor_test t where
t.id = 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -190,9 +186,10 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithTableSchemaQuote() throws
SQLException {
String sql = "delete from `seata`.table_delete_executor_test where id
= 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -203,9 +200,10 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithTableSchemaAndTableNameQuote()
throws SQLException {
String sql = "delete from seata.`table_delete_executor_test` where id
= 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -216,9 +214,10 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithTableSchemaQuoteAndTableNameQuote()
throws SQLException {
String sql = "delete from `seata`.`table_delete_executor_test` where
id = 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -229,9 +228,10 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithColumnQuote() throws SQLException {
String sql = "delete from table_delete_executor_test where `id` = 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -242,9 +242,10 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithUpperColumn() throws SQLException {
String sql = "delete from table_delete_executor_test where ID = 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -255,9 +256,11 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithTableAliasAndUpperColumn() throws
SQLException {
String sql = "delete from table_delete_executor_test t where t.ID = 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
@@ -268,9 +271,10 @@ public class DeleteExecutorTest {
@Test
public void testBeforeAndAfterImageWithKeyword() throws SQLException {
String sql = "delete from table_delete_executor_test where `or` = 1";
- List<SQLStatement> asts = SQLUtils.parseStatements(sql,
JdbcConstants.MYSQL);
- MySQLDeleteRecognizer recognizer = new MySQLDeleteRecognizer(sql,
asts.get(0));
- deleteExecutor = new DeleteExecutor(statementProxy, (statement, args)
-> null, recognizer);
+ deleteExecutor = new DeleteExecutor(
+ statementProxy,
+ (statement, args) -> null,
+ SQLVisitorFactory.get(sql, JdbcConstants.MYSQL.name()).get(0));
TableRecords beforeImage = deleteExecutor.beforeImage();
TableRecords afterImage = deleteExecutor.afterImage(beforeImage);
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/MultiExecutorTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/MultiExecutorTest.java
index 1709e39cca..2201e86bd4 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/MultiExecutorTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/MultiExecutorTest.java
@@ -19,7 +19,6 @@ package org.apache.seata.rm.datasource.exec;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.mock.MockStatementBase;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import org.apache.seata.common.exception.NotSupportYetException;
import org.apache.seata.rm.datasource.ConnectionProxy;
@@ -129,10 +128,7 @@ public class MultiExecutorTest {
private static Connection getPhysicsConnection(DruidDataSource dataSource)
throws SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/MySQLInsertExecutorTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/MySQLInsertExecutorTest.java
index 512cdb2923..dc8e717115 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/MySQLInsertExecutorTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/MySQLInsertExecutorTest.java
@@ -19,7 +19,6 @@ package org.apache.seata.rm.datasource.exec;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.mock.MockStatementBase;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.google.common.collect.Lists;
@@ -260,12 +259,9 @@ public class MySQLInsertExecutorTest {
}
}
- protected Connection getPhysicsConnection(DruidDataSource dataSource)
throws SQLException {
+ protected static Connection getPhysicsConnection(DruidDataSource
dataSource) throws SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/PlainExecutorTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/PlainExecutorTest.java
index 053ce71360..026f94c707 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/PlainExecutorTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/PlainExecutorTest.java
@@ -19,7 +19,6 @@ package org.apache.seata.rm.datasource.exec;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.mock.MockStatementBase;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import org.apache.seata.rm.datasource.ConnectionProxy;
import org.apache.seata.rm.datasource.DataSourceProxy;
@@ -107,10 +106,7 @@ public class PlainExecutorTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/SelectForUpdateExecutorTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/SelectForUpdateExecutorTest.java
index 81c8964430..01c085cdf9 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/SelectForUpdateExecutorTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/SelectForUpdateExecutorTest.java
@@ -18,7 +18,6 @@ package org.apache.seata.rm.datasource.exec;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.util.JdbcConstants;
@@ -136,10 +135,7 @@ public class SelectForUpdateExecutorTest {
private static Connection getPhysicsConnection(DruidDataSource dataSource)
throws SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/UpdateExecutorTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/UpdateExecutorTest.java
index 1d58b3a401..8be51e9de3 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/UpdateExecutorTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/UpdateExecutorTest.java
@@ -19,7 +19,6 @@ package org.apache.seata.rm.datasource.exec;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.mock.MockStatementBase;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.util.JdbcConstants;
@@ -179,10 +178,7 @@ public class UpdateExecutorTest {
private static Connection getPhysicsConnection(DruidDataSource dataSource)
throws SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/UpdateJoinExecutorTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/UpdateJoinExecutorTest.java
index 4d59b36436..e11d954627 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/UpdateJoinExecutorTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/exec/UpdateJoinExecutorTest.java
@@ -19,7 +19,6 @@ package org.apache.seata.rm.datasource.exec;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.mock.MockStatementBase;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.util.JdbcConstants;
@@ -223,9 +222,6 @@ public class UpdateJoinExecutorTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
}
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/mock/MockExecuteHandlerImpl.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/mock/MockExecuteHandlerImpl.java
index b138e9873e..abd4f97274 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/mock/MockExecuteHandlerImpl.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/mock/MockExecuteHandlerImpl.java
@@ -20,10 +20,8 @@ import com.alibaba.druid.mock.MockStatementBase;
import com.alibaba.druid.mock.handler.MockExecuteHandler;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLStatement;
-import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
-import org.apache.seata.sqlparser.druid.mysql.MySQLSelectForUpdateRecognizer;
import org.apache.seata.sqlparser.util.JdbcConstants;
import java.sql.ResultSet;
@@ -74,13 +72,8 @@ public class MockExecuteHandlerImpl implements
MockExecuteHandler {
SQLSelectStatement ast = (SQLSelectStatement) asts.get(0);
SQLSelectQueryBlock queryBlock =
ast.getSelect().getFirstQueryBlock();
String tableName = "";
- if (queryBlock.getFrom() instanceof SQLExprTableSource) {
- MySQLSelectForUpdateRecognizer recognizer = new
MySQLSelectForUpdateRecognizer(sql, ast);
- tableName = recognizer.getTableName();
- } else {
- // select * from t inner join t1...
- tableName = queryBlock.getFrom().toString();
- }
+ // select * from t inner join t1...
+ tableName = queryBlock.getFrom().toString();
for (Object[] meta : mockColumnsMetasReturnValue) {
if (tableName.equalsIgnoreCase(meta[2].toString())) {
metas.add(meta);
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/sql/struct/TableRecordsTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/sql/struct/TableRecordsTest.java
index 4cda675eea..1af246b3ff 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/sql/struct/TableRecordsTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/sql/struct/TableRecordsTest.java
@@ -19,7 +19,6 @@ package org.apache.seata.rm.datasource.sql.struct;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.mock.MockStatementBase;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
@@ -244,10 +243,7 @@ public class TableRecordsTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/dm/DmUndoLogManagerTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/dm/DmUndoLogManagerTest.java
index 90af788097..46196af591 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/dm/DmUndoLogManagerTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/dm/DmUndoLogManagerTest.java
@@ -17,7 +17,6 @@
package org.apache.seata.rm.datasource.undo.dm;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.seata.common.loader.EnhancedServiceLoader;
@@ -142,10 +141,7 @@ public class DmUndoLogManagerTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/kingbase/KingbaseUndoLogManagerTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/kingbase/KingbaseUndoLogManagerTest.java
index dce44b905a..6430fba95a 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/kingbase/KingbaseUndoLogManagerTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/kingbase/KingbaseUndoLogManagerTest.java
@@ -17,7 +17,6 @@
package org.apache.seata.rm.datasource.undo.kingbase;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.seata.common.loader.EnhancedServiceLoader;
@@ -136,10 +135,7 @@ public class KingbaseUndoLogManagerTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/mariadb/MariadbUndoLogManagerTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/mariadb/MariadbUndoLogManagerTest.java
index 099fc136a0..89b0c0ae06 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/mariadb/MariadbUndoLogManagerTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/mariadb/MariadbUndoLogManagerTest.java
@@ -17,7 +17,6 @@
package org.apache.seata.rm.datasource.undo.mariadb;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.seata.common.loader.EnhancedServiceLoader;
@@ -148,10 +147,7 @@ public class MariadbUndoLogManagerTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/mysql/MySQLUndoLogManagerTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/mysql/MySQLUndoLogManagerTest.java
index 7c6e0e100a..16f8b518d8 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/mysql/MySQLUndoLogManagerTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/mysql/MySQLUndoLogManagerTest.java
@@ -17,7 +17,6 @@
package org.apache.seata.rm.datasource.undo.mysql;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.seata.common.loader.EnhancedServiceLoader;
@@ -145,10 +144,7 @@ public class MySQLUndoLogManagerTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/oracle/OracleUndoLogManagerTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/oracle/OracleUndoLogManagerTest.java
index 37fd193b35..727cece980 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/oracle/OracleUndoLogManagerTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/oracle/OracleUndoLogManagerTest.java
@@ -17,7 +17,6 @@
package org.apache.seata.rm.datasource.undo.oracle;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.seata.common.loader.EnhancedServiceLoader;
@@ -136,10 +135,7 @@ public class OracleUndoLogManagerTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/oscar/OscarUndoLogManagerTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/oscar/OscarUndoLogManagerTest.java
index 235222905b..03c0db2d45 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/oscar/OscarUndoLogManagerTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/oscar/OscarUndoLogManagerTest.java
@@ -17,7 +17,6 @@
package org.apache.seata.rm.datasource.undo.oscar;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.seata.common.loader.EnhancedServiceLoader;
@@ -42,6 +41,7 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
import java.lang.reflect.Field;
import java.sql.Connection;
@@ -51,6 +51,10 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+@DisabledIfSystemProperty(
+ named = "druid.version",
+ matches = "[0-1].[1-2].[0-24]",
+ disabledReason = "druid 1.2.24 correct support oscar")
public class OscarUndoLogManagerTest {
List<String> returnValueColumnLabels = Lists.newArrayList("log_status");
@@ -136,10 +140,7 @@ public class OscarUndoLogManagerTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/polardbx/PolarDBXUndoLogManagerTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/polardbx/PolarDBXUndoLogManagerTest.java
index 732ede75bd..fcad581bd9 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/polardbx/PolarDBXUndoLogManagerTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/polardbx/PolarDBXUndoLogManagerTest.java
@@ -17,7 +17,6 @@
package org.apache.seata.rm.datasource.undo.polardbx;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.seata.common.loader.EnhancedServiceLoader;
@@ -145,10 +144,7 @@ public class PolarDBXUndoLogManagerTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/postgresql/PostgresqlUndoLogManagerTest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/postgresql/PostgresqlUndoLogManagerTest.java
index dccaa8b60a..35957b1210 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/postgresql/PostgresqlUndoLogManagerTest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/undo/postgresql/PostgresqlUndoLogManagerTest.java
@@ -17,7 +17,6 @@
package org.apache.seata.rm.datasource.undo.postgresql;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.seata.common.loader.EnhancedServiceLoader;
@@ -136,10 +135,7 @@ public class PostgresqlUndoLogManagerTest {
private Connection getPhysicsConnection(DruidDataSource dataSource) throws
SQLException {
Connection connection = dataSource.getConnection().getConnection();
- if (connection instanceof DruidStatementConnection) {
- return ((DruidStatementConnection) connection).getConnection();
- }
- return connection;
+ return connection.unwrap(Connection.class);
}
@Test
diff --git
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/xa/DataSourceProxyXATest.java
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/xa/DataSourceProxyXATest.java
index c363ff6145..f211ab92bd 100644
---
a/rm-datasource/src/test/java/org/apache/seata/rm/datasource/xa/DataSourceProxyXATest.java
+++
b/rm-datasource/src/test/java/org/apache/seata/rm/datasource/xa/DataSourceProxyXATest.java
@@ -17,7 +17,6 @@
package org.apache.seata.rm.datasource.xa;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.pool.DruidStatementConnection;
import com.kingbase8.xa.KBXAConnection;
import com.mysql.jdbc.JDBC4MySQLConnection;
import com.mysql.jdbc.jdbc2.optional.JDBC4ConnectionWrapper;
@@ -146,9 +145,7 @@ public class DataSourceProxyXATest {
Assertions.assertTrue(wrappedConnection instanceof PooledConnection);
Connection wrappedPhysicalConn = ((PooledConnection)
wrappedConnection).getConnection();
- if (wrappedPhysicalConn instanceof DruidStatementConnection) {
- wrappedPhysicalConn = ((DruidStatementConnection)
wrappedPhysicalConn).getConnection();
- }
+ wrappedPhysicalConn = wrappedConnection.unwrap(Connection.class);
Assertions.assertSame(wrappedPhysicalConn, connection);
XAConnection xaConnection = connectionProxyXA.getWrappedXAConnection();
diff --git
a/seata-spring-boot-starter/src/main/java/org/apache/seata/spring/boot/autoconfigure/SeataHttpAutoConfiguration.java
b/seata-spring-boot-starter/src/main/java/org/apache/seata/spring/boot/autoconfigure/SeataHttpAutoConfiguration.java
index 9ac1a0e626..393be677e9 100644
---
a/seata-spring-boot-starter/src/main/java/org/apache/seata/spring/boot/autoconfigure/SeataHttpAutoConfiguration.java
+++
b/seata-spring-boot-starter/src/main/java/org/apache/seata/spring/boot/autoconfigure/SeataHttpAutoConfiguration.java
@@ -16,8 +16,8 @@
*/
package org.apache.seata.spring.boot.autoconfigure;
-import org.apache.seata.integration.http.SeataWebMvcConfigurer;
import org.apache.seata.integration.http.JakartaSeataWebMvcConfigurer;
+import org.apache.seata.integration.http.SeataWebMvcConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
diff --git
a/seata-spring-boot-starter/src/test/java/org/apache/seata/spring/boot/autoconfigure/SeataHttpAutoConfigurationTest.java
b/seata-spring-boot-starter/src/test/java/org/apache/seata/spring/boot/autoconfigure/SeataHttpAutoConfigurationTest.java
index 461f848e17..cce2d0786e 100644
---
a/seata-spring-boot-starter/src/test/java/org/apache/seata/spring/boot/autoconfigure/SeataHttpAutoConfigurationTest.java
+++
b/seata-spring-boot-starter/src/test/java/org/apache/seata/spring/boot/autoconfigure/SeataHttpAutoConfigurationTest.java
@@ -16,8 +16,8 @@
*/
package org.apache.seata.spring.boot.autoconfigure;
-import org.apache.seata.integration.http.SeataWebMvcConfigurer;
import org.apache.seata.integration.http.JakartaSeataWebMvcConfigurer;
+import org.apache.seata.integration.http.SeataWebMvcConfigurer;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.FilteredClassLoader;
diff --git a/sqlparser/seata-sqlparser-druid/pom.xml
b/sqlparser/seata-sqlparser-druid/pom.xml
index 4d76142522..740c54c397 100644
--- a/sqlparser/seata-sqlparser-druid/pom.xml
+++ b/sqlparser/seata-sqlparser-druid/pom.xml
@@ -28,7 +28,9 @@
<artifactId>seata-sqlparser-druid</artifactId>
<name>seata-sqlparser-druid ${project.version}</name>
<description>sqlparser-druid for Seata built with Maven</description>
-
+ <properties>
+ <druid-sqlparser.version>1.2.25</druid-sqlparser.version>
+ </properties>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
@@ -39,6 +41,7 @@
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
+ <version>${druid-sqlparser.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
diff --git
a/sqlparser/seata-sqlparser-druid/src/test/java/org/apache/seata/sqlparser/druid/DruidSQLRecognizerFactoryTest.java
b/sqlparser/seata-sqlparser-druid/src/test/java/org/apache/seata/sqlparser/druid/DruidSQLRecognizerFactoryTest.java
index 2d283beb69..408067c15c 100644
---
a/sqlparser/seata-sqlparser-druid/src/test/java/org/apache/seata/sqlparser/druid/DruidSQLRecognizerFactoryTest.java
+++
b/sqlparser/seata-sqlparser-druid/src/test/java/org/apache/seata/sqlparser/druid/DruidSQLRecognizerFactoryTest.java
@@ -29,6 +29,7 @@ import
org.apache.seata.sqlparser.druid.oracle.OracleOperateRecognizerHolder;
import org.apache.seata.sqlparser.util.JdbcConstants;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import java.util.List;
@@ -221,6 +222,28 @@ public class DruidSQLRecognizerFactoryTest {
NotSupportYetException.class, () ->
recognizerFactory.create(sql9, JdbcConstants.KINGBASE));
}
+ @EnabledIfSystemProperty(
+ named = "druid.version",
+ matches =
"(1\\.[3-9]\\..*)|(2\\..*)|(1\\.2\\.[5-9].*)|(1\\.2\\.[1-9][0-9].*)")
+ @Test
+ public void testIsSqlSyntaxSupportsForOscar() {
+ SQLRecognizerFactory recognizerFactory =
+ EnhancedServiceLoader.load(SQLRecognizerFactory.class,
SqlParserType.SQL_PARSER_TYPE_DRUID);
+
+ String sql1 = "delete from t where id in (select id from b)";
+
+ Assertions.assertThrows(
+ NotSupportYetException.class, () ->
recognizerFactory.create(sql1, JdbcConstants.OSCAR));
+
+ String sql2 = "select * from (select * from t) for update";
+ Assertions.assertThrows(
+ NotSupportYetException.class, () ->
recognizerFactory.create(sql2, JdbcConstants.OSCAR));
+
+ String sql5 = "insert into a select * from b";
+ Assertions.assertThrows(
+ NotSupportYetException.class, () ->
recognizerFactory.create(sql5, JdbcConstants.OSCAR));
+ }
+
@Test
public void testInsertFirstNotSupported() {
SQLRecognizerFactory recognizerFactory =
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]