This is an automated email from the ASF dual-hosted git repository.

chengzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 36bc0eeebce Refactor BatchDMLE2EIT logic and add MySQL 
rewriteBatchedStatements param (#29827)
36bc0eeebce is described below

commit 36bc0eeebce7f67a7d5f5ca6a0345bb60e1712aa
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Jan 24 17:21:56 2024 +0800

    Refactor BatchDMLE2EIT logic and add MySQL rewriteBatchedStatements param 
(#29827)
---
 .../e2e/env/runtime/DataSourceEnvironment.java     |  2 +-
 .../engine/composer/BatchE2EContainerComposer.java |  5 ++-
 .../test/e2e/engine/type/dml/BaseDMLE2EIT.java     | 36 +++++++++-------------
 .../test/e2e/engine/type/dml/BatchDMLE2EIT.java    |  2 +-
 4 files changed, 21 insertions(+), 24 deletions(-)

diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/DataSourceEnvironment.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/DataSourceEnvironment.java
index ca114712809..f67154ae3da 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/DataSourceEnvironment.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/DataSourceEnvironment.java
@@ -88,7 +88,7 @@ public final class DataSourceEnvironment {
             case "MySQL":
                 return String.format(
                         
"jdbc:mysql://%s:%s/%s?useSSL=true&requireSSL=true&enabledTLSProtocols=TLSv1.2,TLSv1.3&verifyServerCertificate=false"
-                                + 
"&useServerPrepStmts=true&useLocalSessionState=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&allowMultiQueries=true",
+                                + 
"&useServerPrepStmts=true&useLocalSessionState=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true",
                         host, port, dataSourceName);
             case "PostgreSQL":
                 return 
String.format("jdbc:postgresql://%s:%s/%s?ssl=on&sslmode=prefer", host, port, 
dataSourceName);
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/BatchE2EContainerComposer.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/BatchE2EContainerComposer.java
index 6bccb453e0e..6f3c33db546 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/BatchE2EContainerComposer.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/BatchE2EContainerComposer.java
@@ -28,6 +28,7 @@ import 
org.apache.shardingsphere.test.e2e.framework.param.model.CaseTestParamete
 
 import javax.xml.bind.JAXBException;
 import java.io.IOException;
+import java.sql.Statement;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.HashSet;
@@ -66,7 +67,9 @@ public final class BatchE2EContainerComposer extends 
E2EContainerComposer implem
         assertThat(actualUpdateCounts.length, is(this.dataSets.size()));
         int count = 0;
         for (DataSet each : this.dataSets) {
-            assertThat(actualUpdateCounts[count], is(each.getUpdateCount()));
+            if (Statement.SUCCESS_NO_INFO != actualUpdateCounts[count]) {
+                assertThat(actualUpdateCounts[count], 
is(each.getUpdateCount()));
+            }
             dataSets.add(each);
             count++;
         }
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BaseDMLE2EIT.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BaseDMLE2EIT.java
index 3b84a460f65..43fd0eb3be1 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BaseDMLE2EIT.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BaseDMLE2EIT.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.infra.expr.core.InlineExpressionParserFactory;
 import org.apache.shardingsphere.infra.util.datetime.DateTimeFormatterFactory;
-import org.apache.shardingsphere.test.e2e.cases.dataset.DataSet;
 import org.apache.shardingsphere.test.e2e.cases.dataset.metadata.DataSetColumn;
 import 
org.apache.shardingsphere.test.e2e.cases.dataset.metadata.DataSetMetaData;
 import org.apache.shardingsphere.test.e2e.cases.dataset.row.DataSetRow;
@@ -34,7 +33,6 @@ import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioData
 import 
org.apache.shardingsphere.test.e2e.framework.database.DatabaseAssertionMetaData;
 import 
org.apache.shardingsphere.test.e2e.framework.database.DatabaseAssertionMetaDataFactory;
 import 
org.apache.shardingsphere.test.e2e.framework.param.model.AssertionTestParameter;
-import 
org.apache.shardingsphere.test.e2e.framework.param.model.CaseTestParameter;
 import org.junit.jupiter.api.AfterEach;
 
 import javax.sql.DataSource;
@@ -110,11 +108,22 @@ public abstract class BaseDMLE2EIT {
         }
     }
     
-    private void assertDataSet(final PreparedStatement 
actualPreparedStatement, final List<DataSetRow> expectedDataSetRows, final 
DataSetMetaData expectedDataSetMetaData,
+    protected final void assertDataSet(final BatchE2EContainerComposer 
containerComposer, final int[] actualUpdateCounts, final DatabaseType 
databaseType) throws SQLException {
+        for (DataSetMetaData each : 
containerComposer.getDataSet(actualUpdateCounts).getMetaDataList()) {
+            assertDataSet(containerComposer, actualUpdateCounts, each, 
databaseType);
+        }
+    }
+    
+    private void assertDataSet(final BatchE2EContainerComposer 
containerComposer, final int[] actualUpdateCounts, final DataSetMetaData 
expectedDataSetMetaData,
                                final DatabaseType databaseType) throws 
SQLException {
-        try (ResultSet actualResultSet = 
actualPreparedStatement.executeQuery()) {
-            assertMetaData(actualResultSet.getMetaData(), 
expectedDataSetMetaData.getColumns(), databaseType);
-            assertRows(actualResultSet, expectedDataSetRows, databaseType);
+        for (String each : 
InlineExpressionParserFactory.newInstance(expectedDataSetMetaData.getDataNodes()).splitAndEvaluate())
 {
+            DataNode dataNode = new DataNode(each);
+            DataSource dataSource = 
containerComposer.getActualDataSourceMap().get(dataNode.getDataSourceName());
+            try (
+                    Connection connection = dataSource.getConnection();
+                    PreparedStatement preparedStatement = 
connection.prepareStatement(String.format("SELECT * FROM %s ORDER BY 1", 
dataNode.getTableName()))) {
+                assertDataSet(preparedStatement, expectedDataSetMetaData, 
containerComposer.getDataSet(actualUpdateCounts).findRows(dataNode), 
databaseType);
+            }
         }
     }
     
@@ -188,19 +197,4 @@ public abstract class BaseDMLE2EIT {
         assertMetaData(generatedKeys.getMetaData(), 
containerComposer.getGeneratedKeyDataSet().getMetaDataList().get(0).getColumns(),
 databaseType);
         assertRows(generatedKeys, 
containerComposer.getGeneratedKeyDataSet().getRows(), databaseType);
     }
-    
-    protected void assertDataSets(final CaseTestParameter testParam, final 
BatchE2EContainerComposer containerComposer, final int[] actualUpdateCounts) 
throws SQLException {
-        DataSet expected = containerComposer.getDataSet(actualUpdateCounts);
-        assertThat("Only support single table for DML.", 
expected.getMetaDataList().size(), is(1));
-        DataSetMetaData expectedDataSetMetaData = 
expected.getMetaDataList().get(0);
-        for (String each : 
InlineExpressionParserFactory.newInstance(expectedDataSetMetaData.getDataNodes()).splitAndEvaluate())
 {
-            DataNode dataNode = new DataNode(each);
-            DataSource dataSource = 
containerComposer.getActualDataSourceMap().get(dataNode.getDataSourceName());
-            try (
-                    Connection connection = dataSource.getConnection();
-                    PreparedStatement preparedStatement = 
connection.prepareStatement(String.format("SELECT * FROM %s ORDER BY 1", 
dataNode.getTableName()))) {
-                assertDataSet(preparedStatement, expected.findRows(dataNode), 
expectedDataSetMetaData, testParam.getDatabaseType());
-            }
-        }
-    }
 }
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BatchDMLE2EIT.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BatchDMLE2EIT.java
index 3605289a813..a6fe37e3807 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BatchDMLE2EIT.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BatchDMLE2EIT.java
@@ -54,7 +54,7 @@ class BatchDMLE2EIT extends BaseDMLE2EIT {
             try (Connection connection = 
containerComposer.getTargetDataSource().getConnection()) {
                 actualUpdateCounts = 
executeBatchForPreparedStatement(testParam, connection);
             }
-            assertDataSets(testParam, containerComposer, actualUpdateCounts);
+            assertDataSet(containerComposer, actualUpdateCounts, 
testParam.getDatabaseType());
         }
     }
     

Reply via email to