You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/09/03 07:22:34 UTC
[shardingsphere] branch master updated: Compatible with
INSERT...RETURNING IT (#7231)
This is an automated email from the ASF dual-hosted git repository.
zhangyonglun 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 f6214ea Compatible with INSERT...RETURNING IT (#7231)
f6214ea is described below
commit f6214ea9c36c16db480eab69f68559bc74189ed3
Author: sandynz <42...@users.noreply.github.com>
AuthorDate: Thu Sep 3 15:22:11 2020 +0800
Compatible with INSERT...RETURNING IT (#7231)
---
.../dml/DMLIntegrateTestCaseAssertion.java | 4 ++++
.../dbtest/engine/dml/GeneralDMLIT.java | 22 ++++++++++++++++++++++
.../cases/dml/dml-integrate-test-cases.xml | 2 +-
3 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/cases/assertion/dml/DMLIntegrateTestCaseAssertion.java b/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/cases/assertion/dml/DMLIntegrateTestCaseAssertion.java
index ba18d2b..b21021e 100644
--- a/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/cases/assertion/dml/DMLIntegrateTestCaseAssertion.java
+++ b/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/cases/assertion/dml/DMLIntegrateTestCaseAssertion.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.dbtest.cases.assertion.dml;
+import javax.xml.bind.annotation.XmlAttribute;
import lombok.Getter;
import org.apache.shardingsphere.dbtest.cases.assertion.root.IntegrateTestCaseAssertion;
@@ -25,4 +26,7 @@ import org.apache.shardingsphere.dbtest.cases.assertion.root.IntegrateTestCaseAs
*/
@Getter
public final class DMLIntegrateTestCaseAssertion extends IntegrateTestCaseAssertion {
+
+ @XmlAttribute(name = "dml-returning")
+ private boolean dmlReturning;
}
diff --git a/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/engine/dml/GeneralDMLIT.java b/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/engine/dml/GeneralDMLIT.java
index c1a560e..f62ea7d 100644
--- a/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/engine/dml/GeneralDMLIT.java
+++ b/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/engine/dml/GeneralDMLIT.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.dbtest.engine.dml;
+import java.sql.ResultSet;
import org.apache.shardingsphere.dbtest.cases.assertion.dml.DMLIntegrateTestCaseAssertion;
import org.apache.shardingsphere.dbtest.cases.assertion.root.SQLValue;
import org.apache.shardingsphere.dbtest.cases.assertion.root.SQLCaseType;
@@ -65,6 +66,9 @@ public final class GeneralDMLIT extends BaseDMLIT {
if ("shadow".equals(getRuleType())) {
return;
}
+ if (assertion.isDmlReturning()) {
+ return;
+ }
int actualUpdateCount;
try (Connection connection = getDataSource().getConnection()) {
actualUpdateCount = SQLCaseType.Literal == getCaseType() ? executeUpdateForStatement(connection) : executeUpdateForPreparedStatement(connection);
@@ -112,6 +116,15 @@ public final class GeneralDMLIT extends BaseDMLIT {
private int executeForStatement(final Connection connection) throws SQLException {
try (Statement statement = connection.createStatement()) {
+ if (assertion.isDmlReturning()) {
+ if (statement.execute(getSql())) {
+ ResultSet resultSet = statement.getResultSet();
+ boolean moreResults = statement.getMoreResults();
+ // TODO resultSet is null
+ return moreResults || null != resultSet ? statement.getUpdateCount() : 1;
+ }
+ return statement.getUpdateCount();
+ }
assertFalse("Not a DML statement.", statement.execute(getSql()));
return statement.getUpdateCount();
}
@@ -122,6 +135,15 @@ public final class GeneralDMLIT extends BaseDMLIT {
for (SQLValue each : assertion.getSQLValues()) {
preparedStatement.setObject(each.getIndex(), each.getValue());
}
+ if (assertion.isDmlReturning()) {
+ if (preparedStatement.execute()) {
+ ResultSet resultSet = preparedStatement.getResultSet();
+ boolean moreResults = preparedStatement.getMoreResults();
+ // TODO resultSet is null
+ return moreResults || null != resultSet ? preparedStatement.getUpdateCount() : 1;
+ }
+ return preparedStatement.getUpdateCount();
+ }
assertFalse("Not a DML statement.", preparedStatement.execute());
return preparedStatement.getUpdateCount();
}
diff --git a/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dml/dml-integrate-test-cases.xml b/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dml/dml-integrate-test-cases.xml
index 75daf7d..b91f48f 100644
--- a/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dml/dml-integrate-test-cases.xml
+++ b/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/dml/dml-integrate-test-cases.xml
@@ -34,7 +34,7 @@
</dml-test-case>
<dml-test-case sql="INSERT /*+ index(field1) */ INTO t_order (order_id, user_id, status) VALUES (1, 1, 'insert') RETURNING order_id" db-types="PostgreSQL">
- <assertion expected-data-file="insert_for_order_1.xml" />
+ <assertion expected-data-file="insert_for_order_1.xml" dml-returning="true" />
</dml-test-case>
<dml-test-case sql="INSERT INTO t_order (order_id, user_id, status) VALUES (1, 1, 'insert'), (2, 2, 'insert2')" db-types="MySQL">