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 0cc6ef49462 Replace MySQL-specific statements with core statements in EncryptDALResultDecorator (#35393) 0cc6ef49462 is described below commit 0cc6ef494628501221a6c04df4d8355827a1afb3 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Wed May 14 03:28:25 2025 +0800 Replace MySQL-specific statements with core statements in EncryptDALResultDecorator (#35393) - Replace MySQLExplainStatement with ExplainStatement - Replace MySQLShowColumnsStatement with ShowColumnsStatement - Replace MySQLShowCreateTableStatement with ShowCreateTableStatement - Update related test cases --- .../merge/dal/EncryptDALResultDecorator.java | 10 ++--- .../merge/dal/EncryptDALResultDecoratorTest.java | 46 ++++++++++------------ 2 files changed, 25 insertions(+), 31 deletions(-) diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java index 07ef72e9ea4..955801edd3d 100644 --- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java +++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java @@ -26,9 +26,9 @@ import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator; import org.apache.shardingsphere.infra.merge.result.MergedResult; import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData; import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement; -import org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLExplainStatement; -import org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLShowColumnsStatement; -import org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLShowCreateTableStatement; +import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ExplainStatement; +import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ShowColumnsStatement; +import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ShowCreateTableStatement; /** * DAL result decorator for encrypt. @@ -41,10 +41,10 @@ public final class EncryptDALResultDecorator implements ResultDecorator<EncryptR @Override public MergedResult decorate(final MergedResult mergedResult, final SQLStatementContext sqlStatementContext, final EncryptRule rule) { SQLStatement sqlStatement = sqlStatementContext.getSqlStatement(); - if (sqlStatement instanceof MySQLExplainStatement || sqlStatement instanceof MySQLShowColumnsStatement) { + if (sqlStatement instanceof ExplainStatement || sqlStatement instanceof ShowColumnsStatement) { return new EncryptShowColumnsMergedResult(mergedResult, sqlStatementContext, rule); } - if (sqlStatement instanceof MySQLShowCreateTableStatement) { + if (sqlStatement instanceof ShowCreateTableStatement) { return new EncryptShowCreateTableMergedResult(globalRuleMetaData, mergedResult, sqlStatementContext, rule); } return mergedResult; diff --git a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java index 5b51a0b6ccf..df4426573f5 100644 --- a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java +++ b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java @@ -31,10 +31,10 @@ import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.parser.rule.SQLParserRule; import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment; import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment; +import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ExplainStatement; +import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ShowColumnsStatement; +import org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ShowCreateTableStatement; import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue; -import org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLExplainStatement; -import org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLShowColumnsStatement; -import org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLShowCreateTableStatement; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; @@ -60,17 +60,17 @@ class EncryptDALResultDecoratorTest { private SQLStatementContext sqlStatementContext; @Test - void assertMergedResultWithDescribeStatement() { - sqlStatementContext = getDescribeStatementContext(); - EncryptDALResultDecorator encryptDALResultDecorator = new EncryptDALResultDecorator(mock(RuleMetaData.class)); - assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, rule), instanceOf(EncryptShowColumnsMergedResult.class)); + void assertMergedResultWithExplainStatement() { + sqlStatementContext = getExplainStatementContext(); + EncryptDALResultDecorator decorator = new EncryptDALResultDecorator(mock(RuleMetaData.class)); + assertThat(decorator.decorate(mock(MergedResult.class), sqlStatementContext, rule), instanceOf(EncryptShowColumnsMergedResult.class)); } @Test void assertMergedResultWithShowColumnsStatement() { sqlStatementContext = getShowColumnsStatementContext(); - EncryptDALResultDecorator encryptDALResultDecorator = new EncryptDALResultDecorator(mock(RuleMetaData.class)); - assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, rule), instanceOf(EncryptShowColumnsMergedResult.class)); + EncryptDALResultDecorator decorator = new EncryptDALResultDecorator(mock(RuleMetaData.class)); + assertThat(decorator.decorate(mock(MergedResult.class), sqlStatementContext, rule), instanceOf(EncryptShowColumnsMergedResult.class)); } @Test @@ -78,45 +78,39 @@ class EncryptDALResultDecoratorTest { sqlStatementContext = getShowCreateTableStatementContext(); RuleMetaData ruleMetaData = mock(RuleMetaData.class); when(ruleMetaData.getSingleRule(SQLParserRule.class)).thenReturn(mock(SQLParserRule.class)); - EncryptDALResultDecorator encryptDALResultDecorator = new EncryptDALResultDecorator(ruleMetaData); - assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, rule), instanceOf(EncryptShowCreateTableMergedResult.class)); + EncryptDALResultDecorator decorator = new EncryptDALResultDecorator(ruleMetaData); + assertThat(decorator.decorate(mock(MergedResult.class), sqlStatementContext, rule), instanceOf(EncryptShowCreateTableMergedResult.class)); } @Test void assertMergedResultWithOtherStatement() { sqlStatementContext = mock(SQLStatementContext.class); - EncryptDALResultDecorator encryptDALResultDecorator = new EncryptDALResultDecorator(mock(RuleMetaData.class)); - assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, rule), instanceOf(MergedResult.class)); + EncryptDALResultDecorator decorator = new EncryptDALResultDecorator(mock(RuleMetaData.class)); + assertThat(decorator.decorate(mock(MergedResult.class), sqlStatementContext, rule), instanceOf(MergedResult.class)); } - private SQLStatementContext getDescribeStatementContext() { + private SQLStatementContext getExplainStatementContext() { ExplainStatementContext result = mock(ExplainStatementContext.class, RETURNS_DEEP_STUBS); - SimpleTableSegment simpleTableSegment = getSimpleTableSegment(); + SimpleTableSegment simpleTableSegment = new SimpleTableSegment(new TableNameSegment(1, 7, new IdentifierValue("foo_tbl"))); when(result.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment)); - when(result.getSqlStatement()).thenReturn(mock(MySQLExplainStatement.class)); + when(result.getSqlStatement()).thenReturn(mock(ExplainStatement.class)); return result; } private SQLStatementContext getShowColumnsStatementContext() { ShowColumnsStatementContext result = mock(ShowColumnsStatementContext.class, RETURNS_DEEP_STUBS); - SimpleTableSegment simpleTableSegment = getSimpleTableSegment(); + SimpleTableSegment simpleTableSegment = new SimpleTableSegment(new TableNameSegment(1, 7, new IdentifierValue("foo_tbl"))); when(result.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment)); - when(result.getSqlStatement()).thenReturn(mock(MySQLShowColumnsStatement.class)); + when(result.getSqlStatement()).thenReturn(mock(ShowColumnsStatement.class)); return result; } private SQLStatementContext getShowCreateTableStatementContext() { ShowCreateTableStatementContext result = mock(ShowCreateTableStatementContext.class, RETURNS_DEEP_STUBS); when(result.getDatabaseType()).thenReturn(databaseType); - SimpleTableSegment simpleTableSegment = getSimpleTableSegment(); + SimpleTableSegment simpleTableSegment = new SimpleTableSegment(new TableNameSegment(1, 7, new IdentifierValue("foo_tbl"))); when(result.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment)); - when(result.getSqlStatement()).thenReturn(new MySQLShowCreateTableStatement()); + when(result.getSqlStatement()).thenReturn(mock(ShowCreateTableStatement.class)); return result; } - - private SimpleTableSegment getSimpleTableSegment() { - IdentifierValue identifierValue = new IdentifierValue("test"); - TableNameSegment tableNameSegment = new TableNameSegment(1, 4, identifierValue); - return new SimpleTableSegment(tableNameSegment); - } }