From 5eaffa700e8b0fa2552783815f30c6a8ed445c13 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 2 Jul 2023 19:20:32 +0800 Subject: [PATCH] Update Clickhouse array type bug --- .../ClickHouse/SqlBuilder/ClickHouseInsertBuilder.cs | 12 ++++++++++-- .../ClickHouse/SqlBuilder/ClickHouseUpdateBuilder.cs | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/SqlBuilder/ClickHouseInsertBuilder.cs b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/SqlBuilder/ClickHouseInsertBuilder.cs index c95a222f2..c5af6c8cd 100644 --- a/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/SqlBuilder/ClickHouseInsertBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/SqlBuilder/ClickHouseInsertBuilder.cs @@ -25,7 +25,7 @@ namespace SqlSugar.ClickHouse } } int i = 0; - public object FormatValue(object value, string name) + public object FormatValue(object value, string name,DbColumnInfo dbColumnInfo) { var n = ""; if (this.Context.CurrentConnectionConfig.MoreSettings != null && this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar) @@ -63,6 +63,14 @@ namespace SqlSugar.ClickHouse return Convert.ToInt64(value); } } + else if (dbColumnInfo.IsArray&& value!=null) + { + return n+"'"+this.Context.Utilities.SerializeObject(value)+"'"; + } + else if (dbColumnInfo.IsJson && value != null) + { + return n + "'" + this.Context.Utilities.SerializeObject(value) + "'"; + } else if (type == UtilConstants.BoolType) { return value.ObjToBool() ? "1" : "0"; @@ -144,7 +152,7 @@ namespace SqlSugar.ClickHouse foreach (var item in groupList) { batchInsetrSql.Append("("); - insertColumns = string.Join(",", item.Select(it =>base.GetDbColumn(it, FormatValue(it.Value, it.PropertyName)))); + insertColumns = string.Join(",", item.Select(it =>base.GetDbColumn(it, FormatValue(it.Value, it.PropertyName,it)))); batchInsetrSql.Append(insertColumns); if (groupList.Last() == item) { diff --git a/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/SqlBuilder/ClickHouseUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/SqlBuilder/ClickHouseUpdateBuilder.cs index c97e902d4..a1bf167dd 100644 --- a/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/SqlBuilder/ClickHouseUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/SqlBuilder/ClickHouseUpdateBuilder.cs @@ -114,9 +114,9 @@ namespace SqlSugar.ClickHouse } private string GetOracleUpdateColums(int i, DbColumnInfo m, bool iswhere) { - return string.Format("\"{0}\"={1}", m.DbColumnName, base.GetDbColumn(m,FormatValue(i, m.DbColumnName, m.Value, iswhere))); + return string.Format("\"{0}\"={1}", m.DbColumnName, base.GetDbColumn(m,FormatValue(i, m.DbColumnName, m.Value, iswhere,m))); } - public object FormatValue(int i, string name, object value, bool iswhere) + public object FormatValue(int i, string name, object value, bool iswhere,DbColumnInfo dbColumnInfo) { if (value == null) { @@ -158,6 +158,14 @@ namespace SqlSugar.ClickHouse return Convert.ToInt64(value); } } + else if (dbColumnInfo.IsArray && value != null) + { + return n + "'" + this.Context.Utilities.SerializeObject(value) + "'"; + } + else if (dbColumnInfo.IsJson && value != null) + { + return n + "'" + this.Context.Utilities.SerializeObject(value) + "'"; + } else if (type == UtilConstants.ByteArrayType) { var parameterName = this.Builder.SqlParameterKeyWord + name + i;