From d91c7fbdfd64fc9dc18a997560d7aeb480b64a3a Mon Sep 17 00:00:00 2001
From: d4ilys <963922242@qq.com>
Date: Tue, 21 Nov 2023 11:40:22 +0800
Subject: [PATCH] =?UTF-8?q?Clickhouse=20Array=E6=B3=9B=E5=9E=8B=E6=8F=92?=
=?UTF-8?q?=E5=85=A5=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ClickHouse/ClickHouseTest3.cs | 31 ++++++++++++++++++-
FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml | 5 +++
.../AdoProvider/AdoProviderUtils.cs | 2 +-
.../ClickHouseUtils.cs | 2 +-
4 files changed, 37 insertions(+), 3 deletions(-)
diff --git a/FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest3.cs b/FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest3.cs
index 953eef71..87abfe4c 100644
--- a/FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest3.cs
+++ b/FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest3.cs
@@ -114,7 +114,22 @@ namespace FreeSql.Tests.ClickHouse
[Fact]
public void ArrayBoolMappingSync()
{
- _fsql.CodeFirst.SyncStructure(typeof(ArrayMappingTest));
+ _fsql.CodeFirst.SyncStructure(typeof(ArrayMappingTestSimple));
+ }
+
+ ///
+ /// 测试Array类型映射
+ ///
+ [Fact]
+ public void ArrayBoolMappingInsert()
+ {
+ _ = _fsql.Insert(new ArrayMappingTestSimple
+ {
+ Name = "daily",
+ Tags1 = new List() { "a", "b", "c" },
+ Tags2 = new List() { 1, 2, 3, 4 },
+ Tags3 = new List() { true, true, false }
+ }).ExecuteAffrows();
}
}
@@ -153,4 +168,18 @@ namespace FreeSql.Tests.ClickHouse
[Column(Name = "tags7")] public IEnumerable Tags7 { get; set; }
}
+
+ [Table(Name = "table_test_array_simple")]
+ public class ArrayMappingTestSimple
+
+ {
+ [Column(Name = "name", IsPrimary = true)]
+ public string Name { get; set; }
+
+ [Column(Name = "tags1")] public IEnumerable Tags1 { get; set; }
+
+ [Column(Name = "tags2")] public List Tags2 { get; set; }
+
+ [Column(Name = "tags3")] public IEnumerable Tags3 { get; set; }
+ }
}
\ No newline at end of file
diff --git a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
index 5f515a4c..a4862081 100644
--- a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
+++ b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
@@ -34,6 +34,11 @@
测试Array类型映射
+
+
+ 测试Array类型映射
+
+
实时数据
diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderUtils.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderUtils.cs
index a5461a4d..001c2b4e 100644
--- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderUtils.cs
+++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderUtils.cs
@@ -43,7 +43,7 @@ namespace FreeSql.Internal.CommonProvider
sb.Append(AddslashesProcessParam(z, mapType, mapColumn));
}
- return sb.Length == 0 ? "(NULL)" : sb.Remove(0, 1).Insert(0, "(").Append(")").ToString();
+ return sb.Length == 0 ? "(NULL)" : sb.Remove(0, 1).Insert(0, "[").Append("]").ToString();
}
public static bool IsFromSlave(string cmdText)
diff --git a/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs b/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs
index c2ec7634..38a74d35 100644
--- a/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs
+++ b/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs
@@ -146,7 +146,7 @@ namespace FreeSql.ClickHouse
}
public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
- {
+ {
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
if (type == typeof(byte[])) return $"0x{CommonUtils.BytesSqlRaw(value as byte[])}";