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

Reply via email to