- 修复 WithTempQuery + Oracle 分页问题;#1519

This commit is contained in:
2881099
2023-05-23 12:09:19 +08:00
parent 1424649bc3
commit 98c4ce8274
12 changed files with 195 additions and 24 deletions

View File

@ -9,6 +9,44 @@ namespace FreeSql.Tests.SqlServer
{
public class SqlServerSelectWithTempQueryTest
{
[Fact]
public void Issues1519()
{
var fsql = g.oracle;
var query = fsql.Select<Issues1510T1>()
.FromQuery(fsql.Select<Issues1510T2>().WithTempQuery(e => e))
.InnerJoin(t => t.t1.Id == t.t2.T1JoinId)
.WithTempQuery(t => new
{
t.t1.Id,
t.t1.Name,
T2Id = t.t2.Id,
T2Name = t.t1.Name,
});
var sql = query.ToSql();
Assert.Equal(sql, @"SELECT *
FROM (
SELECT a.""ID"", a.""NAME"", htb.""ID"" ""T2ID"", a.""NAME"" ""T2NAME""
FROM ""ISSUES1510T1"" a
INNER JOIN (
SELECT a.""ID"", a.""NAME"", a.""T1JOINID""
FROM ""ISSUES1510T2"" a ) htb ON a.""ID"" = htb.""T1JOINID"" ) a");
query.ToList();
query.Page(2, 5);
sql = query.ToSql();
Assert.Equal(sql, @"SELECT t.* FROM (SELECT a.*, ROWNUM AS ""__rownum__""
FROM (
SELECT a.""ID"", a.""NAME"", htb.""ID"" ""T2ID"", a.""NAME"" ""T2NAME""
FROM ""ISSUES1510T1"" a
INNER JOIN (
SELECT a.""ID"", a.""NAME"", a.""T1JOINID""
FROM ""ISSUES1510T2"" a ) htb ON a.""ID"" = htb.""T1JOINID"" ) a
WHERE ROWNUM < 11) t WHERE t.""__rownum__"" > 5");
query.ToList();
}
[Fact]
public void Issues1510()
{

View File

@ -0,0 +1,88 @@
<Playlist Version="2.0">
<Rule Name="Includes" Match="Any">
<Rule Match="All">
<Property Name="Solution" />
<Rule Match="Any">
<Rule Match="All">
<Property Name="Project" Value="FreeSql.Tests" />
<Rule Match="Any">
<Property Name="Namespace" Value="FreeSql.ExpressionTree" />
<Property Name="Namespace" Value="FreeSql.InternalTests" />
<Property Name="Namespace" Value="FreeSql.Tests" />
<Property Name="Namespace" Value="FreeSql.Tests.AdoNetExtensions.MySqlConnectionExtensions" />
<Property Name="Namespace" Value="FreeSql.Tests.AdoNetExtensions.NpgsqlConnectionExtensions" />
<Property Name="Namespace" Value="FreeSql.Tests.AdoNetExtensions.OracleConnectionExtensions" />
<Property Name="Namespace" Value="FreeSql.Tests.AdoNetExtensions.SqlConnectionExtensions" />
<Property Name="Namespace" Value="FreeSql.Tests.AdoNetExtensions.SQLiteConnectionExtensions" />
<Property Name="Namespace" Value="FreeSql.Tests.Dameng" />
<Property Name="Namespace" Value="FreeSql.Tests.DamengExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.DamengMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.DataAnnotations" />
<Property Name="Namespace" Value="FreeSql.Tests.DynamicEntity" />
<Property Name="Namespace" Value="FreeSql.Tests.Extensions" />
<Property Name="Namespace" Value="FreeSql.Tests.Firebird" />
<Property Name="Namespace" Value="FreeSql.Tests.FirebirdExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.FirebirdMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.Internal" />
<Property Name="Namespace" Value="FreeSql.Tests.Issues" />
<Property Name="Namespace" Value="FreeSql.Tests.Linq" />
<Property Name="Namespace" Value="FreeSql.Tests.MsAccess" />
<Property Name="Namespace" Value="FreeSql.Tests.MsAccessExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.MsAccessMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.MySql" />
<Property Name="Namespace" Value="FreeSql.Tests.MySqlExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.MySqlMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.Oracle" />
<Property Name="Namespace" Value="FreeSql.Tests.OracleExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.OracleMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.PostgreSQL" />
<Property Name="Namespace" Value="FreeSql.Tests.PostgreSQL.PgArrayToMany" />
<Property Name="Namespace" Value="FreeSql.Tests.PostgreSQLExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.PostgreSQLMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.Properties" />
<Property Name="Namespace" Value="FreeSql.Tests.Sqlite" />
<Property Name="Namespace" Value="FreeSql.Tests.SqliteExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.SqliteMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.SqlServer" />
<Property Name="Namespace" Value="FreeSql.Tests.SqlServerExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.SqlServerMapType" />
</Rule>
</Rule>
<Property Name="Project" Value="FreeSql.Tests.DbContext" />
<Property Name="Project" Value="FreeSql.Tests.PerformanceTests" />
<Property Name="Project" Value="FreeSql.Tests.Provider.Custom" />
<Property Name="Project" Value="FreeSql.Tests.Provider.MySqlConnector (net6.0)" />
<Property Name="Project" Value="FreeSql.Tests.Provider.MySqlConnector (netcoreapp3.1)" />
<Rule Match="All">
<Property Name="Project" Value="FreeSql.Tests.Provider.Odbc" />
<Rule Match="Any">
<Property Name="Namespace" Value="FreeSql.Tests.Odbc" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.Dameng" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.DamengExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.DamengMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.Default" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.DefaultExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.DefaultMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.MySql" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.MySqlExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.MySqlMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.Oracle" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.OracleExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.OracleMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.PostgreSQL" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.PostgreSQLExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.PostgreSQLMapType" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.SqlServer" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.SqlServerExpression" />
<Property Name="Namespace" Value="FreeSql.Tests.Odbc.SqlServerMapType" />
</Rule>
</Rule>
<Property Name="Project" Value="FreeSql.Tests.Provider.OracleOledb (net6.0)" />
<Property Name="Project" Value="FreeSql.Tests.Provider.OracleOledb (netcoreapp3.1)" />
<Property Name="Project" Value="FreeSql.Tests.Provider.PostgreSQL.NetTopologySuite" />
<Property Name="Project" Value="FreeSql.Tests.Provider.Sqlite.Data" />
<Property Name="Project" Value="FreeSql.Tests.VB" />
</Rule>
</Rule>
</Rule>
</Playlist>