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

zhaojinchao 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 e6b2fc6fc7c Revise PR#23040 (#23536)
e6b2fc6fc7c is described below

commit e6b2fc6fc7cfce3be6f49ec98a9755c8858b9a6e
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Fri Jan 13 09:50:45 2023 +0800

    Revise PR#23040 (#23536)
---
 .../agent/core/plugin/PluginContextTest.java       |  2 +-
 .../executor/FilterableTableScanExecutor.java      | 13 +++----
 .../executor/TranslatableTableScanExecutor.java    | 40 ++++++++++------------
 .../row/EmptyRowScalarEnumerator.java              |  2 +-
 .../sqlfederation/row/MemoryEnumerator.java        |  2 +-
 .../sqlfederation/row/MemoryScalarEnumerator.java  |  2 +-
 ....java => SQLFederationRowScalarEnumerator.java} |  6 ++--
 .../metadata/translatable/StringToRexNodeUtil.java |  2 +-
 .../translatable/TranslatableFilterRule.java       |  8 ++---
 .../TranslatableProjectFilterRule.java             |  8 ++---
 10 files changed, 37 insertions(+), 48 deletions(-)

diff --git 
a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/PluginContextTest.java
 
b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/PluginContextTest.java
index 6898c93e7bb..905d2e7c40a 100644
--- 
a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/PluginContextTest.java
+++ 
b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/PluginContextTest.java
@@ -23,7 +23,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 public final class PluginContextTest {
-
+    
     @Test
     public void assertNotPluginEnabledKey() {
         assertFalse(PluginContext.isPluginEnabled());
diff --git 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
index 4d6cf7d7cd8..0db55aea2fc 100644
--- 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
+++ 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
@@ -77,6 +77,7 @@ import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.TableScanExecu
 import 
org.apache.shardingsphere.sqlfederation.optimizer.metadata.filter.FilterableSchema;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.util.SQLFederationPlannerUtil;
 import org.apache.shardingsphere.sqlfederation.row.EmptyRowEnumerator;
+import org.apache.shardingsphere.sqlfederation.row.EmptyRowScalarEnumerator;
 import org.apache.shardingsphere.sqlfederation.row.MemoryEnumerator;
 import org.apache.shardingsphere.sqlfederation.row.SQLFederationRowEnumerator;
 import 
org.apache.shardingsphere.sqlfederation.spi.SQLFederationExecutorContext;
@@ -119,15 +120,11 @@ public final class FilterableTableScanExecutor implements 
TableScanExecutor {
     
     @Override
     public Enumerable<Object> executeScalar(final ShardingSphereTable table, 
final ScanNodeExecutorContext scanContext) {
-        return createEmptyScalarEnumerable();
-    }
-    
-    private AbstractEnumerable<Object> createEmptyScalarEnumerable() {
         return new AbstractEnumerable<Object>() {
             
             @Override
             public Enumerator<Object> enumerator() {
-                return new EmptyRowEnumerator();
+                return new EmptyRowScalarEnumerator();
             }
         };
     }
@@ -195,7 +192,7 @@ public final class FilterableTableScanExecutor implements 
TableScanExecutor {
             
             @Override
             public Enumerator<Object[]> enumerator() {
-                return new MemoryEnumerator(tableData.getRows());
+                return new MemoryEnumerator<>(tableData.getRows());
             }
         };
     }
@@ -262,7 +259,7 @@ public final class FilterableTableScanExecutor implements 
TableScanExecutor {
             
             @Override
             public Enumerator<Object[]> enumerator() {
-                return new SQLFederationRowEnumerator(rows, statements);
+                return new SQLFederationRowEnumerator<>(rows, statements);
             }
         };
     }
@@ -305,7 +302,7 @@ public final class FilterableTableScanExecutor implements 
TableScanExecutor {
             
             @Override
             public Enumerator<Object[]> enumerator() {
-                return new EmptyRowEnumerator();
+                return new EmptyRowEnumerator<>();
             }
         };
     }
diff --git 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
index 7e3fb59701e..243d40e3dcf 100644
--- 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
+++ 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
@@ -83,11 +83,13 @@ import 
org.apache.shardingsphere.sqlfederation.optimizer.metadata.filter.Filtera
 import 
