Skip to content

Commit a1cc753

Browse files
committed
修复重构后的bug 后需要实现group by
1 parent 52ed6e0 commit a1cc753

26 files changed

+264
-225
lines changed

src/ShardingCore/Sharding/MergeEngines/Enumerables/AppendOrderSequenceShardingEnumerable.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using ShardingCore.Sharding.MergeEngines.Common.Abstractions;
99
using ShardingCore.Sharding.MergeEngines.Enumerables.Base;
1010
using ShardingCore.Sharding.MergeEngines.Executors.Abstractions;
11+
using ShardingCore.Sharding.MergeEngines.Executors.Enumerables;
1112
using ShardingCore.Sharding.MergeEngines.ShardingMergeEngines.Abstractions.StreamMerge;
1213
using ShardingCore.Sharding.PaginationConfigurations;
1314
using ShardingCore.Sharding.StreamMergeEngines;
@@ -95,7 +96,7 @@ protected override IEnumerable<ISqlRouteUnit> GetDefaultSqlRouteUnits()
9596

9697
protected override IExecutor<IStreamMergeAsyncEnumerator<TEntity>> CreateExecutor(bool async)
9798
{
98-
throw new System.NotImplementedException();
99+
return new AppendOrderSequenceEnumerableExecutor<TEntity>(GetStreamMergeContext(), async);
99100
}
100101
}
101102
}

src/ShardingCore/Sharding/MergeEngines/Executors/Abstractions/AbstractExecutor.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,6 @@ private async Task<List<TResult>> ExecuteAsync0(bool async,
9292
//严格限制连接数就在内存中进行聚合并且直接回收掉当前dbcontext
9393
if (dataSourceSqlExecutorUnit.ConnectionMode == ConnectionModeEnum.CONNECTION_STRICTLY)
9494
{
95-
var resultCount = result.Count;
96-
if (resultCount > 1)
97-
{
98-
throw new ShardingCoreInvalidOperationException(
99-
$"in memory merge result length error:{resultCount}");
100-
}
101-
10295
GetShardingMerger()
10396
.InMemoryMerge(result, routeQueryResults.Select(o => o.MergeResult).ToList());
10497
// MergeParallelExecuteResult(result, , async);

src/ShardingCore/Sharding/MergeEngines/Executors/CircuitBreakers/AbstractCircuitBreaker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ public void Terminated0()
5555
_afterTerminated?.Invoke();
5656
}
5757

58-
public void Register(Action afterTrip)
58+
public void Register(Action afterTerminated)
5959
{
60-
_afterTerminated = afterTrip;
60+
_afterTerminated = afterTerminated;
6161
}
6262
}
6363
}

src/ShardingCore/Sharding/MergeEngines/Executors/CircuitBreakers/AllCircuitBreaker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ public AllCircuitBreaker(StreamMergeContext streamMergeContext) : base(streamMer
1313
protected override bool OrderConditionTerminated<TResult>(IEnumerable<TResult> results)
1414
{
1515
//只要有一个是false就拉闸
16-
return results.Any(o => o is RouteQueryResult<bool> routeQueryResult && routeQueryResult.QueryResult==false);
16+
return results.Any(o => o is false);
1717
}
1818

1919
protected override bool RandomConditionTerminated<TResult>(IEnumerable<TResult> results)
2020
{
2121
//只要有一个是false就拉闸
22-
return results.Any(o => o is RouteQueryResult<bool> routeQueryResult && routeQueryResult.QueryResult == false);
22+
return results.Any(o => o is false);
2323
}
2424
}
2525
}

src/ShardingCore/Sharding/MergeEngines/Executors/CircuitBreakers/AnyCircuitBreaker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ public AnyCircuitBreaker(StreamMergeContext streamMergeContext) : base(streamMer
1111
}
1212
protected override bool OrderConditionTerminated<TResult>(IEnumerable<TResult> results)
1313
{
14-
return results.Any(o => o is RouteQueryResult<bool> routeQueryResult && routeQueryResult.QueryResult);
14+
return results.Any(o => o is true);
1515
}
1616

1717
protected override bool RandomConditionTerminated<TResult>(IEnumerable<TResult> results)
1818
{
19-
return results.Any(o => o is RouteQueryResult<bool> routeQueryResult && routeQueryResult.QueryResult);
19+
return results.Any(o => o is true);
2020
}
2121
}
2222
}

src/ShardingCore/Sharding/MergeEngines/Executors/CircuitBreakers/ContainsCircuitBreaker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ public ContainsCircuitBreaker(StreamMergeContext streamMergeContext) : base(stre
1212

1313
protected override bool OrderConditionTerminated<TResult>(IEnumerable<TResult> results)
1414
{
15-
return results.Any(o => o is RouteQueryResult<bool> routeQueryResult && routeQueryResult.QueryResult);
15+
return results.Any(o => o is true);
1616
}
1717

1818
protected override bool RandomConditionTerminated<TResult>(IEnumerable<TResult> results)
1919
{
20-
return results.Any(o => o is RouteQueryResult<bool> routeQueryResult && routeQueryResult.QueryResult);
20+
return results.Any(o => o is true);
2121
}
2222
}
2323
}

src/ShardingCore/Sharding/MergeEngines/Executors/CircuitBreakers/SingleOrSingleOrDefaultCircuitBreaker.cs

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/ShardingCore/Sharding/MergeEngines/Executors/Methods/AnyMethodExecutor.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,12 @@ public AnyMethodExecutor(StreamMergeContext streamMergeContext) : base(streamMer
3030

3131
public override ICircuitBreaker CreateCircuitBreaker()
3232
{
33-
return new AnyElementCircuitBreaker(GetStreamMergeContext());
33+
var anyCircuitBreaker = new AnyCircuitBreaker(GetStreamMergeContext());
34+
anyCircuitBreaker.Register(() =>
35+
{
36+
Cancel();
37+
});
38+
return anyCircuitBreaker;
3439
}
3540

3641
public override IShardingMerger<bool> GetShardingMerger()

src/ShardingCore/Sharding/MergeEngines/Executors/Methods/AverageMethodWrapExecutor.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,12 @@ public AverageMethodWrapExecutor(StreamMergeContext streamMergeContext) : base(s
3333

3434
public override ICircuitBreaker CreateCircuitBreaker()
3535
{
36-
return new NoTripCircuitBreaker(GetStreamMergeContext());
36+
var circuitBreaker = new NoTripCircuitBreaker(GetStreamMergeContext());
37+
circuitBreaker.Register(() =>
38+
{
39+
Cancel();
40+
});
41+
return circuitBreaker;
3742
}
3843

3944
public override IShardingMerger<RouteQueryResult<AverageResult<TSelect>>> GetShardingMerger()

src/ShardingCore/Sharding/MergeEngines/Executors/Methods/MaxMethodExecutor.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,13 @@ public MaxMethodExecutor(StreamMergeContext streamMergeContext) : base(streamMer
3232

3333
public override ICircuitBreaker CreateCircuitBreaker()
3434
{
35-
return new AnyElementCircuitBreaker(GetStreamMergeContext());
35+
36+
var circuitBreaker = new AnyElementCircuitBreaker(GetStreamMergeContext());
37+
circuitBreaker.Register(() =>
38+
{
39+
Cancel();
40+
});
41+
return circuitBreaker;
3642
}
3743

3844
public override IShardingMerger<RouteQueryResult<TResult>> GetShardingMerger()

0 commit comments

Comments
 (0)