This is an automated email from the ASF dual-hosted git repository. zhangliang 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 19011e8c3bb Asserting tables that should not exit from routine body segment (#21366) 19011e8c3bb is described below commit 19011e8c3bb5ac6f351bd19c4a81519260b4ffb2 Author: Gabriel Cunha <cunha.gabriel...@gmail.com> AuthorDate: Tue Oct 18 09:16:23 2022 -0300 Asserting tables that should not exit from routine body segment (#21366) --- .../sql/common/extractor/TableExtractorTest.java | 37 ++++++++++++++++------ 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/sql-parser/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/extractor/TableExtractorTest.java b/sql-parser/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/extractor/TableExtractorTest.java index 2c347c65895..760377aec3e 100644 --- a/sql-parser/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/extractor/TableExtractorTest.java +++ b/sql-parser/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/extractor/TableExtractorTest.java @@ -17,7 +17,20 @@ package org.apache.shardingsphere.sql.parser.sql.common.extractor; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.hasSize; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.Optional; import org.apache.shardingsphere.sql.parser.sql.common.constant.AggregationType; +import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.routine.RoutineBodySegment; +import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.routine.ValidStatementSegment; import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.AssignmentSegment; import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.ColumnAssignmentSegment; import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment; @@ -29,21 +42,12 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.Loc import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment; import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment; import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment; +import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTableStatement; import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue; import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLInsertStatement; import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLSelectStatement; import org.junit.Test; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.Optional; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertTrue; - public final class TableExtractorTest { private final TableExtractor tableExtractor = new TableExtractor(); @@ -93,6 +97,19 @@ public final class TableExtractorTest { assertTableSegment(tableSegmentIterator.next(), 122, 128, "t_order"); assertTableSegment(tableSegmentIterator.next(), 130, 132, "t_order"); } + + @Test + public void assertNotExistTableFromRoutineBody() { + RoutineBodySegment routineBodySegment = new RoutineBodySegment(0, 3); + ValidStatementSegment validStatement = new ValidStatementSegment(0, 1); + validStatement.setSqlStatement(() -> 0); + routineBodySegment.getValidStatements().add(validStatement); + ValidStatementSegment newValidStatement = new ValidStatementSegment(0, 1); + validStatement.setSqlStatement(mock(CreateTableStatement.class)); + routineBodySegment.getValidStatements().add(newValidStatement); + Collection<SimpleTableSegment> nonExistingTables = tableExtractor.extractNotExistTableFromRoutineBody(routineBodySegment); + assertThat(nonExistingTables, hasSize(1)); + } private void assertTableSegment(final SimpleTableSegment actual, final int expectedStartIndex, final int expectedStopIndex, final String expectedTableName) { assertThat(actual.getStartIndex(), is(expectedStartIndex));