mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 修复 ClickHouse 联表查询 GLOBAL left join、Ado.Query * 问题;#1383
This commit is contained in:
parent
0e98e0d309
commit
b224118133
@ -151,6 +151,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -194,6 +195,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -211,6 +213,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -262,6 +265,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -279,6 +283,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -296,6 +301,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -353,6 +359,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -370,6 +377,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -387,6 +395,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -404,6 +413,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -467,6 +477,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -484,6 +495,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -501,6 +513,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -518,6 +531,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -535,6 +549,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
|
@ -67,6 +67,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -111,6 +112,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -128,6 +130,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -180,6 +183,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -197,6 +201,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -214,6 +219,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -272,6 +278,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -289,6 +296,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -306,6 +314,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -323,6 +332,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -387,6 +397,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -404,6 +415,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -421,6 +433,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -438,6 +451,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
@ -455,6 +469,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var a = 0; a < fetch.Object.FieldCount; a++)
|
||||
{
|
||||
var name = fetch.Object.GetName(a);
|
||||
if (DataType == DataType.ClickHouse && name.Contains(".")) name = name.Substring(name.IndexOf('.') + 1);
|
||||
if (dic.ContainsKey(name)) continue;
|
||||
sbflag.Append(name).Append(":").Append(a).Append(",");
|
||||
dic.Add(name, a);
|
||||
|
@ -250,6 +250,29 @@ namespace FreeSql.Internal.ObjectPool
|
||||
catch { }
|
||||
}
|
||||
|
||||
public void AutoFree()
|
||||
{
|
||||
if (running == false) return;
|
||||
if (UnavailableException != null) return;
|
||||
|
||||
var list = new List<Object<T>>();
|
||||
while (_freeObjects.TryPop(out var obj))
|
||||
list.Add(obj);
|
||||
foreach (var obj in list)
|
||||
{
|
||||
if (obj != null && obj.Value == null ||
|
||||
obj != null && Policy.IdleTimeout > TimeSpan.Zero && DateTime.Now.Subtract(obj.LastReturnTime) > Policy.IdleTimeout)
|
||||
{
|
||||
if (obj.Value != null)
|
||||
{
|
||||
Return(obj, true);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
Return(obj);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取可用资源,或创建资源
|
||||
/// </summary>
|
||||
|
@ -46,7 +46,7 @@ namespace FreeSql.ClickHouse.Curd
|
||||
//如果存在 join 查询,则处理 from t1, t2 改为 from t1 inner join t2 on 1 = 1
|
||||
for (var b = 1; b < tbsfrom.Length; b++)
|
||||
{
|
||||
sb.Append(" \r\nLEFT JOIN ").Append(_commonUtils.QuoteSqlName(tbUnion[tbsfrom[b].Table.Type])).Append(" ").Append(_aliasRule?.Invoke(tbsfrom[b].Table.Type, tbsfrom[b].Alias) ?? tbsfrom[b].Alias);
|
||||
sb.Append(" \r\nGLOBAL LEFT JOIN ").Append(_commonUtils.QuoteSqlName(tbUnion[tbsfrom[b].Table.Type])).Append(" ").Append(_aliasRule?.Invoke(tbsfrom[b].Table.Type, tbsfrom[b].Alias) ?? tbsfrom[b].Alias);
|
||||
|
||||
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
|
||||
else
|
||||
@ -80,13 +80,13 @@ namespace FreeSql.ClickHouse.Curd
|
||||
case SelectTableInfoType.RawJoin:
|
||||
continue;
|
||||
case SelectTableInfoType.LeftJoin:
|
||||
sb.Append(" \r\nLEFT JOIN ");
|
||||
sb.Append(" \r\nGLOBAL LEFT JOIN ");
|
||||
break;
|
||||
case SelectTableInfoType.InnerJoin:
|
||||
sb.Append(" \r\nINNER JOIN ");
|
||||
sb.Append(" \r\nGLOBAL INNER JOIN ");
|
||||
break;
|
||||
case SelectTableInfoType.RightJoin:
|
||||
sb.Append(" \r\nRIGHT JOIN ");
|
||||
sb.Append(" \r\nGLOBAL RIGHT JOIN ");
|
||||
break;
|
||||
}
|
||||
sb.Append(_commonUtils.QuoteSqlName(tbUnion[tb.Table.Type])).Append(" ").Append(_aliasRule?.Invoke(tb.Table.Type, tb.Alias) ?? tb.Alias).Append(" ON ").Append(tb.On ?? tb.NavigateCondition);
|
||||
|
Loading…
x
Reference in New Issue
Block a user