This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 a44c43bdcce Add @HighFrequencyInvocation annotation for kernel core
logic (#30529)
a44c43bdcce is described below
commit a44c43bdcce9d2070cdae841b66fc8388d82e322
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Mon Mar 18 15:56:11 2024 +0800
Add @HighFrequencyInvocation annotation for kernel core logic (#30529)
* Add @HighFrequencyInvocation annotation for kernel core logic
* revert some logic
* replace stream api to foreach
---
.../broadcast/route/BroadcastSQLRouter.java | 17 +++++++++++++----
.../context/EncryptSQLRewriteContextDecorator.java | 2 ++
.../route/ReadwriteSplittingSQLRouter.java | 2 ++
.../shardingsphere/shadow/route/ShadowSQLRouter.java | 6 ++++--
.../context/ShardingSQLRewriteContextDecorator.java | 2 ++
.../sharding/route/engine/ShardingSQLRouter.java | 2 ++
.../infra/executor/kernel/ExecutorEngine.java | 2 ++
.../engine/driver/jdbc/JDBCExecutorCallback.java | 2 ++
.../apache/shardingsphere/infra/merge/MergeEngine.java | 6 ++++--
.../shardingsphere/infra/rewrite/SQLRewriteEntry.java | 2 ++
.../infra/route/engine/SQLRouteEngine.java | 6 ++++--
.../route/engine/impl/PartialSQLRouteExecutor.java | 2 ++
.../shardingsphere/single/route/SingleSQLRouter.java | 2 ++
13 files changed, 43 insertions(+), 10 deletions(-)
diff --git
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
index 44adbff7db4..ab9caa921a7 100644
---
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
+++
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.broadcast.route;
import org.apache.shardingsphere.broadcast.constant.BroadcastOrder;
import
org.apache.shardingsphere.broadcast.route.engine.BroadcastRouteEngineFactory;
import org.apache.shardingsphere.broadcast.rule.BroadcastRule;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.ddl.CloseStatementContext;
import org.apache.shardingsphere.infra.binder.context.type.CursorAvailable;
@@ -34,6 +35,7 @@ import
org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.session.query.QueryContext;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dcl.DCLStatement;
@@ -53,11 +55,12 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQ
import java.util.Collection;
import java.util.Collections;
-import java.util.stream.Collectors;
+import java.util.LinkedHashSet;
/**
* Broadcast SQL router.
*/
+@HighFrequencyInvocation
public final class BroadcastSQLRouter implements SQLRouter<BroadcastRule> {
@Override
@@ -111,14 +114,20 @@ public final class BroadcastSQLRouter implements
SQLRouter<BroadcastRule> {
}
return;
}
- Collection<String> tableNames = sqlStatementContext instanceof
TableAvailable
- ? ((TableAvailable)
sqlStatementContext).getAllTables().stream().map(each ->
each.getTableName().getIdentifier().getValue()).collect(Collectors.toSet())
- : sqlStatementContext.getTablesContext().getTableNames();
+ Collection<String> tableNames = sqlStatementContext instanceof
TableAvailable ? getTableNames((TableAvailable) sqlStatementContext) :
sqlStatementContext.getTablesContext().getTableNames();
if (broadcastRule.isAllBroadcastTables(tableNames)) {
routeToAllDatabaseInstance(routeContext, database, broadcastRule);
}
}
+ private Collection<String> getTableNames(final TableAvailable
sqlStatementContext) {
+ Collection<String> result = new LinkedHashSet<>();
+ for (SimpleTableSegment each : sqlStatementContext.getAllTables()) {
+ result.add(each.getTableName().getIdentifier().getValue());
+ }
+ return result;
+ }
+
private static void putAllBroadcastTables(final RouteContext routeContext,
final BroadcastRule broadcastRule, final SQLStatementContext
sqlStatementContext) {
Collection<String> tableNames =
sqlStatementContext.getTablesContext().getTableNames();
for (String each :
broadcastRule.getBroadcastRuleTableNames(tableNames)) {
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
index 0267de4ae0a..2dba871c090 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.encrypt.rewrite.condition.EncryptConditionEngin
import
org.apache.shardingsphere.encrypt.rewrite.parameter.EncryptParameterRewriterBuilder;
import
org.apache.shardingsphere.encrypt.rewrite.token.EncryptTokenGenerateBuilder;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.context.type.WhereAvailable;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
@@ -40,6 +41,7 @@ import java.util.Collections;
/**
* SQL rewrite context decorator for encrypt.
*/
+@HighFrequencyInvocation
public final class EncryptSQLRewriteContextDecorator implements
SQLRewriteContextDecorator<EncryptRule> {
@Override
diff --git
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouter.java
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouter.java
index 73e9200ee3d..0028a0a7f40 100644
---
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouter.java
+++
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouter.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.readwritesplitting.route;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
@@ -38,6 +39,7 @@ import java.util.Optional;
/**
* Readwrite-splitting SQL router.
*/
+@HighFrequencyInvocation
public final class ReadwriteSplittingSQLRouter implements
SQLRouter<ReadwriteSplittingRule> {
@Override
diff --git
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/ShadowSQLRouter.java
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/ShadowSQLRouter.java
index b7255451dff..18b08f28705 100644
---
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/ShadowSQLRouter.java
+++
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/ShadowSQLRouter.java
@@ -17,13 +17,14 @@
package org.apache.shardingsphere.shadow.route;
-import org.apache.shardingsphere.infra.session.query.QueryContext;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.route.SQLRouter;
import org.apache.shardingsphere.infra.route.context.RouteContext;
+import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.shadow.constant.ShadowOrder;
import org.apache.shardingsphere.shadow.route.engine.ShadowRouteEngineFactory;
import org.apache.shardingsphere.shadow.rule.ShadowRule;
@@ -31,6 +32,7 @@ import org.apache.shardingsphere.shadow.rule.ShadowRule;
/**
* Shadow SQL router.
*/
+@HighFrequencyInvocation
public final class ShadowSQLRouter implements SQLRouter<ShadowRule> {
@Override
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
index eec225e5091..664700a5531 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.sharding.rewrite.context;
import lombok.Setter;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
@@ -35,6 +36,7 @@ import java.util.Collection;
/**
* SQL rewrite context decorator for sharding.
*/
+@HighFrequencyInvocation
@Setter
public final class ShardingSQLRewriteContextDecorator implements
SQLRewriteContextDecorator<ShardingRule> {
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/ShardingSQLRouter.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/ShardingSQLRouter.java
index 83b4c63a252..78bdaf66728 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/ShardingSQLRouter.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/ShardingSQLRouter.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sharding.route.engine;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import org.apache.shardingsphere.infra.binder.context.type.CursorAvailable;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -44,6 +45,7 @@ import java.util.Optional;
/**
* Sharding SQL router.
*/
+@HighFrequencyInvocation
public final class ShardingSQLRouter implements SQLRouter<ShardingRule> {
@Override
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/ExecutorEngine.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/ExecutorEngine.java
index 3703e95d1ec..07453a63506 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/ExecutorEngine.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/ExecutorEngine.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.infra.executor.kernel;
import lombok.Getter;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnknownSQLException;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
@@ -36,6 +37,7 @@ import java.util.concurrent.Future;
/**
* Executor engine.
*/
+@HighFrequencyInvocation
@Getter
public final class ExecutorEngine implements AutoCloseable {
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/driver/jdbc/JDBCExecutorCallback.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/driver/jdbc/JDBCExecutorCallback.java
index 60fc2461919..91df9e00c91 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/driver/jdbc/JDBCExecutorCallback.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/driver/jdbc/JDBCExecutorCallback.java
@@ -18,6 +18,7 @@
package
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc;
import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.database.core.connector.ConnectionProperties;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutorCallback;
@@ -41,6 +42,7 @@ import java.util.Optional;
*
* @param <T> class type of return value
*/
+@HighFrequencyInvocation
@RequiredArgsConstructor
public abstract class JDBCExecutorCallback<T> implements
ExecutorCallback<JDBCExecutionUnit, T> {
diff --git
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
index c3a1df35582..2f3155966fa 100644
---
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
+++
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
@@ -17,20 +17,21 @@
package org.apache.shardingsphere.infra.merge;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import
org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
-import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
import org.apache.shardingsphere.infra.merge.engine.ResultProcessEngine;
import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
import
org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecoratorEngine;
+import
org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
import org.apache.shardingsphere.infra.merge.engine.merger.ResultMerger;
import org.apache.shardingsphere.infra.merge.engine.merger.ResultMergerEngine;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import
org.apache.shardingsphere.infra.merge.result.impl.transparent.TransparentMergedResult;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import java.sql.SQLException;
@@ -42,6 +43,7 @@ import java.util.Optional;
/**
* Merge engine.
*/
+@HighFrequencyInvocation
public final class MergeEngine {
private final ShardingSphereDatabase database;
diff --git
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
index 0bf9d71d10f..30b95bf39f0 100644
---
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
+++
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.rewrite;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.hint.HintValueContext;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -39,6 +40,7 @@ import java.util.Map.Entry;
/**
* SQL rewrite entry.
*/
+@HighFrequencyInvocation
public final class SQLRewriteEntry {
private final ShardingSphereDatabase database;
diff --git
a/infra/route/src/main/java/org/apache/shardingsphere/infra/route/engine/SQLRouteEngine.java
b/infra/route/src/main/java/org/apache/shardingsphere/infra/route/engine/SQLRouteEngine.java
index ef7301cb85c..e8228b036db 100644
---
a/infra/route/src/main/java/org/apache/shardingsphere/infra/route/engine/SQLRouteEngine.java
+++
b/infra/route/src/main/java/org/apache/shardingsphere/infra/route/engine/SQLRouteEngine.java
@@ -18,15 +18,16 @@
package org.apache.shardingsphere.infra.route.engine;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.session.query.QueryContext;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.engine.impl.AllSQLRouteExecutor;
import
org.apache.shardingsphere.infra.route.engine.impl.PartialSQLRouteExecutor;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowTableStatusStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowTablesStatement;
@@ -36,6 +37,7 @@ import java.util.Collection;
/**
* SQL route engine.
*/
+@HighFrequencyInvocation
@RequiredArgsConstructor
public final class SQLRouteEngine {
diff --git
a/infra/route/src/main/java/org/apache/shardingsphere/infra/route/engine/impl/PartialSQLRouteExecutor.java
b/infra/route/src/main/java/org/apache/shardingsphere/infra/route/engine/impl/PartialSQLRouteExecutor.java
index 1f6a2bbffe7..38bccbf45b7 100644
---
a/infra/route/src/main/java/org/apache/shardingsphere/infra/route/engine/impl/PartialSQLRouteExecutor.java
+++
b/infra/route/src/main/java/org/apache/shardingsphere/infra/route/engine/impl/PartialSQLRouteExecutor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.route.engine.impl;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.hint.HintManager;
import org.apache.shardingsphere.infra.hint.HintValueContext;
@@ -43,6 +44,7 @@ import java.util.Optional;
/**
* Partial SQL route executor.
*/
+@HighFrequencyInvocation
public final class PartialSQLRouteExecutor implements SQLRouteExecutor {
private final ConfigurationProperties props;
diff --git
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/route/SingleSQLRouter.java
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/route/SingleSQLRouter.java
index 5725a1528bf..f5414729484 100644
---
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/route/SingleSQLRouter.java
+++
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/route/SingleSQLRouter.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.single.route;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -40,6 +41,7 @@ import java.util.LinkedList;
/**
* Single SQL router.
*/
+@HighFrequencyInvocation
public final class SingleSQLRouter implements SQLRouter<SingleRule> {
@Override