org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable.StringToRexNodeUtil;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.util.SQLFederationPlannerUtil;
 import org.apache.shardingsphere.sqlfederation.row.EmptyRowEnumerator;
+import org.apache.shardingsphere.sqlfederation.row.EmptyRowScalarEnumerator;
 import org.apache.shardingsphere.sqlfederation.row.MemoryEnumerator;
+import org.apache.shardingsphere.sqlfederation.row.MemoryScalarEnumerator;
 import org.apache.shardingsphere.sqlfederation.row.SQLFederationRowEnumerator;
+import 
org.apache.shardingsphere.sqlfederation.row.SQLFederationRowScalarEnumerator;
 import 
org.apache.shardingsphere.sqlfederation.spi.SQLFederationExecutorContext;
 
-import java.lang.reflect.Type;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
@@ -95,7 +97,6 @@ import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -112,7 +113,7 @@ public final class TranslatableTableScanExecutor implements 
TableScanExecutor {
     
     private static final JavaTypeFactory JAVA_TYPE_FACTORY = new 
JavaTypeFactoryImpl();
     
-    private static final String COLUMN_INFORMATION_PATTERN = "\\{.*}";
+    private static final Pattern COLUMN_INFORMATION_PATTERN = 
Pattern.compile("\\{.*}");
     
     private final DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> 
prepareEngine;
     
@@ -156,7 +157,7 @@ public final class TranslatableTableScanExecutor implements 
TableScanExecutor {
             
             @Override
             public Enumerator<Object> enumerator() {
-                return new EmptyRowEnumerator();
+                return new EmptyRowScalarEnumerator();
             }
         };
     }
@@ -172,7 +173,7 @@ public final class TranslatableTableScanExecutor implements 
TableScanExecutor {
             
             @Override
             public Enumerator<Object> enumerator() {
-                return new MemoryEnumerator(tableData.getRows());
+                return new MemoryScalarEnumerator(tableData.getRows());
             }
         };
     }
@@ -203,7 +204,7 @@ public final class TranslatableTableScanExecutor implements 
TableScanExecutor {
             
             @Override
             public Enumerator<Object> enumerator() {
-                return new SQLFederationRowEnumerator(rows, statements);
+                return new SQLFederationRowScalarEnumerator(rows, statements);
             }
         };
     }
@@ -279,7 +280,7 @@ public final class TranslatableTableScanExecutor implements 
TableScanExecutor {
             
             @Override
             public Enumerator<Object[]> enumerator() {
-                return new MemoryEnumerator(tableData.getRows());
+                return new MemoryEnumerator<>(tableData.getRows());
             }
         };
     }
@@ -340,30 +341,25 @@ public final class TranslatableTableScanExecutor 
implements TableScanExecutor {
         RexBuilder rexBuilder = new RexBuilder(typeFactory);
         for (String each : filterValues) {
             if (!Strings.isNullOrEmpty(each)) {
-                Map<Integer, Integer> columnMap = extractColumnMap(each);
+                Map<Integer, Integer> columnIndexDataTypeMap = 
extractColumnIndexDataTypeMap(each);
                 String filterValue = extractFilterValue(each);
-                result.add(StringToRexNodeUtil.buildRexNode(filterValue, 
rexBuilder, context.getParameters(), columnMap));
+                result.add(StringToRexNodeUtil.buildRexNode(filterValue, 
rexBuilder, context.getParameters(), columnIndexDataTypeMap));
             }
         }
         return result;
     }
     
