Skip to content

Commit cf028c9

Browse files
committed
- 修复 Clickhouse 参数化特殊字符 / 处理;
1 parent cc5feb5 commit cf028c9

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest1.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ internal class Entity
309309
[Fact]
310310
public void TestInsertNoneParameter()
311311
{
312-
var json = "[{\"date\":\t\"2021-12-19T02:47:53.4365075 08:00\",\"temperatureC\":6,\"temperatureF\":42,\"summary\":\"Balmy\"},{\"date\":\"2021-12-20T02:47:53.4366893 08:00\",\"temperatureC\":36,\"temperatureF\":96,\"summary\":\"Bracing\"},{\"date\":\"2021-12-21T02:47:53.4366903 08:00\",\"temperatureC\":-15,\"temperatureF\":6,\"summary\":\"Bracing\"},{\"date\":\"2021-12-22T02:47:53.4366904 08:00\",\"temperatureC\":14,\"temperatureF\":57,\"summary\":\"Cool\"},{\"date\":\"2021-12-23T02:47:53.4366905 08:00\",\"temperatureC\":29,\"temperatureF\":84,\"summary\":\"Mild\"}]";
312+
var json = "[{\"date\":\t\"2021-12-19T02:47:53.4365075 08:00/\",\"temperatureC\":6,\"temperatureF\":42,\"summary\":\"Balmy\"},{\"date\":\"2021-12-20T02:47:53.4366893 08:00\",\"temperatureC\":36,\"temperatureF\":96,\"summary\":\"Bracing\"},{\"date\":\"2021-12-21T02:47:53.4366903 08:00\",\"temperatureC\":-15,\"temperatureF\":6,\"summary\":\"Bracing\"},{\"date\":\"2021-12-22T02:47:53.4366904 08:00\",\"temperatureC\":14,\"temperatureF\":57,\"summary\":\"Cool\"},{\"date\":\"2021-12-23T02:47:53.4366905 08:00\",\"temperatureC\":29,\"temperatureF\":84,\"summary\":\"Mild\"}]";
313313
var data = new Entity { Id = Guid.NewGuid().ToString(), Content = json };
314314

315315
var fsql = g.clickHouse;
@@ -323,7 +323,7 @@ public void TestInsertUseParameter()
323323
{
324324
var fsql = g.clickHouse;
325325
fsql.CodeFirst.SyncStructure<Entity>();
326-
var json = "[{\"date\":\t\"2021-12-19T02:47:53.4365075 08:00\",\"temperatureC\":6,\"temperatureF\":42,\"summary\":\"Balmy\"},{\"date\":\"2021-12-20T02:47:53.4366893 08:00\",\"temperatureC\":36,\"temperatureF\":96,\"summary\":\"Bracing\"},{\"date\":\"2021-12-21T02:47:53.4366903 08:00\",\"temperatureC\":-15,\"temperatureF\":6,\"summary\":\"Bracing\"},{\"date\":\"2021-12-22T02:47:53.4366904 08:00\",\"temperatureC\":14,\"temperatureF\":57,\"summary\":\"Cool\"},{\"date\":\"2021-12-23T02:47:53.4366905 08:00\",\"temperatureC\":29,\"temperatureF\":84,\"summary\":\"Mild\"}]";
326+
var json = "[{\"date\":\t\"2021-12-19T02:47:53.4365075 08:00/\",\"temperatureC\":6,\"temperatureF\":42,\"summary\":\"Balmy\"},{\"date\":\"2021-12-20T02:47:53.4366893 08:00\",\"temperatureC\":36,\"temperatureF\":96,\"summary\":\"Bracing\"},{\"date\":\"2021-12-21T02:47:53.4366903 08:00\",\"temperatureC\":-15,\"temperatureF\":6,\"summary\":\"Bracing\"},{\"date\":\"2021-12-22T02:47:53.4366904 08:00\",\"temperatureC\":14,\"temperatureF\":57,\"summary\":\"Cool\"},{\"date\":\"2021-12-23T02:47:53.4366905 08:00\",\"temperatureC\":29,\"temperatureF\":84,\"summary\":\"Mild\"}]";
327327
var data = new Entity { Id = Guid.NewGuid().ToString(), Content = json };
328328

329329
var sql1 = fsql.Insert(data).ToSql();

Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ public override DbParameter AppendParamter(List<DbParameter> _params, string par
2323
value = str?.Replace("\t", "\\t")
2424
.Replace("\r\n", "\\r\\n")
2525
.Replace("\n", "\\n")
26-
.Replace("\r", "\\r");
26+
.Replace("\r", "\\r")
27+
.Replace("/", "\\/");
2728
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
2829
var dbtype = (DbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
2930
DbParameter ret = new ClickHouseDbParameter { ParameterName = parameterName };//QuoteParamterName(parameterName)
@@ -56,7 +57,8 @@ public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
5657
value = str?.Replace("\t", "\\t")
5758
.Replace("\r\n", "\\r\\n")
5859
.Replace("\n", "\\n")
59-
.Replace("\r", "\\r");
60+
.Replace("\r", "\\r")
61+
.Replace("/", "\\/");
6062
DbParameter ret = new ClickHouseDbParameter { ParameterName = $"?{name}", Value = value };
6163
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
6264
if (tp != null)

0 commit comments

Comments
 (0)