/** * To make sure SkyWalking will be available at the next release of ShardingSphere, * a new plugin should be provided to SkyWalking project if this API changed. * * @see <a href="https://github.com/apache/skywalking/blob/master/docs/en/guides/Java-Plugin-Development-Guide.md#user-content-plugin-development-guide">Plugin Development Guide</a> * * @param statementExecuteUnit statement execute unit * @param isTrunkThread is trunk thread * @param dataMap data map * @return result * @throws SQLException SQL exception */ private T Execute0(CommandExecuteUnit commandExecuteUnit, bool isTrunkThread, IDictionary <string, object> dataMap) { ExecutorExceptionHandler.SetExceptionThrow(isExceptionThrown); IDataSourceMetaData dataSourceMetaData = GetDataSourceMetaData(commandExecuteUnit.Command); var hookManager = SqlExecutionHookManager.GetInstance(); try { ExecutionUnit executionUnit = commandExecuteUnit.ExecutionUnit; hookManager.Start(executionUnit.GetDataSourceName(), executionUnit.GetSqlUnit().GetSql(), executionUnit.GetSqlUnit().GetParameterContext(), dataSourceMetaData, isTrunkThread, dataMap); T result = OnSqlExecute(executionUnit.GetSqlUnit().GetSql(), commandExecuteUnit.Command, commandExecuteUnit.ConnectionMode); hookManager.FinishSuccess(); return(result); } catch (Exception ex) { hookManager.FinishFailure(ex); ExecutorExceptionHandler.HandleException(ex); return(default);
public void Start(string dataSourceName, string sql, ParameterContext parameterContext, IDataSourceMetaData dataSourceMetaData, bool isTrunkThread, IDictionary <string, object> shardingExecuteDataMap) { foreach (var sqlExecutionHook in _sqlExecutionHooks) { sqlExecutionHook.Start(dataSourceName, sql, parameterContext, dataSourceMetaData, isTrunkThread, shardingExecuteDataMap); } }
/// <summary> /// 判断是否在自同一个数据库实例里面 /// </summary> /// <param name="sample"></param> /// <param name="target"></param> /// <returns></returns> private bool IsInSameDatabaseInstance(IDataSourceMetaData sample, IDataSourceMetaData target) { return(sample is IMemorizedDataSourceMetaData ? object.Equals(target.GetSchema(), sample.GetSchema()) : target.GetHostName().Equals(sample.GetHostName()) && target.GetPort() == sample.GetPort()); }