-    private Map<Integer, Integer> extractColumnMap(final String 
filterExpression) {
-        Matcher matcher = 
Pattern.compile(COLUMN_INFORMATION_PATTERN).matcher(filterExpression);
-        Map<Integer, Integer> result = new HashMap<>();
+    private Map<Integer, Integer> extractColumnIndexDataTypeMap(final String 
filterExpression) {
+        Matcher matcher = COLUMN_INFORMATION_PATTERN.matcher(filterExpression);
         if (!matcher.find()) {
-            return result;
+            return Collections.emptyMap();
         }
-        String columnInformation = matcher.group();
-        Gson gson = new Gson();
-        Type type = new TypeToken<Map<Integer, Integer>>() {
-        }.getType();
-        result = gson.fromJson(columnInformation, type);
-        return result;
+        return new Gson().fromJson(matcher.group(), new TypeToken<Map<Integer, 
Integer>>() {
+        }.getType());
     }
     
     private String extractFilterValue(final String filterExpression) {
-        return filterExpression.replaceAll("\\{.*}", "");
+        return 
COLUMN_INFORMATION_PATTERN.matcher(filterExpression).replaceAll("");
     }
     
     private Collection<RexNode> createProjections(final int[] projects, final 
RelBuilder relBuilder, final List<String> columnNames) {
@@ -381,7 +377,7 @@ public final class TranslatableTableScanExecutor implements 
TableScanExecutor {
             
             @Override
             public Enumerator<Object[]> enumerator() {
-                return new SQLFederationRowEnumerator(rows, statements);
+                return new SQLFederationRowEnumerator<>(rows, statements);
             }
         };
     }
@@ -424,7 +420,7 @@ public final class TranslatableTableScanExecutor implements 
TableScanExecutor {
             
             @Override
             public Enumerator<Object[]> enumerator() {
-                return new EmptyRowEnumerator();
+                return new EmptyRowEnumerator<>();
             }
         };
     }
diff --git 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/EmptyRowScalarEnumerator.java
 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/EmptyRowScalarEnumerator.java
