Skip to content

Commit 3d5ca9b

Browse files
committed
- 优化 pgsql jsonb 映射,支持 List,mysql limit in 子查询;
1 parent 65fe03a commit 3d5ca9b

File tree

25 files changed

+192
-22
lines changed

25 files changed

+192
-22
lines changed

FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,6 +1008,14 @@ public void WhereIn()
10081008
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
10091009
FROM `tb_topic` b)))", subquery);
10101010
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
1011+
1012+
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
1013+
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
1014+
FROM `tb_topic` a
1015+
WHERE (((cast(a.`Id` as char)) in ( SELECT * FROM (SELECT b.`Title`
1016+
FROM `tb_topic` b
1017+
limit 0,10) ftblmt50 )))", subquery);
1018+
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
10111019
}
10121020
[Fact]
10131021
public void As()

FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/Curd/DamengSelectTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,14 @@ public void WhereIn()
933933
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
934934
FROM ""TB_TOPIC22"" b)))", subquery);
935935
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
936+
937+
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
938+
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
939+
FROM ""TB_TOPIC22"" a
940+
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
941+
FROM ""TB_TOPIC22"" b
942+
WHERE ROWNUM < 11)))", subquery);
943+
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
936944
}
937945
[Fact]
938946
public void As()

FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlSelectTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,14 @@ public void WhereIn()
10191019
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
10201020
FROM `tb_topic` b)))", subquery);
10211021
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
1022+
1023+
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
1024+
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
1025+
FROM `tb_topic` a
1026+
WHERE (((cast(a.`Id` as char)) in ( SELECT * FROM (SELECT b.`Title`
1027+
FROM `tb_topic` b
1028+
limit 0,10) ftblmt50 )))", subquery);
1029+
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
10221030
}
10231031
[Fact]
10241032
public void As()

FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleSelectTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,14 @@ public void WhereIn()
934934
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
935935
FROM ""TB_TOPIC22"" b)))", subquery);
936936
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
937+
938+
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
939+
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
940+
FROM ""TB_TOPIC22"" a
941+
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
942+
FROM ""TB_TOPIC22"" b
943+
WHERE ROWNUM < 11)))", subquery);
944+
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
937945
}
938946
[Fact]
939947
public void As()

FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLSelectTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,14 @@ public void WhereIn()
995995
WHERE ((((a.""id"")::text) in (SELECT b.""title""
996996
FROM ""tb_topic"" b)))", subquery);
997997
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
998+
999+
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
1000+
Assert.Equal(@"SELECT a.""id"", a.""clicks"", a.""typeguid"", a.""title"", a.""createtime""
1001+
FROM ""tb_topic"" a
1002+
WHERE ((((a.""id"")::text) in (SELECT b.""title""
1003+
FROM ""tb_topic"" b
1004+
limit 10)))", subquery);
1005+
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
9981006
}
9991007
[Fact]
10001008
public void As()

FreeSql.Tests/FreeSql.Tests/AdoNetExtensions/OracleConnectionExtensionsTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
namespace FreeSql.Tests.AdoNetExtensions.OracleConnectionExtensions {
77
public class Methods {
88

9-
string _connectString = "user id=user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=5";
9+
string _connectString = "user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=5";
1010

1111
public Methods() {
1212
g.oracle.CodeFirst.SyncStructure<TestConnectionExt>();

FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,14 @@ public void WhereIn()
951951
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
952952
FROM ""TB_TOPIC22"" b)))", subquery);
953953
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
954+
955+
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
956+
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
957+
FROM ""TB_TOPIC22"" a
958+
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
959+
FROM ""TB_TOPIC22"" b
960+
WHERE ROWNUM < 11)))", subquery);
961+
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
954962
}
955963
[Fact]
956964
public void As()

FreeSql.Tests/FreeSql.Tests/Firebird/Curd/FirebirdSelectTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,13 @@ public void WhereIn()
934934
WHERE (((cast(a.""ID"" as blob sub_type 1)) in (SELECT b.""TITLE""
935935
FROM ""TB_TOPIC22"" b)))", subquery);
936936
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
937+
938+
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
939+
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
940+
FROM ""TB_TOPIC22"" a
941+
WHERE (((cast(a.""ID"" as blob sub_type 1)) in (SELECT FIRST 10 b.""TITLE""
942+
FROM ""TB_TOPIC22"" b)))", subquery);
943+
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
937944
}
938945
[Fact]
939946
public void As()

FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessSelectTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,13 @@ FROM [tb_topic22] a
899899
WHERE (((cstr(a.[Id])) in (SELECT b.[Title]
900900
FROM [tb_topic22] b)))", subquery);
901901
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
902+
903+
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
904+
Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime]
905+
FROM [tb_topic22] a
906+
WHERE (((cstr(a.[Id])) in (SELECT TOP 10 b.[Title]
907+
FROM [tb_topic22] b)))", subquery);
908+
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
902909
}
903910
[Fact]
904911
public void As()

FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,6 +1071,14 @@ public void WhereIn()
10711071
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
10721072
FROM `tb_topic` b)))", subquery);
10731073
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
1074+
1075+
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
1076+
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
1077+
FROM `tb_topic` a
1078+
WHERE (((cast(a.`Id` as char)) in ( SELECT * FROM (SELECT b.`Title`
1079+
FROM `tb_topic` b
1080+
limit 0,10) ftblmt50 )))", subquery);
1081+
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
10741082
}
10751083
[Fact]
10761084
public void As()

0 commit comments

Comments
 (0)