You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/09/09 04:51:35 UTC
[shardingsphere] branch master updated: [Issue #20364]-Improve coverage for DeleteStatementHandler (#20875)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 45c244b1161 [Issue #20364]-Improve coverage for DeleteStatementHandler (#20875)
45c244b1161 is described below
commit 45c244b1161ab966bb3e8bedc2f65b6f751873fa
Author: Abhinav Koppula <ab...@gmail.com>
AuthorDate: Fri Sep 9 10:21:24 2022 +0530
[Issue #20364]-Improve coverage for DeleteStatementHandler (#20875)
---
.../handler/dml/DeleteStatementHandlerTest.java | 82 ++++++++++++++++++----
1 file changed, 69 insertions(+), 13 deletions(-)
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/dml/DeleteStatementHandlerTest.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/dml/DeleteStatementHandlerTest.java
index 7a42fd3929f..2f9b3ddbce0 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/dml/DeleteStatementHandlerTest.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/dml/DeleteStatementHandlerTest.java
@@ -17,46 +17,102 @@
package org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.util.LinkedList;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.order.OrderBySegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.pagination.limit.LimitSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OutputSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.WithSegment;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLDeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.dml.OpenGaussDeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dml.OracleDeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dml.PostgreSQLDeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sql92.dml.SQL92DeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dml.SQLServerDeleteStatement;
import org.junit.Test;
import java.util.Collections;
import java.util.Optional;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
public final class DeleteStatementHandlerTest {
@Test
- public void assertGetOrderBySegmentWithOrderBySegmentForMySQL() {
+ public void assertGetOrderBySegmentForMySQL() {
MySQLDeleteStatement deleteStatement = new MySQLDeleteStatement();
deleteStatement.setOrderBy(new OrderBySegment(0, 0, Collections.emptyList()));
Optional<OrderBySegment> orderBySegment = DeleteStatementHandler.getOrderBySegment(deleteStatement);
assertTrue(orderBySegment.isPresent());
+ assertThat(orderBySegment.get(), is(deleteStatement.getOrderBy().get()));
+ assertFalse(DeleteStatementHandler.getOrderBySegment(new MySQLDeleteStatement()).isPresent());
}
@Test
- public void assertGetOrderBySegmentWithoutOrderBySegmentForMySQL() {
- MySQLDeleteStatement deleteStatement = new MySQLDeleteStatement();
- Optional<OrderBySegment> orderBySegment = DeleteStatementHandler.getOrderBySegment(deleteStatement);
- assertFalse(orderBySegment.isPresent());
+ public void assertGetOrderBySegmentForOtherDatabases() {
+ assertFalse(DeleteStatementHandler.getOrderBySegment(new OpenGaussDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getOrderBySegment(new OracleDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getOrderBySegment(new PostgreSQLDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getOrderBySegment(new SQL92DeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getOrderBySegment(new SQLServerDeleteStatement()).isPresent());
}
@Test
- public void assertGetLimitSegmentWithLimitSegmentForMySQL() {
+ public void assertGetLimitSegmentForMySQL() {
MySQLDeleteStatement deleteStatement = new MySQLDeleteStatement();
deleteStatement.setLimit(new LimitSegment(0, 0, null, null));
Optional<LimitSegment> limitSegment = DeleteStatementHandler.getLimitSegment(deleteStatement);
assertTrue(limitSegment.isPresent());
+ assertThat(limitSegment.get(), is(deleteStatement.getLimit().get()));
+ assertFalse(DeleteStatementHandler.getLimitSegment(new MySQLDeleteStatement()).isPresent());
}
@Test
- public void assertGetLimitSegmentWithoutLimitSegmentForMySQL() {
- MySQLDeleteStatement deleteStatement = new MySQLDeleteStatement();
- Optional<LimitSegment> limitSegment = DeleteStatementHandler.getLimitSegment(deleteStatement);
- assertFalse(limitSegment.isPresent());
+ public void assertGetLimitSegmentForOtherDatabases() {
+ assertFalse(DeleteStatementHandler.getLimitSegment(new OpenGaussDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getLimitSegment(new OracleDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getLimitSegment(new PostgreSQLDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getLimitSegment(new SQL92DeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getLimitSegment(new SQLServerDeleteStatement()).isPresent());
+ }
+
+ @Test
+ public void assertGetOutputSegmentForSQLServer() {
+ SQLServerDeleteStatement deleteStatement = new SQLServerDeleteStatement();
+ deleteStatement.setOutputSegment(new OutputSegment(0, 0));
+ Optional<OutputSegment> outputSegment = DeleteStatementHandler.getOutputSegment(deleteStatement);
+ assertTrue(outputSegment.isPresent());
+ assertThat(outputSegment.get(), is(deleteStatement.getOutputSegment().get()));
+ assertFalse(DeleteStatementHandler.getOutputSegment(new SQLServerDeleteStatement()).isPresent());
+ }
+
+ @Test
+ public void assertGetOutputSegmentForOtherDatabases() {
+ assertFalse(DeleteStatementHandler.getOutputSegment(new MySQLDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getOutputSegment(new OpenGaussDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getOutputSegment(new OracleDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getOutputSegment(new PostgreSQLDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getOutputSegment(new SQL92DeleteStatement()).isPresent());
+ }
+
+ @Test
+ public void assertGetWithSegmentForSQLServer() {
+ SQLServerDeleteStatement deleteStatement = new SQLServerDeleteStatement();
+ deleteStatement.setWithSegment(new WithSegment(0, 0, new LinkedList<>()));
+ Optional<WithSegment> withSegment = DeleteStatementHandler.getWithSegment(deleteStatement);
+ assertTrue(withSegment.isPresent());
+ assertThat(withSegment.get(), is(deleteStatement.getWithSegment().get()));
+ assertFalse(DeleteStatementHandler.getWithSegment(new SQLServerDeleteStatement()).isPresent());
+ }
+
+ @Test
+ public void assertGetWithSegmentForOtherDatabases() {
+ assertFalse(DeleteStatementHandler.getWithSegment(new MySQLDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getWithSegment(new OpenGaussDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getWithSegment(new OracleDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getWithSegment(new PostgreSQLDeleteStatement()).isPresent());
+ assertFalse(DeleteStatementHandler.getWithSegment(new SQL92DeleteStatement()).isPresent());
}
}