index 4c9d60ff50c..575f5f16db1 100644
--- 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/EmptyRowScalarEnumerator.java
+++ 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/EmptyRowScalarEnumerator.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sqlfederation.row;
 import org.apache.calcite.linq4j.Enumerator;
 
 /**
- * Empty row enumerator.
+ * Empty row scalar enumerator.
  */
 public final class EmptyRowScalarEnumerator implements Enumerator<Object> {
     
diff --git 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryEnumerator.java
 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryEnumerator.java
index 92ebac4530a..69eba9af368 100644
--- 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryEnumerator.java
+++ 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryEnumerator.java
@@ -48,7 +48,7 @@ public final class MemoryEnumerator<T> implements 
Enumerator<T> {
     @Override
     public boolean moveNext() {
         if (rowDataIterator.hasNext()) {
-            List rows = rowDataIterator.next().getRows();
+            List<Object> rows = rowDataIterator.next().getRows();
             if (rows.size() == 1) {
                 current = (T) rows.get(0);
             } else {
diff --git 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryScalarEnumerator.java
 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryScalarEnumerator.java
index 66b9a8e4a9f..36af799eada 100644
--- 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryScalarEnumerator.java
+++ 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryScalarEnumerator.java
@@ -24,7 +24,7 @@ import java.util.Collection;
 import java.util.Iterator;
 
 /**
- * Memory enumerator.
+ * Memory scalar enumerator.
  */
 public final class MemoryScalarEnumerator implements Enumerator<Object> {
     
diff --git 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/SQLFederationScalarEnumerator.java
 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/SQLFederationRowScalarEnumerator.java
similarity index 89%
rename from 
kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/SQLFederationScalarEnumerator.java
rename to 
kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/SQLFederationRowScalarEnumerator.java
index d550035fc40..93f0ecc4396 100644
--- 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/SQLFederationScalarEnumerator.java
+++ 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/SQLFederationRowScalarEnumerator.java
@@ -26,9 +26,9 @@ import java.util.Collection;
 import java.util.Iterator;
 
 /**
- * SQL federation row enumerator.
+ * SQL federation row scalar enumerator.
  */
-public final class SQLFederationScalarEnumerator implements Enumerator<Object> 
{
+public final class SQLFederationRowScalarEnumerator implements 
Enumerator<Object> {
     
     private final Collection<Object> rows;
     
@@ -38,7 +38,7 @@ public final class SQLFederationScalarEnumerator implements 
Enumerator<Object> {
     
     private Object currentRow;
     
-    public SQLFederationScalarEnumerator(final Collection<Object> rows, final 
Collection<Statement> statements) {
+    public SQLFederationRowScalarEnumerator(final Collection<Object> rows, 
final Collection<Statement> statements) {
         this.rows = rows;
         this.statements = statements;
         iterator = rows.iterator();
diff --git 
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/StringToRexNodeUtil.java
 
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/StringToRexNodeUtil.java
index 86c0d9ad460..274af1c6ebe 100644
--- 
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/StringToRexNodeUtil.java
+++ 
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/StringToRexNodeUtil.java
@@ -43,7 +43,7 @@ public final class StringToRexNodeUtil {
      * @param columnMap mapping of column id and column type
      * @return rex node
      */
-    public static RexNode buildRexNode(final String filterValue, final 
RexBuilder rexBuilder, final Map parameters, final Map<Integer, Integer> 
columnMap) {
+    public static RexNode buildRexNode(final String filterValue, final 
RexBuilder rexBuilder, final Map<String, Object> parameters, final Map<Integer, 
Integer> columnMap) {
         CharStream input = CharStreams.fromString(filterValue);
         ParseRexNodeLexer lexer = new ParseRexNodeLexer(input);
         CommonTokenStream tokens = new CommonTokenStream(lexer);
diff --git 
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableFilterRule.java
 
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableFilterRule.java
index 89a33566923..33e1d2524da 100644
--- 
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableFilterRule.java
+++ 
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableFilterRule.java
@@ -26,7 +26,6 @@ import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.tools.RelBuilderFactory;
 
 import java.util.Collections;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
@@ -36,6 +35,8 @@ public class TranslatableFilterRule extends RelOptRule {
     
     public static final TranslatableFilterRule INSTANCE = new 
TranslatableFilterRule(RelFactories.LOGICAL_BUILDER);
     
+    private static final Pattern CONDITION_PATTERN = 
Pattern.compile("\\$[A-Za-z]");
+    
     public TranslatableFilterRule(final RelBuilderFactory relBuilderFactory) {
         super(operand(LogicalFilter.class, 
operand(TranslatableTableScan.class, none())), relBuilderFactory, 
"TranslatableFilterRule");
     }
@@ -45,10 +46,7 @@ public class TranslatableFilterRule extends RelOptRule {
         LogicalFilter filter = call.rel(0);
         RexCall condition = (RexCall) filter.getCondition();
         for (RexNode each : condition.getOperands()) {
-            String condtionPattern = "\\$[A-Za-z]";
-            String tmp = each.toString();
-            Matcher matcher = Pattern.compile(condtionPattern).matcher(tmp);
-            if (matcher.find()) {
+            if (CONDITION_PATTERN.matcher(each.toString()).find()) {
                 return false;
             }
         }
diff --git 
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
 
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
index c32dbacdbe4..ff8f92913bc 100644
--- 
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
+++ 
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
@@ -29,7 +29,6 @@ import org.apache.calcite.tools.RelBuilderFactory;
 
 import java.util.Collections;
 import java.util.List;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
@@ -39,6 +38,8 @@ public class TranslatableProjectFilterRule extends RelOptRule 
{
     
     public static final TranslatableProjectFilterRule INSTANCE = new 
TranslatableProjectFilterRule(RelFactories.LOGICAL_BUILDER);
     
+    private static final Pattern CONDITION_PATTERN = 
Pattern.compile("\\$[A-Za-z]");
+    
     public TranslatableProjectFilterRule(final RelBuilderFactory 
relBuilderFactory) {
         super(operand(LogicalProject.class, operand(LogicalFilter.class, 
operand(TranslatableTableScan.class, none()))), relBuilderFactory, 
"TranslatableProjectFilterRule");
     }
@@ -73,10 +74,7 @@ public class TranslatableProjectFilterRule extends 
RelOptRule {
         LogicalFilter filter = call.rel(1);
         RexCall condition = (RexCall) filter.getCondition();
         for (RexNode each : condition.getOperands()) {
-            String condtionPattern = "\\$[A-Za-z]";
-            String tmp = each.toString();
-            Matcher matcher = Pattern.compile(condtionPattern).matcher(tmp);
-            if (matcher.find()) {
+            if (CONDITION_PATTERN.matcher(each.toString()).find()) {
                 return false;
             }
         }

Reply via email to