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 aa68af01dcb Refactor optional named test cases (#17859)
aa68af01dcb is described below

commit aa68af01dcbfcf7743eacdd246820e9554ea2e55
Author: Liang Zhang <[email protected]>
AuthorDate: Sun May 22 20:49:55 2022 +0800

    Refactor optional named test cases (#17859)
    
    * Refactor PipelineJobExecutor
    
    * Refactor ShardingSphereRuleMetaDataTest
    
    * Refactor optional named test cases
    
    * Refactor optional named test cases
---
 ...eDiscoveryRuleConfigurationYamlSwapperTest.java |  6 +-
 ...eSplittingRuleConfigurationYamlSwapperTest.java |  6 +-
 .../shadow/route/engine/ShadowRouteEngine.java     | 10 +--
 ...hardingRuleAlteredJobConfigurationPreparer.java |  4 +-
 .../RowNumberPaginationContextEngineTest.java      |  8 +--
 .../rule/ShardingSphereRuleMetaDataTest.java       | 10 +--
 .../expression/impl/ListExpressionConverter.java   |  8 +--
 .../core/api/impl/RuleAlteredJobAPIImpl.java       |  4 +-
 .../pipeline/core/execute/PipelineJobExecutor.java | 77 ++++++++++------------
 .../metadata/generator/PipelineDDLGenerator.java   | 10 ++-
 .../rulealtered/RuleAlteredJobPreparer.java        |  6 +-
 .../scenario/rulealtered/RuleAlteredJobWorker.java |  6 +-
 .../service/SchemaMetaDataPersistServiceTest.java  | 13 ++--
 .../common/queryable/ShowAuthorityRuleHandler.java |  5 +-
 .../common/queryable/ShowSQLParserRuleHandler.java | 20 +++---
 .../admin/mysql/MySQLAdminExecutorFactoryTest.java | 23 +++----
 .../impl/OpenGaussDCLStatementSQLVisitor.java      |  8 +--
 .../impl/PostgreSQLDCLStatementSQLVisitor.java     |  8 +--
 .../core/job/progress/JobProgressTest.java         |  6 +-
 19 files changed, 109 insertions(+), 129 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/yaml/swapper/DatabaseDiscoveryRuleConfigurationYamlSwapperTest.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/yaml/swapper/DatabaseDiscoveryRuleConfigurationYamlSwapperTest.java
index fb636efaabc..56944bc248d 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/yaml/swapper/DatabaseDiscoveryRuleConfigurationYamlSwapperTest.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/yaml/swapper/DatabaseDiscoveryRuleConfigurationYamlSwapperTest.java
@@ -84,11 +84,11 @@ public final class 
DatabaseDiscoveryRuleConfigurationYamlSwapperTest {
     }
     
     private DatabaseDiscoveryRuleConfigurationYamlSwapper 
getHARuleConfigurationYamlSwapper() {
-        Optional<DatabaseDiscoveryRuleConfigurationYamlSwapper> optional = 
YamlRuleConfigurationSwapperFactory.getAllInstances().stream()
+        Optional<DatabaseDiscoveryRuleConfigurationYamlSwapper> result = 
YamlRuleConfigurationSwapperFactory.getAllInstances().stream()
                 .filter(each -> each instanceof 
DatabaseDiscoveryRuleConfigurationYamlSwapper)
                 .map(each -> (DatabaseDiscoveryRuleConfigurationYamlSwapper) 
each)
                 .findFirst();
-        assertTrue(optional.isPresent());
-        return optional.get();
+        assertTrue(result.isPresent());
+        return result.get();
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleConfigurationYamlSwapperTest.java
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleConfigurationYamlSwapperTest.java
index 8c0c54c1ca8..525b92a7f33 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleConfigurationYamlSwapperTest.java
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleConfigurationYamlSwapperTest.java
@@ -98,11 +98,11 @@ public final class 
ReadwriteSplittingRuleConfigurationYamlSwapperTest {
     }
     
     private ReadwriteSplittingRuleConfigurationYamlSwapper 
getReadwriteSplittingRuleConfigurationYamlSwapper() {
-        Optional<ReadwriteSplittingRuleConfigurationYamlSwapper> optional = 
YamlRuleConfigurationSwapperFactory.getAllInstances().stream()
+        Optional<ReadwriteSplittingRuleConfigurationYamlSwapper> result = 
YamlRuleConfigurationSwapperFactory.getAllInstances().stream()
                 .filter(each -> each instanceof 
ReadwriteSplittingRuleConfigurationYamlSwapper)
                 .map(each -> (ReadwriteSplittingRuleConfigurationYamlSwapper) 
each)
                 .findFirst();
-        assertTrue(optional.isPresent());
-        return optional.get();
+        assertTrue(result.isPresent());
+        return result.get();
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/route/engine/ShadowRouteEngine.java
 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/route/engine/ShadowRouteEngine.java
index 263c75c86ba..927b3b94c6d 100644
--- 
a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/route/engine/ShadowRouteEngine.java
+++ 
b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/route/engine/ShadowRouteEngine.java
@@ -46,12 +46,12 @@ public interface ShadowRouteEngine {
         for (RouteUnit each : routeUnits) {
             String logicName = each.getDataSourceMapper().getLogicName();
             String shadowLogicName = 
each.getDataSourceMapper().getActualName();
-            Optional<String> sourceDataSourceNameOptional = 
shadowRule.getSourceDataSourceName(shadowLogicName);
-            if (sourceDataSourceNameOptional.isPresent()) {
-                String sourceDataSourceName = 
sourceDataSourceNameOptional.get();
-                String shadowDataSourceName = 
shadowDataSourceMappings.get(sourceDataSourceName);
+            Optional<String> sourceDataSourceName = 
shadowRule.getSourceDataSourceName(shadowLogicName);
+            if (sourceDataSourceName.isPresent()) {
+                String shadowDataSourceName = 
shadowDataSourceMappings.get(sourceDataSourceName.get());
                 toBeRemoved.add(each);
-                toBeAdded.add(null == shadowDataSourceName ? new RouteUnit(new 
RouteMapper(logicName, sourceDataSourceName), each.getTableMappers())
+                toBeAdded.add(null == shadowDataSourceName
+                        ? new RouteUnit(new RouteMapper(logicName, 
sourceDataSourceName.get()), each.getTableMappers())
                         : new RouteUnit(new RouteMapper(logicName, 
shadowDataSourceName), each.getTableMappers()));
             }
         }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/data/pipeline/ShardingRuleAlteredJobConfigurationPreparer.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/data/pipeline/ShardingRuleAlteredJobConfigurationPreparer.java
index 12901478d4b..69f50967ed3 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/data/pipeline/ShardingRuleAlteredJobConfigurationPreparer.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/data/pipeline/ShardingRuleAlteredJobConfigurationPreparer.java
@@ -150,9 +150,9 @@ public final class 
ShardingRuleAlteredJobConfigurationPreparer implements RuleAl
         ShardingSphereDatabase database = 
PipelineContext.getContextManager().getMetaDataContexts().getDatabaseMetaData(jobConfig.getDatabaseName());
         DumperConfiguration dumperConfig = 
createDumperConfiguration(jobConfig.getDatabaseName(), dataSourceName,
                 
dataSourcePropsMap.get(dataSourceName).getAllLocalProperties(), tableNameMap, 
database);
-        Optional<ShardingRuleConfiguration> targetRuleConfigOptional = 
getTargetRuleConfiguration(jobConfig);
+        Optional<ShardingRuleConfiguration> targetRuleConfig = 
getTargetRuleConfiguration(jobConfig);
         Set<LogicTableName> reShardNeededTables = 
jobConfig.splitLogicTableNames().stream().map(LogicTableName::new).collect(Collectors.toSet());
-        Map<LogicTableName, Set<String>> shardingColumnsMap = 
getShardingColumnsMap(targetRuleConfigOptional.orElse(sourceRuleConfig), 
reShardNeededTables);
+        Map<LogicTableName, Set<String>> shardingColumnsMap = 
getShardingColumnsMap(targetRuleConfig.orElse(sourceRuleConfig), 
reShardNeededTables);
         ImporterConfiguration importerConfig = 
createImporterConfiguration(jobConfig, onRuleAlteredActionConfig, 
shardingColumnsMap, database);
         TaskConfiguration result = new TaskConfiguration(jobConfig, 
dumperConfig, importerConfig);
         log.info("createTaskConfiguration, dataSourceName={}, result={}", 
dataSourceName, result);
diff --git 
a/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/pagination/engine/RowNumberPaginationContextEngineTest.java
 
b/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/pagination/engine/RowNumberPaginationContextEngineTest.java
index 154e029893a..6d1a75602bf 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/pagination/engine/RowNumberPaginationContextEngineTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/pagination/engine/RowNumberPaginationContextEngineTest.java
@@ -120,11 +120,9 @@ public final class RowNumberPaginationContextEngineTest {
         BinaryOperationExpression expression = new 
BinaryOperationExpression(0, 0, left, right, operator, null);
         PaginationContext paginationContext = new 
RowNumberPaginationContextEngine().createPaginationContext(Collections.singletonList(expression),
 projectionsContext, Collections.emptyList());
         assertFalse(paginationContext.getOffsetSegment().isPresent());
-        Optional<PaginationValueSegment> paginationValueSegmentOptional = 
paginationContext.getRowCountSegment();
-        assertTrue(paginationValueSegmentOptional.isPresent());
-        PaginationValueSegment paginationValueSegment = 
paginationValueSegmentOptional.get();
-        assertThat(paginationValueSegment, 
instanceOf(NumberLiteralRowNumberValueSegment.class));
-        NumberLiteralRowNumberValueSegment numberLiteralRowNumberValueSegment 
= (NumberLiteralRowNumberValueSegment) paginationValueSegment;
+        Optional<PaginationValueSegment> paginationValueSegment = 
paginationContext.getRowCountSegment();
+        assertTrue(paginationValueSegment.isPresent());
+        NumberLiteralRowNumberValueSegment numberLiteralRowNumberValueSegment 
= (NumberLiteralRowNumberValueSegment) paginationValueSegment.get();
         assertThat(numberLiteralRowNumberValueSegment.getStartIndex(), is(0));
         assertThat(numberLiteralRowNumberValueSegment.getStopIndex(), is(10));
         assertThat(numberLiteralRowNumberValueSegment.getValue(), is(100L));
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/rule/ShardingSphereRuleMetaDataTest.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/rule/ShardingSphereRuleMetaDataTest.java
index a36a85b3b0d..e4410b93879 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/rule/ShardingSphereRuleMetaDataTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/rule/ShardingSphereRuleMetaDataTest.java
@@ -27,15 +27,15 @@ import static org.junit.Assert.assertTrue;
 
 public final class ShardingSphereRuleMetaDataTest {
     
-    private final ShardingSphereRuleMetaData shardingSphereRuleMetaData = new 
ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(new 
ShardingSphereRuleFixture()));
+    private final ShardingSphereRuleMetaData ruleMetaData = new 
ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(new 
ShardingSphereRuleFixture()));
     
     @Test
-    public void assertFilterRulesReturnOneItem() {
-        
assertThat(shardingSphereRuleMetaData.findRules(ShardingSphereRuleFixture.class).size(),
 is(1));
+    public void assertFindRules() {
+        
assertThat(ruleMetaData.findRules(ShardingSphereRuleFixture.class).size(), 
is(1));
     }
     
     @Test
-    public void assertFindSingleRuleReturnsIsPresent() {
-        
assertTrue(shardingSphereRuleMetaData.findSingleRule(ShardingSphereRuleFixture.class).isPresent());
+    public void assertFindSingleRule() {
+        
assertTrue(ruleMetaData.findSingleRule(ShardingSphereRuleFixture.class).isPresent());
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/expression/impl/ListExpressionConverter.java
 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/expression/impl/ListExpressionConverter.java
index a479c09fd83..4d9b2b94c59 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/expression/impl/ListExpressionConverter.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/expression/impl/ListExpressionConverter.java
@@ -39,15 +39,15 @@ public final class ListExpressionConverter implements 
SQLSegmentConverter<ListEx
     public Optional<SqlNode> convertToSQLNode(final ListExpression segment) {
         SqlNode left = null;
         for (ExpressionSegment each : segment.getItems()) {
-            Optional<SqlNode> optional = new 
ExpressionConverter().convertToSQLNode(each);
-            if (!optional.isPresent()) {
+            Optional<SqlNode> sqlNode = new 
ExpressionConverter().convertToSQLNode(each);
+            if (!sqlNode.isPresent()) {
                 continue;
             }
             if (null == left) {
-                left = optional.get();
+                left = sqlNode.get();
                 continue;
             }
-            left = new SqlBasicCall(SqlStdOperatorTable.OR, new 
SqlNode[]{left, optional.get()}, SqlParserPos.ZERO);
+            left = new SqlBasicCall(SqlStdOperatorTable.OR, new 
SqlNode[]{left, sqlNode.get()}, SqlParserPos.ZERO);
         }
         return Optional.ofNullable(left);
     }
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/RuleAlteredJobAPIImpl.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/RuleAlteredJobAPIImpl.java
index a94242cfa3b..ac3cb12b716 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/RuleAlteredJobAPIImpl.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/RuleAlteredJobAPIImpl.java
@@ -331,8 +331,8 @@ public final class RuleAlteredJobAPIImpl extends 
AbstractPipelineJobAPIImpl impl
         RuleAlteredContext ruleAlteredContext = 
RuleAlteredJobWorker.createRuleAlteredContext(jobConfig);
         GovernanceRepositoryAPI repositoryAPI = 
PipelineAPIFactory.getGovernanceRepositoryAPI();
         if (isDataConsistencyCheckNeeded(ruleAlteredContext)) {
-            Optional<Boolean> checkResultOptional = 
repositoryAPI.getJobCheckResult(jobId);
-            if (!checkResultOptional.isPresent() || 
!checkResultOptional.get()) {
+            Optional<Boolean> checkResult = 
repositoryAPI.getJobCheckResult(jobId);
+            if (!checkResult.isPresent() || !checkResult.get()) {
                 throw new PipelineVerifyFailedException("Data consistency 
check is not finished or failed.");
             }
         }
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/execute/PipelineJobExecutor.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/execute/PipelineJobExecutor.java
index 9dd43a3c79a..72474b2834c 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/execute/PipelineJobExecutor.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/execute/PipelineJobExecutor.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.data.pipeline.core.execute;
 
 import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.data.pipeline.api.RuleAlteredJobAPI;
 import org.apache.shardingsphere.data.pipeline.api.RuleAlteredJobAPIFactory;
 import 
org.apache.shardingsphere.data.pipeline.api.config.rulealtered.RuleAlteredJobConfiguration;
 import 
org.apache.shardingsphere.data.pipeline.api.config.rulealtered.yaml.RuleAlteredJobConfigurationSwapper;
@@ -54,47 +53,7 @@ public final class PipelineJobExecutor extends 
AbstractLifecycleExecutor {
     
     @Override
     protected void doStart() {
-        watchGovernanceRepositoryConfiguration();
-    }
-    
-    private void watchGovernanceRepositoryConfiguration() {
-        RuleAlteredJobAPI ruleAlteredJobAPI = 
RuleAlteredJobAPIFactory.getInstance();
-        
PipelineAPIFactory.getGovernanceRepositoryAPI().watch(DataPipelineConstants.DATA_PIPELINE_ROOT,
 event -> {
-            Optional<JobConfigurationPOJO> jobConfigPOJOOptional = 
getJobConfigPOJO(event);
-            if (!jobConfigPOJOOptional.isPresent()) {
-                return;
-            }
-            JobConfigurationPOJO jobConfigPOJO = jobConfigPOJOOptional.get();
-            boolean deleted = DataChangedEvent.Type.DELETED == event.getType();
-            boolean disabled = jobConfigPOJO.isDisabled();
-            if (deleted || disabled) {
-                log.info("jobId={}, deleted={}, disabled={}", 
jobConfigPOJO.getJobName(), deleted, disabled);
-                RuleAlteredJobSchedulerCenter.stop(jobConfigPOJO.getJobName());
-                // TODO refactor: dispatch to different job types
-                RuleAlteredJobConfiguration jobConfig = 
RuleAlteredJobConfigurationSwapper.swapToObject(jobConfigPOJO.getJobParameter());
-                if (deleted) {
-                    new RuleAlteredJobPreparer().cleanup(jobConfig);
-                } else if 
(RuleAlteredJobProgressDetector.isJobSuccessful(jobConfig.getJobShardingCount(),
 ruleAlteredJobAPI.getProgress(jobConfig).values())) {
-                    log.info("isJobSuccessful=true");
-                    new RuleAlteredJobPreparer().cleanup(jobConfig);
-                }
-                ScalingReleaseDatabaseLevelLockEvent releaseLockEvent = new 
ScalingReleaseDatabaseLevelLockEvent(jobConfig.getDatabaseName());
-                ShardingSphereEventBus.getInstance().post(releaseLockEvent);
-                return;
-            }
-            switch (event.getType()) {
-                case ADDED:
-                case UPDATED:
-                    if 
(RuleAlteredJobSchedulerCenter.existJob(jobConfigPOJO.getJobName())) {
-                        log.info("{} added to executing jobs failed since it 
already exists", jobConfigPOJO.getJobName());
-                    } else {
-                        executor.execute(() -> execute(jobConfigPOJO));
-                    }
-                    break;
-                default:
-                    break;
-            }
-        });
+        
PipelineAPIFactory.getGovernanceRepositoryAPI().watch(DataPipelineConstants.DATA_PIPELINE_ROOT,
 event -> getJobConfigPOJO(event).ifPresent(optional -> processEvent(event, 
optional)));
     }
     
     private Optional<JobConfigurationPOJO> getJobConfigPOJO(final 
DataChangedEvent event) {
@@ -111,9 +70,39 @@ public final class PipelineJobExecutor extends 
AbstractLifecycleExecutor {
         return Optional.empty();
     }
     
+    private void processEvent(final DataChangedEvent event, final 
JobConfigurationPOJO jobConfigPOJO) {
+        boolean isDeleted = DataChangedEvent.Type.DELETED == event.getType();
+        boolean isDisabled = jobConfigPOJO.isDisabled();
+        if (isDeleted || isDisabled) {
+            log.info("jobId={}, deleted={}, disabled={}", 
jobConfigPOJO.getJobName(), isDeleted, isDisabled);
+            RuleAlteredJobSchedulerCenter.stop(jobConfigPOJO.getJobName());
+            // TODO refactor: dispatch to different job types
+            RuleAlteredJobConfiguration jobConfig = 
RuleAlteredJobConfigurationSwapper.swapToObject(jobConfigPOJO.getJobParameter());
+            if (isDeleted) {
+                new RuleAlteredJobPreparer().cleanup(jobConfig);
+            } else if 
(RuleAlteredJobProgressDetector.isJobSuccessful(jobConfig.getJobShardingCount(),
 RuleAlteredJobAPIFactory.getInstance().getProgress(jobConfig).values())) {
+                log.info("isJobSuccessful=true");
+                new RuleAlteredJobPreparer().cleanup(jobConfig);
+            }
+            ShardingSphereEventBus.getInstance().post(new 
ScalingReleaseDatabaseLevelLockEvent(jobConfig.getDatabaseName()));
+            return;
+        }
+        switch (event.getType()) {
+            case ADDED:
+            case UPDATED:
+                if 
(RuleAlteredJobSchedulerCenter.existJob(jobConfigPOJO.getJobName())) {
+                    log.info("{} added to executing jobs failed since it 
already exists", jobConfigPOJO.getJobName());
+                } else {
+                    executor.execute(() -> execute(jobConfigPOJO));
+                }
+                break;
+            default:
+                break;
+        }
+    }
+    
     private void execute(final JobConfigurationPOJO jobConfigPOJO) {
-        RuleAlteredJobConfiguration jobConfig = 
RuleAlteredJobConfigurationSwapper.swapToObject(jobConfigPOJO.getJobParameter());
-        String databaseName = jobConfig.getDatabaseName();
+        String databaseName = 
RuleAlteredJobConfigurationSwapper.swapToObject(jobConfigPOJO.getJobParameter()).getDatabaseName();
         if (PipelineSimpleLock.getInstance().tryLock(databaseName, 3000)) {
             log.info("{} added to executing jobs success", 
jobConfigPOJO.getJobName());
             new OneOffJobBootstrap(PipelineAPIFactory.getRegistryCenter(), new 
RuleAlteredJob(), jobConfigPOJO.toJobConfiguration()).execute();
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
index cb6426da1b2..62a6ed17457 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
@@ -127,13 +127,11 @@ public final class PipelineDDLGenerator {
     
     private String generateActualDDLSQL(final DatabaseType databaseType, final 
String schemaName, final String tableName, final ShardingSphereDatabase 
database) throws SQLException {
         DataNodes dataNodes = new 
DataNodes(database.getRuleMetaData().getRules());
-        Optional<DataNode> optional = 
dataNodes.getDataNodes(tableName).stream()
-                .filter(dataNode -> 
database.getResource().getDataSources().containsKey(dataNode.getDataSourceName().contains(".")
-                        ? dataNode.getDataSourceName().split("\\.")[0]
-                        : dataNode.getDataSourceName()))
+        Optional<DataNode> filteredDataNode = 
dataNodes.getDataNodes(tableName).stream()
+                .filter(each -> 
database.getResource().getDataSources().containsKey(each.getDataSourceName().contains(".")
 ? each.getDataSourceName().split("\\.")[0] : each.getDataSourceName()))
                 .findFirst();
-        String dataSourceName = 
optional.map(DataNode::getDataSourceName).orElseGet(() -> 
database.getResource().getDataSources().keySet().iterator().next());
-        String actualTable = 
optional.map(DataNode::getTableName).orElse(tableName);
+        String dataSourceName = 
filteredDataNode.map(DataNode::getDataSourceName).orElseGet(() -> 
database.getResource().getDataSources().keySet().iterator().next());
+        String actualTable = 
filteredDataNode.map(DataNode::getTableName).orElse(tableName);
         return 
DialectDDLSQLGeneratorFactory.findInstance(databaseType).orElseThrow(() -> new 
ShardingSphereException("Failed to get dialect ddl sql generator"))
                 .generateDDLSQL(actualTable, schemaName, 
database.getResource().getDataSources().get(dataSourceName));
     }
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobPreparer.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobPreparer.java
index a50b9318e0c..eaf7532443f 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobPreparer.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobPreparer.java
@@ -176,9 +176,9 @@ public final class RuleAlteredJobPreparer {
     private IngestPosition<?> getIncrementalPosition(final 
RuleAlteredJobContext jobContext, final TaskConfiguration taskConfig,
                                                      final 
PipelineDataSourceManager dataSourceManager) throws SQLException {
         if (null != jobContext.getInitProgress()) {
-            Optional<IngestPosition<?>> positionOptional = 
jobContext.getInitProgress().getIncrementalPosition(taskConfig.getDumperConfig().getDataSourceName());
-            if (positionOptional.isPresent()) {
-                return positionOptional.get();
+            Optional<IngestPosition<?>> position = 
jobContext.getInitProgress().getIncrementalPosition(taskConfig.getDumperConfig().getDataSourceName());
+            if (position.isPresent()) {
+                return position.get();
             }
         }
         String databaseType = 
taskConfig.getJobConfig().getSourceDatabaseType();
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
index ac58354d882..7e33e163415 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobWorker.java
@@ -171,9 +171,9 @@ public final class RuleAlteredJobWorker {
             log.warn("There is uncompleted job with the same database name, 
please handle it first, current job will be ignored");
             return;
         }
-        Optional<RuleAlteredJobConfiguration> jobConfigOptional = 
createJobConfig(event);
-        if (jobConfigOptional.isPresent()) {
-            
RuleAlteredJobAPIFactory.getInstance().start(jobConfigOptional.get());
+        Optional<RuleAlteredJobConfiguration> jobConfig = 
createJobConfig(event);
+        if (jobConfig.isPresent()) {
+            RuleAlteredJobAPIFactory.getInstance().start(jobConfig.get());
         } else {
             log.info("Switch rule configuration immediately.");
             ScalingTaskFinishedEvent taskFinishedEvent = new 
ScalingTaskFinishedEvent(event.getDatabaseName(), event.getActiveVersion(), 
event.getNewVersion());
diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/service/SchemaMetaDataPersistServiceTest.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/service/SchemaMetaDataPersistServiceTest.java
index 701131efe96..55f60046365 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/service/SchemaMetaDataPersistServiceTest.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/service/SchemaMetaDataPersistServiceTest.java
@@ -79,15 +79,14 @@ public final class SchemaMetaDataPersistServiceTest {
         SchemaMetaDataPersistService schemaMetaDataPersistService = new 
SchemaMetaDataPersistService(repository);
         
when(repository.getChildrenKeys("/metadata/foo_db/schemas/foo_schema/tables")).thenReturn(Collections.singletonList("t_order"));
         
when(repository.get("/metadata/foo_db/schemas/foo_schema/tables/t_order")).thenReturn(readYAML());
-        Optional<ShardingSphereSchema> schemaOptional = 
schemaMetaDataPersistService.load("foo_db", "foo_schema");
-        assertTrue(schemaOptional.isPresent());
+        Optional<ShardingSphereSchema> schema = 
schemaMetaDataPersistService.load("foo_db", "foo_schema");
+        assertTrue(schema.isPresent());
         Optional<ShardingSphereSchema> empty = 
schemaMetaDataPersistService.load("test", "test");
         assertThat(empty, is(Optional.empty()));
-        ShardingSphereSchema schema = schemaOptional.get();
-        assertThat(schema.getAllTableNames(), 
is(Collections.singleton("t_order")));
-        assertThat(schema.get("t_order").getIndexes().keySet(), 
is(Collections.singleton("primary")));
-        assertThat(schema.getAllColumnNames("t_order").size(), is(1));
-        assertThat(schema.get("t_order").getColumns().keySet(), 
is(Collections.singleton("id")));
+        assertThat(schema.get().getAllTableNames(), 
is(Collections.singleton("t_order")));
+        assertThat(schema.get().get("t_order").getIndexes().keySet(), 
is(Collections.singleton("primary")));
+        assertThat(schema.get().getAllColumnNames("t_order").size(), is(1));
+        assertThat(schema.get().get("t_order").getColumns().keySet(), 
is(Collections.singleton("id")));
     }
     
     @Test
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
index 47170279b4e..8152852a287 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
@@ -51,10 +51,7 @@ public final class ShowAuthorityRuleHandler extends 
QueryableRALBackendHandler<S
     protected Collection<List<Object>> getRows(final ContextManager 
contextManager) {
         Optional<AuthorityRuleConfiguration> authorityRuleConfig = 
ProxyContext.getInstance().getContextManager()
                 
.getMetaDataContexts().getGlobalRuleMetaData().findRuleConfigurations(AuthorityRuleConfiguration.class).stream().findFirst();
-        if (!authorityRuleConfig.isPresent()) {
-            return Collections.emptyList();
-        }
-        return Collections.singleton(getRow(authorityRuleConfig.get()));
+        return authorityRuleConfig.isPresent() ? 
Collections.singleton(getRow(authorityRuleConfig.get())) : 
Collections.emptyList();
     }
     
     private List<Object> getRow(final AuthorityRuleConfiguration 
authorityRuleConfig) {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
index 6f817a5670e..45c79436d22 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
@@ -51,18 +51,16 @@ public final class ShowSQLParserRuleHandler extends 
QueryableRALBackendHandler<S
     
     @Override
     protected Collection<List<Object>> getRows(final ContextManager 
contextManager) {
-        Optional<SQLParserRuleConfiguration> 
sqlParserRuleConfigurationOptional = 
ProxyContext.getInstance().getContextManager()
+        Optional<SQLParserRuleConfiguration> sqlParserRuleConfig = 
ProxyContext.getInstance().getContextManager()
                 
.getMetaDataContexts().getGlobalRuleMetaData().findRuleConfigurations(SQLParserRuleConfiguration.class).stream().findAny();
-        if (!sqlParserRuleConfigurationOptional.isPresent()) {
-            return Collections.emptyList();
-        }
-        SQLParserRuleConfiguration sqlParserRuleConfig = 
sqlParserRuleConfigurationOptional.get();
-        List<Object> row = new LinkedList<>();
-        
row.add(String.valueOf(sqlParserRuleConfig.isSqlCommentParseEnabled()));
-        row.add(GSON.toJson(sqlParserRuleConfig.getParseTreeCache()));
-        row.add(GSON.toJson(sqlParserRuleConfig.getSqlStatementCache()));
-        Collection<List<Object>> result = new LinkedList<>();
-        result.add(row);
+        return sqlParserRuleConfig.isPresent() ? 
Collections.singleton(getRow(sqlParserRuleConfig.get())) : 
Collections.emptyList();
+    }
+    
+    private List<Object> getRow(final SQLParserRuleConfiguration 
sqlParserRuleConfig) {
+        List<Object> result = new LinkedList<>();
+        
result.add(String.valueOf(sqlParserRuleConfig.isSqlCommentParseEnabled()));
+        result.add(GSON.toJson(sqlParserRuleConfig.getParseTreeCache()));
+        result.add(GSON.toJson(sqlParserRuleConfig.getSqlStatementCache()));
         return result;
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/MySQLAdminExecutorFactoryTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/MySQLAdminExecutorFactoryTest.java
index a26b25f6f1f..c40d2194b3b 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/MySQLAdminExecutorFactoryTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/MySQLAdminExecutorFactoryTest.java
@@ -37,35 +37,36 @@ import static org.mockito.Mockito.when;
 
 public final class MySQLAdminExecutorFactoryTest {
     
-    private final MySQLAdminExecutorCreator mySQLAdminExecutorFactory = new 
MySQLAdminExecutorCreator();
-    
+    @SuppressWarnings("rawtypes")
     @Test
     public void assertNewInstanceWithMySQLShowFunctionStatusStatement() {
         MySQLShowFunctionStatusStatement statement = 
mock(MySQLShowFunctionStatusStatement.class);
         CommonSQLStatementContext statementContext = 
mock(CommonSQLStatementContext.class);
         when(statementContext.getSqlStatement()).thenReturn(statement);
-        Optional<DatabaseAdminExecutor> executorOptional = 
mySQLAdminExecutorFactory.create(statementContext);
-        assertTrue(executorOptional.isPresent());
-        assertThat(executorOptional.get(), 
instanceOf(ShowFunctionStatusExecutor.class));
+        Optional<DatabaseAdminExecutor> executor = new 
MySQLAdminExecutorCreator().create(statementContext);
+        assertTrue(executor.isPresent());
+        assertThat(executor.get(), 
instanceOf(ShowFunctionStatusExecutor.class));
     }
     
+    @SuppressWarnings("rawtypes")
     @Test
     public void assertNewInstanceWithMySQLShowProcedureStatusStatement() {
         MySQLShowProcedureStatusStatement statement = 
mock(MySQLShowProcedureStatusStatement.class);
         CommonSQLStatementContext statementContext = 
mock(CommonSQLStatementContext.class);
         when(statementContext.getSqlStatement()).thenReturn(statement);
-        Optional<DatabaseAdminExecutor> executorOptional = 
mySQLAdminExecutorFactory.create(statementContext);
-        assertTrue(executorOptional.isPresent());
-        assertThat(executorOptional.get(), 
instanceOf(ShowProcedureStatusExecutor.class));
+        Optional<DatabaseAdminExecutor> executor = new 
MySQLAdminExecutorCreator().create(statementContext);
+        assertTrue(executor.isPresent());
+        assertThat(executor.get(), 
instanceOf(ShowProcedureStatusExecutor.class));
     }
     
+    @SuppressWarnings("rawtypes")
     @Test
     public void assertNewInstanceWithMySQLShowTablesStatement() {
         MySQLShowTablesStatement statement = 
mock(MySQLShowTablesStatement.class);
         CommonSQLStatementContext statementContext = 
mock(CommonSQLStatementContext.class);
         when(statementContext.getSqlStatement()).thenReturn(statement);
-        Optional<DatabaseAdminExecutor> executorOptional = 
mySQLAdminExecutorFactory.create(statementContext);
-        assertTrue(executorOptional.isPresent());
-        assertThat(executorOptional.get(), 
instanceOf(ShowTablesExecutor.class));
+        Optional<DatabaseAdminExecutor> executor = new 
MySQLAdminExecutorCreator().create(statementContext);
+        assertTrue(executor.isPresent());
+        assertThat(executor.get(), instanceOf(ShowTablesExecutor.class));
     }
 }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDCLStatementSQLVisitor.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDCLStatementSQLVisitor.java
index db8cee4b4c5..18a9e5a3347 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDCLStatementSQLVisitor.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDCLStatementSQLVisitor.java
@@ -58,16 +58,16 @@ public final class OpenGaussDCLStatementSQLVisitor extends 
OpenGaussStatementSQL
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
         OpenGaussGrantStatement result = new OpenGaussGrantStatement();
-        Optional<Collection<SimpleTableSegment>> tableSegmentOptional = null 
== ctx.privilegeClause() ? Optional.empty() : 
getTableFromPrivilegeClause(ctx.privilegeClause());
-        tableSegmentOptional.ifPresent(optional -> 
result.getTables().addAll(optional));
+        Optional<Collection<SimpleTableSegment>> tableSegment = null == 
ctx.privilegeClause() ? Optional.empty() : 
getTableFromPrivilegeClause(ctx.privilegeClause());
+        tableSegment.ifPresent(optional -> 
result.getTables().addAll(optional));
         return result;
     }
     
     @Override
     public ASTNode visitRevoke(final RevokeContext ctx) {
         OpenGaussRevokeStatement result = new OpenGaussRevokeStatement();
-        Optional<Collection<SimpleTableSegment>> tableSegmentOptional = null 
== ctx.privilegeClause() ? Optional.empty() : 
getTableFromPrivilegeClause(ctx.privilegeClause());
-        tableSegmentOptional.ifPresent(optional -> 
result.getTables().addAll(optional));
+        Optional<Collection<SimpleTableSegment>> tableSegment = null == 
ctx.privilegeClause() ? Optional.empty() : 
getTableFromPrivilegeClause(ctx.privilegeClause());
+        tableSegment.ifPresent(optional -> 
result.getTables().addAll(optional));
         return result;
     }
     
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDCLStatementSQLVisitor.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDCLStatementSQLVisitor.java
index f9d9ddae8cc..ae118197ef1 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDCLStatementSQLVisitor.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDCLStatementSQLVisitor.java
@@ -58,16 +58,16 @@ public final class PostgreSQLDCLStatementSQLVisitor extends 
PostgreSQLStatementS
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
         PostgreSQLGrantStatement result = new PostgreSQLGrantStatement();
-        Optional<Collection<SimpleTableSegment>> tableSegmentOptional = null 
== ctx.privilegeClause() ? Optional.empty() : 
getTableFromPrivilegeClause(ctx.privilegeClause());
-        tableSegmentOptional.ifPresent(optional -> 
result.getTables().addAll(optional));
+        Optional<Collection<SimpleTableSegment>> tableSegment = null == 
ctx.privilegeClause() ? Optional.empty() : 
getTableFromPrivilegeClause(ctx.privilegeClause());
+        tableSegment.ifPresent(optional -> 
result.getTables().addAll(optional));
         return result;
     }
     
     @Override
     public ASTNode visitRevoke(final RevokeContext ctx) {
         PostgreSQLRevokeStatement result = new PostgreSQLRevokeStatement();
-        Optional<Collection<SimpleTableSegment>> tableSegmentOptional = null 
== ctx.privilegeClause() ? Optional.empty() : 
getTableFromPrivilegeClause(ctx.privilegeClause());
-        tableSegmentOptional.ifPresent(optional -> 
result.getTables().addAll(optional));
+        Optional<Collection<SimpleTableSegment>> tableSegment = null == 
ctx.privilegeClause() ? Optional.empty() : 
getTableFromPrivilegeClause(ctx.privilegeClause());
+        tableSegment.ifPresent(optional -> 
result.getTables().addAll(optional));
         return result;
     }
     
diff --git 
a/shardingsphere-test/shardingsphere-pipeline-test/src/test/java/org/apache/shardingsphere/data/pipeline/core/job/progress/JobProgressTest.java
 
b/shardingsphere-test/shardingsphere-pipeline-test/src/test/java/org/apache/shardingsphere/data/pipeline/core/job/progress/JobProgressTest.java
index f49b80c8f2e..784face4584 100644
--- 
a/shardingsphere-test/shardingsphere-pipeline-test/src/test/java/org/apache/shardingsphere/data/pipeline/core/job/progress/JobProgressTest.java
+++ 
b/shardingsphere-test/shardingsphere-pipeline-test/src/test/java/org/apache/shardingsphere/data/pipeline/core/job/progress/JobProgressTest.java
@@ -52,9 +52,9 @@ public final class JobProgressTest {
     @Test
     public void assertGetIncrementalPosition() {
         JobProgress jobProgress = 
getJobProgress(ConfigurationFileUtil.readFile("job-progress.yaml"));
-        Optional<IngestPosition<?>> positionOptional = 
jobProgress.getIncrementalPosition("ds0");
-        assertTrue(positionOptional.isPresent());
-        assertThat(positionOptional.get(), 
instanceOf(PlaceholderPosition.class));
+        Optional<IngestPosition<?>> position = 
jobProgress.getIncrementalPosition("ds0");
+        assertTrue(position.isPresent());
+        assertThat(position.get(), instanceOf(PlaceholderPosition.class));
     }
     
     @Test

Reply via email to