支持循环天表的自动分表。有些业务场景需要分表,但是没有DDL权限,无法自动建表,此时需要提前建立好31张表,重复使用,避免自动建表和删表。
This commit is contained in:
parent
45a836177a
commit
5f7546162a
|
@ -487,7 +487,7 @@ public class ShardTests
|
|||
};
|
||||
|
||||
var start = "2023-12-31".ToDateTime();
|
||||
var end = DateTime.Today;
|
||||
var end = start.AddDays(300);
|
||||
var fi = policy.Field;
|
||||
var where = fi >= start & fi < end;
|
||||
|
||||
|
@ -526,18 +526,48 @@ public class ShardTests
|
|||
{
|
||||
var policy = new TimeShardPolicy(Log2._.CreateTime, Log2.Meta.Factory)
|
||||
{
|
||||
TablePolicy = "{0}_{1:yyyyMM}",
|
||||
Step = TimeSpan.FromDays(31),
|
||||
TablePolicy = "{0}_{1:yyyyMMdd}",
|
||||
Step = TimeSpan.FromDays(1),
|
||||
};
|
||||
|
||||
// 起止都是整数日期,末尾加1天
|
||||
var start = "2024/7/25 00:00:00".ToDateTime();
|
||||
var start = "2024/7/30 00:00:00".ToDateTime();
|
||||
var end = start.AddDays(3);
|
||||
var fi = policy.Field;
|
||||
var where = fi.Equal(start);
|
||||
//var where = fi.Equal(start);
|
||||
var where = fi.Between(start, end);
|
||||
|
||||
var shards = policy.Shards(where);
|
||||
Assert.NotNull(shards);
|
||||
Assert.Equal(1, shards.Length);
|
||||
Assert.Equal("Log2_202407", shards[0].TableName);
|
||||
Assert.Equal(4, shards.Length);
|
||||
Assert.Equal("Log2_20240730", shards[0].TableName);
|
||||
Assert.Equal("Log2_20240731", shards[1].TableName);
|
||||
Assert.Equal("Log2_20240801", shards[2].TableName);
|
||||
Assert.Equal("Log2_20240802", shards[3].TableName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void 循环天表Shards()
|
||||
{
|
||||
var policy = new TimeShardPolicy(Log2._.CreateTime, Log2.Meta.Factory)
|
||||
{
|
||||
TablePolicy = "{0}_{1:dd}",
|
||||
Step = TimeSpan.FromDays(1),
|
||||
};
|
||||
|
||||
// 起止都是整数日期,末尾加1天
|
||||
var start = "2024/7/30 00:00:00".ToDateTime();
|
||||
var end = start.AddDays(3);
|
||||
var fi = policy.Field;
|
||||
//var where = fi.Equal(start);
|
||||
var where = fi.Between(start, end);
|
||||
|
||||
var shards = policy.Shards(where);
|
||||
Assert.NotNull(shards);
|
||||
Assert.Equal(4, shards.Length);
|
||||
Assert.Equal("Log2_30", shards[0].TableName);
|
||||
Assert.Equal("Log2_31", shards[1].TableName);
|
||||
Assert.Equal("Log2_01", shards[2].TableName);
|
||||
Assert.Equal("Log2_02", shards[3].TableName);
|
||||
}
|
||||
}
|
|
@ -50,7 +50,7 @@ public class UserTests
|
|||
var user = new User { Name = Rand.NextString(64) };
|
||||
var ex = Assert.Throws<ArgumentOutOfRangeException>(() => user.Insert());
|
||||
Assert.Equal("Name", ex.ParamName);
|
||||
Assert.Equal("[Name/名称]长度限制50字符[ID=0] (Parameter 'Name')", ex.Message);
|
||||
Assert.Equal("[Name/名称@User]长度限制50字符[ID=0] (Parameter 'Name')", ex.Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
Loading…
Reference in New Issue