From 97c84ab88b4db921c0f888ecbb15e658e9058876 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 30 Jul 2022 08:04:56 +0800 Subject: [PATCH] QuestDb --- .../Realization/QuestDB/QuestDBProvider.cs | 44 +++----------- .../SqlBuilder/QuestDBInsertBuilder.cs | 8 +-- .../QuestDB/SqlBuilder/QuestDBQueryBuilder.cs | 59 +++++++++++++++++-- 3 files changed, 65 insertions(+), 46 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/QuestDBProvider.cs b/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/QuestDBProvider.cs index 22ee41f89..25ca68d31 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/QuestDBProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/QuestDBProvider.cs @@ -103,40 +103,7 @@ namespace SqlSugar sqlParameter.Direction = parameter.Direction; if (parameter.IsJson) { - sqlParameter.NpgsqlDbType = NpgsqlDbType.Json; - } - if (parameter.IsArray) - { - // sqlParameter.Value = this.Context.Utilities.SerializeObject(sqlParameter.Value); - var type = sqlParameter.Value.GetType(); - if (ArrayMapping.ContainsKey(type)) - { - sqlParameter.NpgsqlDbType = ArrayMapping[type] | NpgsqlDbType.Array; - } - else if (type==DBNull.Value.GetType()) - { - if (parameter.DbType.IsIn(System.Data.DbType.Int32)) - { - sqlParameter.NpgsqlDbType = NpgsqlDbType.Integer | NpgsqlDbType.Array; - } - else if (parameter.DbType.IsIn(System.Data.DbType.Int16)) - { - sqlParameter.NpgsqlDbType = NpgsqlDbType.Smallint | NpgsqlDbType.Array; - } - else if (parameter.DbType.IsIn(System.Data.DbType.Int64)) - { - sqlParameter.NpgsqlDbType = NpgsqlDbType.Bigint | NpgsqlDbType.Array; - } - else - { - sqlParameter.NpgsqlDbType =NpgsqlDbType.Text | NpgsqlDbType.Array; - } - - } - else - { - Check.Exception(true, sqlParameter.Value.GetType().Name + " No Support"); - } + sqlParameter.DbType=System.Data.DbType.String; } if (sqlParameter.Direction == 0) { @@ -149,14 +116,19 @@ namespace SqlSugar this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName); this.OutputParameters.Add(sqlParameter); } - if (isVarchar && sqlParameter.DbType == System.Data.DbType.String) + if (sqlParameter.DbType == System.Data.DbType.String) { sqlParameter.DbType = System.Data.DbType.AnsiString; } - if (sqlParameter.Value is DateTime && sqlParameter.DbType == System.Data.DbType.AnsiString) + else if (sqlParameter.Value is DateTime && sqlParameter.DbType == System.Data.DbType.AnsiString) { sqlParameter.DbType = System.Data.DbType.DateTime; } + else if (sqlParameter.DbType==System.Data.DbType.Decimal) + { + sqlParameter.DbType = System.Data.DbType.Double; + sqlParameter.Value = Convert.ToDouble(sqlParameter.Value); + } ++index; } return result; diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBInsertBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBInsertBuilder.cs index 16b9ff830..b37ef7fd8 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBInsertBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBInsertBuilder.cs @@ -46,10 +46,10 @@ namespace SqlSugar string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => { var spk = Builder.SqlParameterKeyWord + it.DbColumnName; - if (it.Value is DateTime) - { - return $"to_timestamp('{it.Value.ObjToString("yyyy-MM-ddTHH:mm:ss")}', 'yyyy-MM-ddTHH:mm:ss')"; - } + //if (it.Value is DateTime) + //{ + // return $"to_timestamp('{it.Value.ObjToString("yyyy-MM-ddTHH:mm:ss")}', 'yyyy-MM-ddTHH:mm:ss')"; + //} return spk; } diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBQueryBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBQueryBuilder.cs index 208e59019..8589a48b1 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBQueryBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBQueryBuilder.cs @@ -12,9 +12,9 @@ namespace SqlSugar get { /* - SELECT * FROM TABLE WHERE CONDITION ORDER BY ID DESC LIMIT 10 offset 0 + SELECT * FROM TABLE WHERE CONDITION ORDER BY ID DESC LIMIT 0,10 */ - var template = "SELECT {0} FROM {1} {2} {3} {4} LIMIT {6} offset {5}"; + var template = "SELECT {0} FROM {1} {2} {3} {4} LIMIT {5},{6}"; return template; } } @@ -31,7 +31,7 @@ namespace SqlSugar #region Common Methods public override bool IsComplexModel(string sql) { - return Regex.IsMatch(sql, @"AS ""\w+\.\w+""")|| Regex.IsMatch(sql, @"AS ""\w+\.\w+\.\w+"""); + return Regex.IsMatch(sql, @"AS \`\w+\.\w+\`") || Regex.IsMatch(sql, @"AS \`\w+\.\w+\.\w+\`"); } public override string ToSqlString() { @@ -72,7 +72,54 @@ namespace SqlSugar } return result; } - + private string ToCountSqlString() + { + //base.AppendFilter(); + string oldOrderValue = this.OrderByValue; + string result = null; + sql = new StringBuilder(); + sql.AppendFormat(SqlTemplate, "Count(*)", GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString); + if (IsCount) + { + if (sql.ToString().Contains("-- No table")) + { + return "-- No table"; + } + return sql.ToString(); + } + if (Skip != null && Take == null) + { + if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0]; + result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString, Skip.ObjToInt(), long.MaxValue); + } + else if (Skip == null && Take != null) + { + if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0]; + result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 0, Take.ObjToInt()); + } + else if (Skip != null && Take != null) + { + if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0]; + result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt() : 0, Take); + } + else + { + result = sql.ToString(); + } + this.OrderByValue = oldOrderValue; + return result; + } + public override string ToCountSql(string sql) + { + if (this.GroupByValue.HasValue()) + { + return base.ToCountSql(sql); + } + else + { + return ToCountSqlString(); + } + } #endregion #region Get SQL Partial @@ -93,9 +140,9 @@ namespace SqlSugar { this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName)); } - if (IsDistinct) + if (IsDistinct) { - result = "distinct "+result; + result = " DISTINCT " + result; } return result; }