This is an automated email from the ASF dual-hosted git repository.

yx9o 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 2e1d6c7df8d Add JVMInlineExpressionParser to process groovy expr for 
different JVM (#25183)
2e1d6c7df8d is described below

commit 2e1d6c7df8d7b2f90ca41c6d9bb8505717d29efb
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Apr 16 23:34:38 2023 +0800

    Add JVMInlineExpressionParser to process groovy expr for different JVM 
(#25183)
    
    * Remove static methods on InlineExpressionParser
    
    * Add JVMInlineExpressionParser
    
    * For javadoc
    
    * For javadoc
---
 ...ReadwriteSplittingRuleConfigurationChecker.java |  4 +-
 .../rule/ReadwriteSplittingRule.java               |  6 +--
 .../complex/ComplexInlineShardingAlgorithm.java    |  4 +-
 .../sharding/hint/HintInlineShardingAlgorithm.java |  4 +-
 .../sharding/inline/InlineShardingAlgorithm.java   |  4 +-
 .../shardingsphere/sharding/rule/ShardingRule.java |  4 +-
 .../shardingsphere/sharding/rule/TableRule.java    |  4 +-
 .../checker/ShardingTableRuleStatementChecker.java |  8 +--
 .../sharding/CoreHintShardingAlgorithmFixture.java |  4 +-
 .../groovy/expr/HotspotInlineExpressionParser.java | 35 ++++--------
 .../groovy/expr/JVMInlineExpressionParser.java     | 52 ++++++++++++++++++
 .../expr/HotspotInlineExpressionParserTest.java    | 26 ++++-----
 .../util/expr/EspressoInlineExpressionParser.java  | 63 ++++++++--------------
 .../infra/util/expr/InlineExpressionParser.java    | 45 +++++-----------
 .../util/expr/InlineExpressionParserTest.java      | 26 ++++-----
 .../ShardingRuleConfigurationImportChecker.java    |  4 +-
 .../test/e2e/cases/dataset/DataSet.java            |  2 +-
 .../engine/composer/BatchE2EContainerComposer.java |  2 +-
 .../test/e2e/engine/type/DDLE2EIT.java             |  2 +-
 .../test/e2e/engine/type/dml/BaseDMLE2EIT.java     |  2 +-
 .../test/e2e/env/DataSetEnvironmentManager.java    |  2 +-
 21 files changed, 151 insertions(+), 152 deletions(-)

diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
index 4a460dead2f..9379bd697ef 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
@@ -81,7 +81,7 @@ public final class ReadwriteSplittingRuleConfigurationChecker 
implements RuleCon
     
     private void checkWriteDataSourceNames(final String databaseName, final 
Map<String, DataSource> dataSourceMap, final Collection<String> 
addedWriteDataSourceNames,
                                            final 
ReadwriteSplittingDataSourceRuleConfiguration config, final 
Collection<ShardingSphereRule> rules) {
-        for (String each : new 
InlineExpressionParser(config.getWriteDataSourceName()).splitAndEvaluate()) {
+        for (String each : new 
InlineExpressionParser().splitAndEvaluate(config.getWriteDataSourceName())) {
             
ShardingSpherePreconditions.checkState(dataSourceMap.containsKey(each) || 
containsInOtherRules(each, rules),
                     () -> new 
DataSourceNameExistedException(String.format("Write data source name `%s` not 
in database `%s`.", each, databaseName)));
             
ShardingSpherePreconditions.checkState(addedWriteDataSourceNames.add(each),
@@ -99,7 +99,7 @@ public final class ReadwriteSplittingRuleConfigurationChecker 
implements RuleCon
     }
     
     private void checkReadeDataSourceNames(final String databaseName, final 
Map<String, DataSource> dataSourceMap, final Collection<String> 
addedReadDataSourceNames, final String readDataSourceName) {
-        for (String each : new 
InlineExpressionParser(readDataSourceName).splitAndEvaluate()) {
+        for (String each : new 
InlineExpressionParser().splitAndEvaluate(readDataSourceName)) {
             
ShardingSpherePreconditions.checkState(dataSourceMap.containsKey(each),
                     () -> new 
DataSourceNameExistedException(String.format("Read data source name `%s` not in 
database `%s`.", each, databaseName)));
             
ShardingSpherePreconditions.checkState(addedReadDataSourceNames.add(each),
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
index 818c5f199d9..51723684111 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
@@ -106,10 +106,10 @@ public final class ReadwriteSplittingRule implements 
DatabaseRule, DataSourceCon
     
     private Map<String, ReadwriteSplittingDataSourceRule> 
createStaticDataSourceRules(final ReadwriteSplittingDataSourceRuleConfiguration 
config,
                                                                                
       final ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm) {
-        List<String> inlineReadwriteDataSourceNames = new 
InlineExpressionParser(config.getName()).splitAndEvaluate();
-        List<String> inlineWriteDatasourceNames = new 
InlineExpressionParser(config.getWriteDataSourceName()).splitAndEvaluate();
+        List<String> inlineReadwriteDataSourceNames = new 
InlineExpressionParser().splitAndEvaluate(config.getName());
+        List<String> inlineWriteDatasourceNames = new 
InlineExpressionParser().splitAndEvaluate(config.getWriteDataSourceName());
         List<List<String>> inlineReadDatasourceNames = 
config.getReadDataSourceNames().stream()
-                .map(each -> new 
InlineExpressionParser(each).splitAndEvaluate()).collect(Collectors.toList());
+                .map(each -> new 
InlineExpressionParser().splitAndEvaluate(each)).collect(Collectors.toList());
         
ShardingSpherePreconditions.checkState(inlineWriteDatasourceNames.size() == 
inlineReadwriteDataSourceNames.size(),
                 () -> new 
InvalidInlineExpressionDataSourceNameException("Inline expression write data 
source names size error."));
         inlineReadDatasourceNames.forEach(each -> 
ShardingSpherePreconditions.checkState(each.size() == 
inlineReadwriteDataSourceNames.size(),
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/complex/ComplexInlineShardingAlgorithm.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/complex/ComplexInlineShardingAlgorithm.java
index 46b66e8510d..d1344dc752c 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/complex/ComplexInlineShardingAlgorithm.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/complex/ComplexInlineShardingAlgorithm.java
@@ -64,7 +64,7 @@ public final class ComplexInlineShardingAlgorithm implements 
ComplexKeysSharding
     private String getAlgorithmExpression(final Properties props) {
         String algorithmExpression = 
props.getProperty(ALGORITHM_EXPRESSION_KEY);
         ShardingSpherePreconditions.checkNotNull(algorithmExpression, () -> 
new ShardingAlgorithmInitializationException(getType(), "Inline sharding 
algorithm expression can not be null."));
-        return 
InlineExpressionParser.handlePlaceHolder(algorithmExpression.trim());
+        return new 
InlineExpressionParser().handlePlaceHolder(algorithmExpression.trim());
     }
     
     private Collection<String> getShardingColumns(final Properties props) {
@@ -124,7 +124,7 @@ public final class ComplexInlineShardingAlgorithm 
implements ComplexKeysSharding
     }
     
     private Closure<?> createClosure() {
-        Closure<?> result = new 
InlineExpressionParser(algorithmExpression).evaluateClosure().rehydrate(new 
Expando(), null, null);
+        Closure<?> result = new 
InlineExpressionParser().evaluateClosure(algorithmExpression).rehydrate(new 
Expando(), null, null);
         result.setResolveStrategy(Closure.DELEGATE_ONLY);
         return result;
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/hint/HintInlineShardingAlgorithm.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/hint/HintInlineShardingAlgorithm.java
index 229311b8dc5..1d25a4f56b5 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/hint/HintInlineShardingAlgorithm.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/hint/HintInlineShardingAlgorithm.java
@@ -50,7 +50,7 @@ public final class HintInlineShardingAlgorithm implements 
HintShardingAlgorithm<
     private String getAlgorithmExpression(final Properties props) {
         String algorithmExpression = 
props.getProperty(ALGORITHM_EXPRESSION_KEY, DEFAULT_ALGORITHM_EXPRESSION);
         ShardingSpherePreconditions.checkNotNull(algorithmExpression, () -> 
new ShardingAlgorithmInitializationException(getType(), "Inline sharding 
algorithm expression can not be null."));
-        return 
InlineExpressionParser.handlePlaceHolder(algorithmExpression.trim());
+        return new 
InlineExpressionParser().handlePlaceHolder(algorithmExpression.trim());
     }
     
     @Override
@@ -65,7 +65,7 @@ public final class HintInlineShardingAlgorithm implements 
HintShardingAlgorithm<
     }
     
     private Closure<?> createClosure() {
-        Closure<?> result = new 
InlineExpressionParser(algorithmExpression).evaluateClosure().rehydrate(new 
Expando(), null, null);
+        Closure<?> result = new 
InlineExpressionParser().evaluateClosure(algorithmExpression).rehydrate(new 
Expando(), null, null);
         result.setResolveStrategy(Closure.DELEGATE_ONLY);
         return result;
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/inline/InlineShardingAlgorithm.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/inline/InlineShardingAlgorithm.java
index 3062feae91b..3e7516ed341 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/inline/InlineShardingAlgorithm.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/inline/InlineShardingAlgorithm.java
@@ -56,7 +56,7 @@ public final class InlineShardingAlgorithm implements 
StandardShardingAlgorithm<
         String expression = props.getProperty(ALGORITHM_EXPRESSION_KEY);
         ShardingSpherePreconditions.checkState(null != expression && 
!expression.isEmpty(),
                 () -> new ShardingAlgorithmInitializationException(getType(), 
"Inline sharding algorithm expression cannot be null or empty"));
-        return InlineExpressionParser.handlePlaceHolder(expression.trim());
+        return new 
InlineExpressionParser().handlePlaceHolder(expression.trim());
     }
     
     private boolean isAllowRangeQuery(final Properties props) {
@@ -79,7 +79,7 @@ public final class InlineShardingAlgorithm implements 
StandardShardingAlgorithm<
     }
     
     private Closure<?> createClosure() {
-        Closure<?> result = new 
InlineExpressionParser(algorithmExpression).evaluateClosure().rehydrate(new 
Expando(), null, null);
+        Closure<?> result = new 
InlineExpressionParser().evaluateClosure(algorithmExpression).rehydrate(new 
Expando(), null, null);
         result.setResolveStrategy(Closure.DELEGATE_ONLY);
         return result;
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index de0efa1b67f..d454f24a32c 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -164,12 +164,12 @@ public final class ShardingRule implements DatabaseRule, 
DataNodeContainedRule,
     }
     
     private Collection<String> getDataSourceNames(final 
ShardingAutoTableRuleConfiguration shardingAutoTableRuleConfig) {
-        List<String> actualDataSources = new 
InlineExpressionParser(shardingAutoTableRuleConfig.getActualDataSources()).splitAndEvaluate();
+        List<String> actualDataSources = new 
InlineExpressionParser().splitAndEvaluate(shardingAutoTableRuleConfig.getActualDataSources());
         return new HashSet<>(actualDataSources);
     }
     
     private Collection<String> getDataSourceNames(final 
ShardingTableRuleConfiguration shardingTableRuleConfig) {
-        List<String> actualDataNodes = new 
InlineExpressionParser(shardingTableRuleConfig.getActualDataNodes()).splitAndEvaluate();
+        List<String> actualDataNodes = new 
InlineExpressionParser().splitAndEvaluate(shardingTableRuleConfig.getActualDataNodes());
         return actualDataNodes.stream().map(each -> new 
DataNode(each).getDataSourceName()).collect(Collectors.toList());
     }
     
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
index cad887647c9..93362b3d753 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
@@ -106,7 +106,7 @@ public final class TableRule {
     
     public TableRule(final ShardingTableRuleConfiguration tableRuleConfig, 
final Collection<String> dataSourceNames, final String 
defaultGenerateKeyColumn) {
         logicTable = tableRuleConfig.getLogicTable();
-        List<String> dataNodes = new 
InlineExpressionParser(tableRuleConfig.getActualDataNodes()).splitAndEvaluate();
+        List<String> dataNodes = new 
InlineExpressionParser().splitAndEvaluate(tableRuleConfig.getActualDataNodes());
         dataNodeIndexMap = new HashMap<>(dataNodes.size(), 1);
         actualDataNodes = isEmptyDataNodes(dataNodes) ? 
generateDataNodes(tableRuleConfig.getLogicTable(), dataSourceNames) : 
generateDataNodes(dataNodes, dataSourceNames);
         actualTables = getActualTables();
@@ -158,7 +158,7 @@ public final class TableRule {
             return new LinkedList<>();
         }
         List<String> dataSources = 
Strings.isNullOrEmpty(tableRuleConfig.getActualDataSources()) ? new 
LinkedList<>(dataSourceNames)
-                : new 
InlineExpressionParser(tableRuleConfig.getActualDataSources()).splitAndEvaluate();
+                : new 
InlineExpressionParser().splitAndEvaluate(tableRuleConfig.getActualDataSources());
         return 
DataNodeUtils.getFormatDataNodes(shardingAlgorithm.getAutoTablesAmount(), 
logicTable, dataSources);
     }
     
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
index ae930722215..f26d87848a0 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
@@ -189,12 +189,12 @@ public final class ShardingTableRuleStatementChecker {
         }
         Collection<String> result = new LinkedHashSet<>();
         tableRuleConfigs.forEach(each -> 
result.addAll(getDataSourceNames(each)));
-        autoTableRuleConfigs.forEach(each -> result.addAll(new 
InlineExpressionParser(each.getActualDataSources()).splitAndEvaluate()));
+        autoTableRuleConfigs.forEach(each -> result.addAll(new 
InlineExpressionParser().splitAndEvaluate(each.getActualDataSources())));
         return result;
     }
     
     private static Collection<String> getDataSourceNames(final 
ShardingTableRuleConfiguration shardingTableRuleConfig) {
-        return new 
InlineExpressionParser(shardingTableRuleConfig.getActualDataNodes()).splitAndEvaluate().stream().map(each
 -> new DataNode(each).getDataSourceName()).collect(Collectors.toList());
+        return new 
InlineExpressionParser().splitAndEvaluate(shardingTableRuleConfig.getActualDataNodes()).stream().map(each
 -> new DataNode(each).getDataSourceName()).collect(Collectors.toList());
     }
     
     private static Collection<String> getDataSourceNames(final 
Collection<String> actualDataNodes) {
@@ -326,7 +326,7 @@ public final class ShardingTableRuleStatementChecker {
         Collection<String> result = new LinkedHashSet<>();
         
result.addAll(config.getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getActualDataSources)
                 .map(each -> 
Splitter.on(",").trimResults().splitToList(each)).flatMap(Collection::stream).collect(Collectors.toSet()));
-        result.addAll(config.getTables().stream().map(each -> new 
InlineExpressionParser(each.getActualDataNodes()).splitAndEvaluate())
+        result.addAll(config.getTables().stream().map(each -> new 
InlineExpressionParser().splitAndEvaluate(each.getActualDataNodes()))
                 .flatMap(Collection::stream).distinct().map(each -> new 
DataNode(each).getDataSourceName()).collect(Collectors.toSet()));
         return result;
     }
@@ -337,7 +337,7 @@ public final class ShardingTableRuleStatementChecker {
     }
     
     private static Collection<String> parseDateSource(final String dateSource) 
{
-        return new InlineExpressionParser(dateSource).splitAndEvaluate();
+        return new InlineExpressionParser().splitAndEvaluate(dateSource);
     }
     
     private static Collection<String> getLogicDataSources(final 
ShardingSphereDatabase database) {
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/fixture/sharding/CoreHintShardingAlgorithmFixture.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/fixture/sharding/CoreHintShardingAlgorithmFixture.java
index 36c792d18f5..414858015b2 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/fixture/sharding/CoreHintShardingAlgorithmFixture.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/fixture/sharding/CoreHintShardingAlgorithmFixture.java
@@ -46,7 +46,7 @@ public final class CoreHintShardingAlgorithmFixture 
implements HintShardingAlgor
     private String getAlgorithmExpression(final Properties props) {
         String algorithmExpression = 
props.getProperty(ALGORITHM_EXPRESSION_KEY, DEFAULT_ALGORITHM_EXPRESSION);
         Preconditions.checkNotNull(algorithmExpression, "Inline sharding 
algorithm expression can not be null.");
-        return 
InlineExpressionParser.handlePlaceHolder(algorithmExpression.trim());
+        return new 
InlineExpressionParser().handlePlaceHolder(algorithmExpression.trim());
     }
     
     @Override
@@ -61,7 +61,7 @@ public final class CoreHintShardingAlgorithmFixture 
implements HintShardingAlgor
     }
     
     private Closure<?> createClosure() {
-        Closure<?> result = new 
InlineExpressionParser(algorithmExpression).evaluateClosure().rehydrate(new 
Expando(), null, null);
+        Closure<?> result = new 
InlineExpressionParser().evaluateClosure(algorithmExpression).rehydrate(new 
Expando(), null, null);
         result.setResolveStrategy(Closure.DELEGATE_ONLY);
         return result;
     }
diff --git 
a/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParser.java
 
b/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParser.java
index 12dedfae214..032aaec5c05 100644
--- 
a/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParser.java
+++ 
b/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParser.java
@@ -36,10 +36,10 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 /**
- * Hotspot Inline expression parser.
+ * Hotspot inline expression parser.
  */
 @RequiredArgsConstructor
-public final class HotspotInlineExpressionParser {
+public final class HotspotInlineExpressionParser implements 
JVMInlineExpressionParser {
     
     private static final char SPLITTER = ',';
     
@@ -47,33 +47,18 @@ public final class HotspotInlineExpressionParser {
     
     private static final GroovyShell SHELL = new GroovyShell();
     
-    private final String inlineExpression;
-    
-    /**
-     * Replace all inline expression placeholders.
-     * 
-     * @param inlineExpression inline expression with {@code $->}
-     * @return result inline expression with {@code $}
-     */
-    public static String handlePlaceHolder(final String inlineExpression) {
+    @Override
+    public String handlePlaceHolder(final String inlineExpression) {
         return inlineExpression.contains("$->{") ? 
inlineExpression.replaceAll("\\$->\\{", "\\$\\{") : inlineExpression;
     }
     
-    /**
-     * Split and evaluate inline expression.
-     *
-     * @return result list
-     */
-    public List<String> splitAndEvaluate() {
-        return Strings.isNullOrEmpty(inlineExpression) ? 
Collections.emptyList() : flatten(evaluate(split()));
+    @Override
+    public List<String> splitAndEvaluate(final String inlineExpression) {
+        return Strings.isNullOrEmpty(inlineExpression) ? 
Collections.emptyList() : flatten(evaluate(split(inlineExpression)));
     }
     
-    /**
-     * Evaluate closure.
-     *
-     * @return closure
-     */
-    public Closure<?> evaluateClosure() {
+    @Override
+    public Closure<?> evaluateClosure(final String inlineExpression) {
         return (Closure<?>) evaluate("{it -> \"" + inlineExpression + "\"}");
     }
     
@@ -103,7 +88,7 @@ public final class HotspotInlineExpressionParser {
         return script.run();
     }
     
-    private List<String> split() {
+    private List<String> split(final String inlineExpression) {
         List<String> result = new ArrayList<>();
         StringBuilder segment = new StringBuilder();
         int bracketsDepth = 0;
diff --git 
a/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/JVMInlineExpressionParser.java
 
b/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/JVMInlineExpressionParser.java
new file mode 100644
index 00000000000..65a57a57537
--- /dev/null
+++ 
b/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/JVMInlineExpressionParser.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.infra.util.groovy.expr;
+
+import groovy.lang.Closure;
+
+import java.util.List;
+
+/**
+ * JVM inline expression parser.
+ */
+public interface JVMInlineExpressionParser {
+    
+    /**
+     * Replace all inline expression placeholders.
+     *
+     * @param inlineExpression inline expression with {@code $->}
+     * @return result inline expression with {@code $}
+     */
+    String handlePlaceHolder(String inlineExpression);
+    
+    /**
+     * Split and evaluate inline expression.
+     *
+     * @param inlineExpression inline expression
+     * @return result list
+     */
+    List<String> splitAndEvaluate(String inlineExpression);
+    
+    /**
+     * Evaluate closure.
+     *
+     * @param inlineExpression inline expression
+     * @return closure
+     */
+    Closure<?> evaluateClosure(String inlineExpression);
+}
diff --git 
a/infra/util-groovy/src/test/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParserTest.java
 
b/infra/util-groovy/src/test/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParserTest.java
index a623679db2c..3b35fed5ff2 100644
--- 
a/infra/util-groovy/src/test/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParserTest.java
+++ 
b/infra/util-groovy/src/test/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParserTest.java
@@ -30,62 +30,62 @@ class HotspotInlineExpressionParserTest {
     
     @Test
     void assertEvaluateForExpressionIsNull() {
-        List<String> expected = new 
HotspotInlineExpressionParser(null).splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate(null);
         assertThat(expected, is(Collections.<String>emptyList()));
     }
     
     @Test
     void assertEvaluateForSimpleString() {
-        List<String> expected = new HotspotInlineExpressionParser(" t_order_0, 
t_order_1 ").splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate(" t_order_0, t_order_1 ");
         assertThat(expected.size(), is(2));
         assertThat(expected, hasItems("t_order_0", "t_order_1"));
     }
     
     @Test
     void assertEvaluateForNull() {
-        List<String> expected = new 
HotspotInlineExpressionParser("t_order_${null}").splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate("t_order_${null}");
         assertThat(expected.size(), is(1));
         assertThat(expected, hasItems("t_order_"));
     }
     
     @Test
     void assertEvaluateForLiteral() {
-        List<String> expected = new 
HotspotInlineExpressionParser("t_order_${'xx'}").splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate("t_order_${'xx'}");
         assertThat(expected.size(), is(1));
         assertThat(expected, hasItems("t_order_xx"));
     }
     
     @Test
     void assertEvaluateForArray() {
-        List<String> expected = new 
HotspotInlineExpressionParser("t_order_${[0, 1, 2]},t_order_item_${[0, 
2]}").splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate("t_order_${[0, 1, 
2]},t_order_item_${[0, 2]}");
         assertThat(expected.size(), is(5));
         assertThat(expected, hasItems("t_order_0", "t_order_1", "t_order_2", 
"t_order_item_0", "t_order_item_2"));
     }
     
     @Test
     void assertEvaluateForRange() {
-        List<String> expected = new 
HotspotInlineExpressionParser("t_order_${0..2},t_order_item_${0..1}").splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate("t_order_${0..2},t_order_item_${0..1}");
         assertThat(expected.size(), is(5));
         assertThat(expected, hasItems("t_order_0", "t_order_1", "t_order_2", 
"t_order_item_0", "t_order_item_1"));
     }
     
     @Test
     void assertEvaluateForComplex() {
-        List<String> expected = new 
HotspotInlineExpressionParser("t_${['new','old']}_order_${1..2}, 
t_config").splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate("t_${['new','old']}_order_${1..2},
 t_config");
         assertThat(expected.size(), is(5));
         assertThat(expected, hasItems("t_new_order_1", "t_new_order_2", 
"t_old_order_1", "t_old_order_2", "t_config"));
     }
     
     @Test
     void assertEvaluateForCalculate() {
-        List<String> expected = new 
HotspotInlineExpressionParser("t_${[\"new${1+2}\",'old']}_order_${1..2}").splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate("t_${[\"new${1+2}\",'old']}_order_${1..2}");
         assertThat(expected.size(), is(4));
         assertThat(expected, hasItems("t_new3_order_1", "t_new3_order_2", 
"t_old_order_1", "t_old_order_2"));
     }
     
     @Test
     void assertEvaluateForExpressionPlaceHolder() {
-        List<String> expected = new 
HotspotInlineExpressionParser("t_$->{[\"new$->{1+2}\",'old']}_order_$->{1..2}").splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate("t_$->{[\"new$->{1+2}\",'old']}_order_$->{1..2}");
         assertThat(expected.size(), is(4));
         assertThat(expected, hasItems("t_new3_order_1", "t_new3_order_2", 
"t_old_order_1", "t_old_order_2"));
     }
@@ -102,19 +102,19 @@ class HotspotInlineExpressionParserTest {
                 expression.append(",");
             }
         }
-        List<String> expected = new 
HotspotInlineExpressionParser(expression.toString()).splitAndEvaluate();
+        List<String> expected = new 
HotspotInlineExpressionParser().splitAndEvaluate(expression.toString());
         assertThat(expected.size(), is(1024));
         assertThat(expected, hasItems("ds_0.t_user_0", "ds_15.t_user_1023"));
     }
     
     @Test
     void assertHandlePlaceHolder() {
-        
assertThat(HotspotInlineExpressionParser.handlePlaceHolder("t_$->{[\"new$->{1+2}\"]}"),
 is("t_${[\"new${1+2}\"]}"));
-        
assertThat(HotspotInlineExpressionParser.handlePlaceHolder("t_${[\"new$->{1+2}\"]}"),
 is("t_${[\"new${1+2}\"]}"));
+        assertThat(new 
HotspotInlineExpressionParser().handlePlaceHolder("t_$->{[\"new$->{1+2}\"]}"), 
is("t_${[\"new${1+2}\"]}"));
+        assertThat(new 
HotspotInlineExpressionParser().handlePlaceHolder("t_${[\"new$->{1+2}\"]}"), 
is("t_${[\"new${1+2}\"]}"));
     }
     
     @Test
     void assertEvaluateClosure() {
-        assertThat(new 
HotspotInlineExpressionParser("${1+2}").evaluateClosure().call().toString(), 
is("3"));
+        assertThat(new 
HotspotInlineExpressionParser().evaluateClosure("${1+2}").call().toString(), 
is("3"));
     }
 }
diff --git 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/expr/EspressoInlineExpressionParser.java
 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/expr/EspressoInlineExpressionParser.java
index b2385a9ff22..65e93f4dd07 100644
--- 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/expr/EspressoInlineExpressionParser.java
+++ 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/expr/EspressoInlineExpressionParser.java
@@ -18,6 +18,8 @@
 package org.apache.shardingsphere.infra.util.expr;
 
 import groovy.lang.Closure;
+import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
+import 
org.apache.shardingsphere.infra.util.groovy.expr.JVMInlineExpressionParser;
 import org.graalvm.polyglot.Context;
 import org.graalvm.polyglot.TypeLiteral;
 import org.graalvm.polyglot.Value;
@@ -25,70 +27,49 @@ import org.graalvm.polyglot.Value;
 import java.net.URL;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 /**
- * Espresso Inline expression parser.
+ * Espresso inline expression parser.
  */
-public final class EspressoInlineExpressionParser {
+public final class EspressoInlineExpressionParser implements 
JVMInlineExpressionParser {
     
     private static final Context POLYGLOT;
     
-    private final Value espressoInlineExpressionParser;
-    
     static {
         // TODO https://github.com/oracle/graal/issues/4555 not yet closed
         String javaHome = System.getenv("JAVA_HOME");
-        if (null == javaHome) {
-            throw new RuntimeException("Failed to determine the system's 
environment variable JAVA_HOME!");
-        }
-        URL resource = 
EspressoInlineExpressionParser.class.getClassLoader().getResource("espresso-need-libs");
-        assert null != resource;
+        ShardingSpherePreconditions.checkNotNull(javaHome, () -> new 
RuntimeException("Failed to determine the system's environment variable 
JAVA_HOME!"));
+        URL resource = 
Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource("espresso-need-libs"));
         String dir = resource.getPath();
         String javaClasspath = String.join(":", dir + "/groovy.jar", dir + 
"/guava.jar", dir + "/shardingsphere-infra-util-groovy.jar");
         POLYGLOT = Context.newBuilder().allowAllAccess(true)
                 .option("java.Properties.org.graalvm.home", javaHome)
-                .option("java.MultiThreaded", "true")
+                .option("java.MultiThreaded", Boolean.TRUE.toString())
                 .option("java.Classpath", javaClasspath)
                 .build();
     }
     
-    public EspressoInlineExpressionParser(final String inlineExpression) {
-        espressoInlineExpressionParser = POLYGLOT.getBindings("java")
-                
.getMember("org.apache.shardingsphere.infra.util.expr.InlineExpressionParser")
-                .newInstance(inlineExpression);
-    }
-    
-    /**
-     * Replace all inline expression placeholders.
-     *
-     * @param inlineExpression inline expression with {@code $->}
-     * @return result inline expression with {@code $}
-     */
-    public static String handlePlaceHolder(final String inlineExpression) {
+    @Override
+    public String handlePlaceHolder(final String inlineExpression) {
         return POLYGLOT.getBindings("java")
-                
.getMember("org.apache.shardingsphere.infra.util.expr.InlineExpressionParser")
-                .invokeMember("handlePlaceHolder", inlineExpression)
-                .asString();
+                
.getMember("org.apache.shardingsphere.infra.util.expr.InlineExpressionParser").invokeMember("handlePlaceHolder",
 inlineExpression).asString();
     }
     
-    /**
-     * Split and evaluate inline expression.
-     *
-     * @return result list
-     */
-    public List<String> splitAndEvaluate() {
-        List<String> splitAndEvaluate = 
espressoInlineExpressionParser.invokeMember("splitAndEvaluate").as(new 
TypeLiteral<List<String>>() {
+    @Override
+    public List<String> splitAndEvaluate(final String inlineExpression) {
+        List<String> splitAndEvaluate = 
getInlineExpressionParser().invokeMember("splitAndEvaluate", 
inlineExpression).as(new TypeLiteral<List<String>>() {
         });
         // GraalVM Truffle Espresso 22.3.1 has a different behavior for 
generic List than Hotspot.
-        return splitAndEvaluate.size() == 0 ? Collections.emptyList() : 
splitAndEvaluate;
+        return splitAndEvaluate.isEmpty() ? Collections.emptyList() : 
splitAndEvaluate;
+    }
+    
+    @Override
+    public Closure<?> evaluateClosure(final String inlineExpression) {
+        return getInlineExpressionParser().invokeMember("evaluateClosure", 
inlineExpression).as(Closure.class);
     }
     
-    /**
-     * Evaluate closure.
-     *
-     * @return closure
-     */
-    public Closure<?> evaluateClosure() {
-        return 
espressoInlineExpressionParser.invokeMember("evaluateClosure").as(Closure.class);
+    private Value getInlineExpressionParser() {
+        return 
POLYGLOT.getBindings("java").getMember("org.apache.shardingsphere.infra.util.expr.InlineExpressionParser").newInstance();
     }
 }
diff --git 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/expr/InlineExpressionParser.java
 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/expr/InlineExpressionParser.java
index 516d61eb53e..ab651671331 100644
--- 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/expr/InlineExpressionParser.java
+++ 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/expr/InlineExpressionParser.java
@@ -18,36 +18,27 @@
 package org.apache.shardingsphere.infra.util.expr;
 
 import groovy.lang.Closure;
-import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.util.groovy.expr.HotspotInlineExpressionParser;
+import 
org.apache.shardingsphere.infra.util.groovy.expr.JVMInlineExpressionParser;
 
 import java.util.List;
 
 /**
  * Inline expression parser.
  */
-@RequiredArgsConstructor
 public final class InlineExpressionParser {
     
     private static final boolean IS_SUBSTRATE_VM;
     
-    private final EspressoInlineExpressionParser 
espressoInlineExpressionParser;
-    
-    private final HotspotInlineExpressionParser hotspotInlineExpressionParser;
+    private final JVMInlineExpressionParser jvmInlineExpressionParser;
     
     static {
         // workaround for 
https://github.com/helidon-io/helidon-build-tools/issues/858
         IS_SUBSTRATE_VM = System.getProperty("java.vm.name").equals("Substrate 
VM");
     }
     
-    public InlineExpressionParser(final String inlineExpression) {
-        if (IS_SUBSTRATE_VM) {
-            this.hotspotInlineExpressionParser = null;
-            this.espressoInlineExpressionParser = new 
EspressoInlineExpressionParser(inlineExpression);
-        } else {
-            this.hotspotInlineExpressionParser = new 
HotspotInlineExpressionParser(inlineExpression);
-            this.espressoInlineExpressionParser = null;
-        }
+    public InlineExpressionParser() {
+        jvmInlineExpressionParser = IS_SUBSTRATE_VM ? new 
EspressoInlineExpressionParser() : new HotspotInlineExpressionParser();
     }
     
     /**
@@ -56,41 +47,31 @@ public final class InlineExpressionParser {
      * @param inlineExpression inline expression with {@code $->}
      * @return result inline expression with {@code $}
      */
-    public static String handlePlaceHolder(final String inlineExpression) {
+    public String handlePlaceHolder(final String inlineExpression) {
         if (IS_SUBSTRATE_VM) {
-            return 
EspressoInlineExpressionParser.handlePlaceHolder(inlineExpression);
+            return new 
EspressoInlineExpressionParser().handlePlaceHolder(inlineExpression);
         } else {
-            return 
HotspotInlineExpressionParser.handlePlaceHolder(inlineExpression);
+            return new 
HotspotInlineExpressionParser().handlePlaceHolder(inlineExpression);
         }
     }
     
     /**
      * Split and evaluate inline expression.
      *
+     * @param inlineExpression inline expression
      * @return result list
      */
-    public List<String> splitAndEvaluate() {
-        if (IS_SUBSTRATE_VM) {
-            assert null != espressoInlineExpressionParser;
-            return espressoInlineExpressionParser.splitAndEvaluate();
-        } else {
-            assert null != hotspotInlineExpressionParser;
-            return hotspotInlineExpressionParser.splitAndEvaluate();
-        }
+    public List<String> splitAndEvaluate(final String inlineExpression) {
+        return jvmInlineExpressionParser.splitAndEvaluate(inlineExpression);
     }
     
     /**
      * Evaluate closure.
      *
+     * @param inlineExpression inline expression
      * @return closure
      */
-    public Closure<?> evaluateClosure() {
-        if (IS_SUBSTRATE_VM) {
-            assert null != espressoInlineExpressionParser;
-            return espressoInlineExpressionParser.evaluateClosure();
-        } else {
-            assert null != hotspotInlineExpressionParser;
-            return hotspotInlineExpressionParser.evaluateClosure();
-        }
+    public Closure<?> evaluateClosure(final String inlineExpression) {
+        return jvmInlineExpressionParser.evaluateClosure(inlineExpression);
     }
 }
diff --git 
a/infra/util/src/test/java/org/apache/shardingsphere/infra/util/expr/InlineExpressionParserTest.java
 
b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/expr/InlineExpressionParserTest.java
index 2649dd283db..0504d41d2e8 100644
--- 
a/infra/util/src/test/java/org/apache/shardingsphere/infra/util/expr/InlineExpressionParserTest.java
+++ 
b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/expr/InlineExpressionParserTest.java
@@ -31,62 +31,62 @@ class InlineExpressionParserTest {
     
     @Test
     void assertEvaluateForExpressionIsNull() {
-        List<String> expected = new 
InlineExpressionParser(null).splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate(null);
         assertThat(expected, is(Collections.<String>emptyList()));
     }
     
     @Test
     void assertEvaluateForSimpleString() {
-        List<String> expected = new InlineExpressionParser(" t_order_0, 
t_order_1 ").splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate(" t_order_0, t_order_1 ");
         assertThat(expected.size(), is(2));
         assertThat(expected, hasItems("t_order_0", "t_order_1"));
     }
     
     @Test
     void assertEvaluateForNull() {
-        List<String> expected = new 
InlineExpressionParser("t_order_${null}").splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate("t_order_${null}");
         assertThat(expected.size(), is(1));
         assertThat(expected, hasItems("t_order_"));
     }
     
     @Test
     void assertEvaluateForLiteral() {
-        List<String> expected = new 
InlineExpressionParser("t_order_${'xx'}").splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate("t_order_${'xx'}");
         assertThat(expected.size(), is(1));
         assertThat(expected, hasItems("t_order_xx"));
     }
     
     @Test
     void assertEvaluateForArray() {
-        List<String> expected = new InlineExpressionParser("t_order_${[0, 1, 
2]},t_order_item_${[0, 2]}").splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate("t_order_${[0, 1, 
2]},t_order_item_${[0, 2]}");
         assertThat(expected.size(), is(5));
         assertThat(expected, hasItems("t_order_0", "t_order_1", "t_order_2", 
"t_order_item_0", "t_order_item_2"));
     }
     
     @Test
     void assertEvaluateForRange() {
-        List<String> expected = new 
InlineExpressionParser("t_order_${0..2},t_order_item_${0..1}").splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate("t_order_${0..2},t_order_item_${0..1}");
         assertThat(expected.size(), is(5));
         assertThat(expected, hasItems("t_order_0", "t_order_1", "t_order_2", 
"t_order_item_0", "t_order_item_1"));
     }
     
     @Test
     void assertEvaluateForComplex() {
-        List<String> expected = new 
InlineExpressionParser("t_${['new','old']}_order_${1..2}, 
t_config").splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate("t_${['new','old']}_order_${1..2}, 
t_config");
         assertThat(expected.size(), is(5));
         assertThat(expected, hasItems("t_new_order_1", "t_new_order_2", 
"t_old_order_1", "t_old_order_2", "t_config"));
     }
     
     @Test
     void assertEvaluateForCalculate() {
-        List<String> expected = new 
InlineExpressionParser("t_${[\"new${1+2}\",'old']}_order_${1..2}").splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate("t_${[\"new${1+2}\",'old']}_order_${1..2}");
         assertThat(expected.size(), is(4));
         assertThat(expected, hasItems("t_new3_order_1", "t_new3_order_2", 
"t_old_order_1", "t_old_order_2"));
     }
     
     @Test
     void assertEvaluateForExpressionPlaceHolder() {
-        List<String> expected = new 
InlineExpressionParser("t_$->{[\"new$->{1+2}\",'old']}_order_$->{1..2}").splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate("t_$->{[\"new$->{1+2}\",'old']}_order_$->{1..2}");
         assertThat(expected.size(), is(4));
         assertThat(expected, hasItems("t_new3_order_1", "t_new3_order_2", 
"t_old_order_1", "t_old_order_2"));
     }
@@ -103,15 +103,15 @@ class InlineExpressionParserTest {
                 expression.append(",");
             }
         }
-        List<String> expected = new 
InlineExpressionParser(expression.toString()).splitAndEvaluate();
+        List<String> expected = new 
InlineExpressionParser().splitAndEvaluate(expression.toString());
         assertThat(expected.size(), is(1024));
         assertThat(expected, hasItems("ds_0.t_user_0", "ds_15.t_user_1023"));
     }
     
     @Test
     void assertHandlePlaceHolder() {
-        
assertThat(InlineExpressionParser.handlePlaceHolder("t_$->{[\"new$->{1+2}\"]}"),
 is("t_${[\"new${1+2}\"]}"));
-        
assertThat(InlineExpressionParser.handlePlaceHolder("t_${[\"new$->{1+2}\"]}"), 
is("t_${[\"new${1+2}\"]}"));
+        assertThat(new 
InlineExpressionParser().handlePlaceHolder("t_$->{[\"new$->{1+2}\"]}"), 
is("t_${[\"new${1+2}\"]}"));
+        assertThat(new 
InlineExpressionParser().handlePlaceHolder("t_${[\"new$->{1+2}\"]}"), 
is("t_${[\"new${1+2}\"]}"));
     }
     
     /**
@@ -123,6 +123,6 @@ class InlineExpressionParserTest {
     @Test
     @DisabledInNativeImage
     void assertEvaluateClosure() {
-        assertThat(new 
InlineExpressionParser("${1+2}").evaluateClosure().call().toString(), is("3"));
+        assertThat(new 
InlineExpressionParser().evaluateClosure("${1+2}").call().toString(), is("3"));
     }
 }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/ShardingRuleConfigurationImportChecker.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/ShardingRuleConfigurationImportChecker.java
index ff801cc3219..ca265943317 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/ShardingRuleConfigurationImportChecker.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/ShardingRuleConfigurationImportChecker.java
@@ -90,12 +90,12 @@ public final class ShardingRuleConfigurationImportChecker {
     }
     
     private Collection<String> getDataSourceNames(final 
ShardingAutoTableRuleConfiguration shardingAutoTableRuleConfig) {
-        Collection<String> actualDataSources = new 
InlineExpressionParser(shardingAutoTableRuleConfig.getActualDataSources()).splitAndEvaluate();
+        Collection<String> actualDataSources = new 
InlineExpressionParser().splitAndEvaluate(shardingAutoTableRuleConfig.getActualDataSources());
         return new HashSet<>(actualDataSources);
     }
     
     private Collection<String> getDataSourceNames(final 
ShardingTableRuleConfiguration shardingTableRuleConfig) {
-        Collection<String> actualDataNodes = new 
InlineExpressionParser(shardingTableRuleConfig.getActualDataNodes()).splitAndEvaluate();
+        Collection<String> actualDataNodes = new 
InlineExpressionParser().splitAndEvaluate(shardingTableRuleConfig.getActualDataNodes());
         return actualDataNodes.stream().map(each -> new 
DataNode(each).getDataSourceName()).collect(Collectors.toList());
     }
     
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/DataSet.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/DataSet.java
index d1d9d91b51b..9fdf6f856e0 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/DataSet.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/DataSet.java
@@ -65,7 +65,7 @@ public final class DataSet {
      * @return data set meta data belong to current data node
      */
     public DataSetMetaData findMetaData(final DataNode dataNode) {
-        Optional<DataSetMetaData> result = metaDataList.stream().filter(each 
-> contains(new InlineExpressionParser(each.getDataNodes()).splitAndEvaluate(), 
dataNode)).findFirst();
+        Optional<DataSetMetaData> result = metaDataList.stream().filter(each 
-> contains(new InlineExpressionParser().splitAndEvaluate(each.getDataNodes()), 
dataNode)).findFirst();
         return result.orElseThrow(() -> new 
IllegalArgumentException(String.format("Cannot find data node: %s", dataNode)));
     }
     
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/BatchE2EContainerComposer.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/BatchE2EContainerComposer.java
index 7a550c7f7d6..7dc10670d10 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/BatchE2EContainerComposer.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/BatchE2EContainerComposer.java
@@ -84,7 +84,7 @@ public final class BatchE2EContainerComposer extends 
E2EContainerComposer {
         DataSet expected = getDataSet(actualUpdateCounts);
         assertThat("Only support single table for DML.", 
expected.getMetaDataList().size(), is(1));
         DataSetMetaData expectedDataSetMetaData = 
expected.getMetaDataList().get(0);
-        for (String each : new 
InlineExpressionParser(expectedDataSetMetaData.getDataNodes()).splitAndEvaluate())
 {
+        for (String each : new 
InlineExpressionParser().splitAndEvaluate(expectedDataSetMetaData.getDataNodes()))
 {
             DataNode dataNode = new DataNode(each);
             DataSource dataSource = 
getActualDataSourceMap().get(dataNode.getDataSourceName());
             try (
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/DDLE2EIT.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/DDLE2EIT.java
index 7eddcd645c0..faed90702e5 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/DDLE2EIT.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/DDLE2EIT.java
@@ -172,7 +172,7 @@ class DDLE2EIT {
     private void assertTableMetaData(final AssertionTestParameter testParam, 
final SingleE2EContainerComposer containerComposer) throws SQLException {
         String tableName = 
containerComposer.getAssertion().getInitialSQL().getAffectedTable();
         DataSetMetaData expected = 
containerComposer.getDataSet().findMetaData(tableName);
-        Collection<DataNode> dataNodes = new 
InlineExpressionParser(expected.getDataNodes()).splitAndEvaluate().stream().map(DataNode::new).collect(Collectors.toList());
+        Collection<DataNode> dataNodes = new 
InlineExpressionParser().splitAndEvaluate(expected.getDataNodes()).stream().map(DataNode::new).collect(Collectors.toList());
         if (expected.getColumns().isEmpty()) {
             assertNotContainsTable(containerComposer, dataNodes);
             return;
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BaseDMLE2EIT.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BaseDMLE2EIT.java
index a902b1a95fa..c3067b08e6d 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BaseDMLE2EIT.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/dml/BaseDMLE2EIT.java
@@ -85,7 +85,7 @@ public abstract class BaseDMLE2EIT {
         assertThat("Only support single table for DML.", 
containerComposer.getDataSet().getMetaDataList().size(), is(1));
         assertThat(actualUpdateCount, 
is(containerComposer.getDataSet().getUpdateCount()));
         DataSetMetaData expectedDataSetMetaData = 
containerComposer.getDataSet().getMetaDataList().get(0);
-        for (String each : new 
InlineExpressionParser(expectedDataSetMetaData.getDataNodes()).splitAndEvaluate())
 {
+        for (String each : new 
InlineExpressionParser().splitAndEvaluate(expectedDataSetMetaData.getDataNodes()))
 {
             DataNode dataNode = new DataNode(each);
             DataSource dataSource = 
containerComposer.getActualDataSourceMap().get(dataNode.getDataSourceName());
             try (
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/env/DataSetEnvironmentManager.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/env/DataSetEnvironmentManager.java
index 645d6884021..11e1b9e1c7e 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/env/DataSetEnvironmentManager.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/env/DataSetEnvironmentManager.java
@@ -164,7 +164,7 @@ public final class DataSetEnvironmentManager {
     
     private Map<String, Collection<String>> getDataNodeMap(final 
DataSetMetaData dataSetMetaData) {
         Map<String, Collection<String>> result = new LinkedHashMap<>();
-        for (String each : new 
InlineExpressionParser(dataSetMetaData.getDataNodes()).splitAndEvaluate()) {
+        for (String each : new 
InlineExpressionParser().splitAndEvaluate(dataSetMetaData.getDataNodes())) {
             DataNode dataNode = new DataNode(each);
             if (!result.containsKey(dataNode.getDataSourceName())) {
                 result.put(dataNode.getDataSourceName(), new LinkedList<>());

Reply via email to