mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 修复 WithTempQuery + Oracle 分页问题;#1519
This commit is contained in:
parent
1424649bc3
commit
98c4ce8274
@ -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()
|
||||
{
|
||||
|
88
FreeSql.Tests/tests.playlist
Normal file
88
FreeSql.Tests/tests.playlist
Normal 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>
|
@ -188,6 +188,17 @@ namespace FreeSql
|
||||
expContext.Value.Result = $"{expContext.Value.ParsedContent["value1"]} <= {expContext.Value.ParsedContent["value2"]}";
|
||||
return false;
|
||||
}
|
||||
/// <summary>
|
||||
/// value1 IS NULL
|
||||
/// </summary>
|
||||
/// <typeparam name="TValue"></typeparam>
|
||||
/// <param name="value1"></param>
|
||||
/// <returns></returns>
|
||||
public static bool EqualIsNull<TValue>(TValue value1)
|
||||
{
|
||||
expContext.Value.Result = $"{expContext.Value.ParsedContent["value1"]} IS NULL";
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
|
@ -1377,6 +1377,14 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.SqlExt.EqualIsNull``1(``0)">
|
||||
<summary>
|
||||
value1 IS NULL
|
||||
</summary>
|
||||
<typeparam name="TValue"></typeparam>
|
||||
<param name="value1"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.SqlExt.Case">
|
||||
<summary>
|
||||
case when .. then .. end
|
||||
|
@ -32,11 +32,15 @@ namespace FreeSql.Custom.Oracle
|
||||
|
||||
sbunion.Append(_select);
|
||||
if (_distinct) sbunion.Append("DISTINCT ");
|
||||
sbunion.Append(field);
|
||||
if (string.IsNullOrEmpty(_orderby) && _skip > 0) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||
var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray();
|
||||
|
||||
var isRownum = string.IsNullOrEmpty(_orderby) && _skip > 0;
|
||||
if (isRownum && field == "*") sbunion.Append(tbsfrom[0].Alias).Append("."); //#1519 bug
|
||||
sbunion.Append(field);
|
||||
if (isRownum) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
|
||||
for (var a = 0; a < tbsfrom.Length; a++)
|
||||
{
|
||||
sbunion.Append(_commonUtils.QuoteSqlName(tbUnion[tbsfrom[a].Table.Type])).Append(" ").Append(_aliasRule?.Invoke(tbsfrom[a].Table.Type, tbsfrom[a].Alias) ?? tbsfrom[a].Alias);
|
||||
|
@ -41,7 +41,7 @@ namespace FreeSql.Custom.SqlServer
|
||||
if (_distinct) sb.Append("DISTINCT ");
|
||||
//if (_limit > 0) sb.Append("TOP ").Append(_skip + _limit).Append(" "); //TOP 会引发 __rownum__ 无序的问题
|
||||
if (_skip <= 0 && _limit > 0) sb.Append("TOP ").Append(_limit).Append(" ");
|
||||
sb.Append(field);
|
||||
var rownum = "";
|
||||
|
||||
if (_limit > 0 || _skip > 0)
|
||||
{
|
||||
@ -57,11 +57,14 @@ namespace FreeSql.Custom.SqlServer
|
||||
_orderby = _groupby.Replace("GROUP BY ", "ORDER BY ");
|
||||
}
|
||||
if (_skip > 0) // 注意这个判断,大于 0 才使用 ROW_NUMBER ,否则属于第一页直接使用 TOP
|
||||
sb.Append(", ROW_NUMBER() OVER(").Append(_orderby.Trim('\r', '\n', ' ')).Append(") AS __rownum__");
|
||||
rownum = $", ROW_NUMBER() OVER({_orderby.Trim('\r', '\n', ' ')}) AS __rownum__";
|
||||
}
|
||||
sb.Append(" \r\nFROM ");
|
||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||
var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray();
|
||||
if (string.IsNullOrEmpty(rownum) == false && field == "*")
|
||||
sb.Append(tbsfrom[0].Alias).Append("."); //#1519 bug
|
||||
sb.Append(field).Append(rownum);
|
||||
sb.Append(" \r\nFROM ");
|
||||
for (var a = 0; a < tbsfrom.Length; a++)
|
||||
{
|
||||
var alias = LocalGetTableAlias(tbsfrom[a].Table.Type, tbUnion[tbsfrom[a].Table.Type], tbsfrom[a].Alias, _aliasRule);
|
||||
|
@ -32,11 +32,14 @@ namespace FreeSql.Dameng.Curd
|
||||
|
||||
sbunion.Append(_select);
|
||||
if (_distinct) sbunion.Append("DISTINCT ");
|
||||
sbunion.Append(field);
|
||||
if (string.IsNullOrEmpty(_orderby) && _skip > 0) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||
var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray();
|
||||
|
||||
var isRownum = string.IsNullOrEmpty(_orderby) && _skip > 0;
|
||||
if (isRownum && field == "*") sbunion.Append(tbsfrom[0].Alias).Append("."); //#1519 bug
|
||||
sbunion.Append(field);
|
||||
if (isRownum) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
for (var a = 0; a < tbsfrom.Length; a++)
|
||||
{
|
||||
sbunion.Append(_commonUtils.QuoteSqlName(tbUnion[tbsfrom[a].Table.Type])).Append(" ").Append(_aliasRule?.Invoke(tbsfrom[a].Table.Type, tbsfrom[a].Alias) ?? tbsfrom[a].Alias);
|
||||
|
@ -32,11 +32,14 @@ namespace FreeSql.Odbc.Dameng
|
||||
|
||||
sbunion.Append(_select);
|
||||
if (_distinct) sbunion.Append("DISTINCT ");
|
||||
sbunion.Append(field);
|
||||
if (string.IsNullOrEmpty(_orderby) && _skip > 0) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||
var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray();
|
||||
|
||||
var isRownum = string.IsNullOrEmpty(_orderby) && _skip > 0;
|
||||
if (isRownum && field == "*") sbunion.Append(tbsfrom[0].Alias).Append("."); //#1519 bug
|
||||
sbunion.Append(field);
|
||||
if (isRownum) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
for (var a = 0; a < tbsfrom.Length; a++)
|
||||
{
|
||||
sbunion.Append(_commonUtils.QuoteSqlName(tbUnion[tbsfrom[a].Table.Type])).Append(" ").Append(_aliasRule?.Invoke(tbsfrom[a].Table.Type, tbsfrom[a].Alias) ?? tbsfrom[a].Alias);
|
||||
|
@ -32,11 +32,14 @@ namespace FreeSql.Odbc.Oracle
|
||||
|
||||
sbunion.Append(_select);
|
||||
if (_distinct) sbunion.Append("DISTINCT ");
|
||||
sbunion.Append(field);
|
||||
if (string.IsNullOrEmpty(_orderby) && _skip > 0) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||
var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray();
|
||||
|
||||
var isRownum = string.IsNullOrEmpty(_orderby) && _skip > 0;
|
||||
if (isRownum && field == "*") sbunion.Append(tbsfrom[0].Alias).Append("."); //#1519 bug
|
||||
sbunion.Append(field);
|
||||
if (isRownum) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
for (var a = 0; a < tbsfrom.Length; a++)
|
||||
{
|
||||
sbunion.Append(_commonUtils.QuoteSqlName(tbUnion[tbsfrom[a].Table.Type])).Append(" ").Append(_aliasRule?.Invoke(tbsfrom[a].Table.Type, tbsfrom[a].Alias) ?? tbsfrom[a].Alias);
|
||||
|
@ -41,7 +41,7 @@ namespace FreeSql.Odbc.SqlServer
|
||||
if (_distinct) sb.Append("DISTINCT ");
|
||||
//if (_limit > 0) sb.Append("TOP ").Append(_skip + _limit).Append(" "); //TOP 会引发 __rownum__ 无序的问题
|
||||
if (_skip <= 0 && _limit > 0) sb.Append("TOP ").Append(_limit).Append(" ");
|
||||
sb.Append(field);
|
||||
var rownum = "";
|
||||
|
||||
if (_limit > 0 || _skip > 0)
|
||||
{
|
||||
@ -57,11 +57,14 @@ namespace FreeSql.Odbc.SqlServer
|
||||
_orderby = _groupby.Replace("GROUP BY ", "ORDER BY ");
|
||||
}
|
||||
if (_skip > 0) // 注意这个判断,大于 0 才使用 ROW_NUMBER ,否则属于第一页直接使用 TOP
|
||||
sb.Append(", ROW_NUMBER() OVER(").Append(_orderby.Trim('\r', '\n', ' ')).Append(") AS __rownum__");
|
||||
rownum = $", ROW_NUMBER() OVER({_orderby.Trim('\r', '\n', ' ')}) AS __rownum__";
|
||||
}
|
||||
sb.Append(" \r\nFROM ");
|
||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||
var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray();
|
||||
if (string.IsNullOrEmpty(rownum) == false && field == "*")
|
||||
sb.Append(tbsfrom[0].Alias).Append("."); //#1519 bug
|
||||
sb.Append(field).Append(rownum);
|
||||
sb.Append(" \r\nFROM ");
|
||||
for (var a = 0; a < tbsfrom.Length; a++)
|
||||
{
|
||||
var alias = LocalGetTableAlias(tbsfrom[a].Table.Type, tbUnion[tbsfrom[a].Table.Type], tbsfrom[a].Alias, _aliasRule);
|
||||
|
@ -32,11 +32,15 @@ namespace FreeSql.Oracle.Curd
|
||||
|
||||
sbunion.Append(_select);
|
||||
if (_distinct) sbunion.Append("DISTINCT ");
|
||||
sbunion.Append(field);
|
||||
if (string.IsNullOrEmpty(_orderby) && _skip > 0) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||
var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray();
|
||||
|
||||
var isRownum = string.IsNullOrEmpty(_orderby) && _skip > 0;
|
||||
if (isRownum && field == "*") sbunion.Append(tbsfrom[0].Alias).Append("."); //#1519 bug
|
||||
sbunion.Append(field);
|
||||
if (isRownum) sbunion.Append(", ROWNUM AS \"__rownum__\"");
|
||||
sbunion.Append(" \r\nFROM ");
|
||||
|
||||
for (var a = 0; a < tbsfrom.Length; a++)
|
||||
{
|
||||
sbunion.Append(_commonUtils.QuoteSqlName(tbUnion[tbsfrom[a].Table.Type])).Append(" ").Append(_aliasRule?.Invoke(tbsfrom[a].Table.Type, tbsfrom[a].Alias) ?? tbsfrom[a].Alias);
|
||||
|
@ -41,7 +41,7 @@ namespace FreeSql.SqlServer.Curd
|
||||
if (_distinct) sb.Append("DISTINCT ");
|
||||
//if (_limit > 0) sb.Append("TOP ").Append(_skip + _limit).Append(" "); //TOP 会引发 __rownum__ 无序的问题
|
||||
if (_skip <= 0 && _limit > 0) sb.Append("TOP ").Append(_limit).Append(" ");
|
||||
sb.Append(field);
|
||||
var rownum = "";
|
||||
|
||||
if (_limit > 0 || _skip > 0)
|
||||
{
|
||||
@ -57,11 +57,14 @@ namespace FreeSql.SqlServer.Curd
|
||||
_orderby = _groupby.Replace("GROUP BY ", "ORDER BY ");
|
||||
}
|
||||
if (_skip > 0) // 注意这个判断,大于 0 才使用 ROW_NUMBER ,否则属于第一页直接使用 TOP
|
||||
sb.Append(", ROW_NUMBER() OVER(").Append(_orderby.Trim('\r', '\n', ' ')).Append(") AS __rownum__");
|
||||
rownum = $", ROW_NUMBER() OVER({_orderby.Trim('\r', '\n', ' ')}) AS __rownum__";
|
||||
}
|
||||
sb.Append(" \r\nFROM ");
|
||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||
var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray();
|
||||
if (string.IsNullOrEmpty(rownum) == false && field == "*")
|
||||
sb.Append(tbsfrom[0].Alias).Append("."); //#1519 bug
|
||||
sb.Append(field).Append(rownum);
|
||||
sb.Append(" \r\nFROM ");
|
||||
for (var a = 0; a < tbsfrom.Length; a++)
|
||||
{
|
||||
var alias = LocalGetTableAlias(tbsfrom[a].Table.Type, tbUnion[tbsfrom[a].Table.Type], tbsfrom[a].Alias, _aliasRule);
|
||||
|
Loading…
x
Reference in New Issue
Block a user