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;
}
}