Skip to content

Commit b3e6247

Browse files
committed
MySQL: 传入的 slice 长度为 0 时,不走展开逻辑。
1 parent 9071e6d commit b3e6247

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

mysql/mysql_db_client.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,9 +284,11 @@ func extendInParams(sqlText string, params []any) (string, []any) {
284284
// 排除 []byte,因为虽然 []byte 也是切片类型,但是它是二进制数据,不应该被展开。
285285
if (paramValue.Kind() == reflect.Slice || paramValue.Kind() == reflect.Array) && paramValue.Type() != reflect.TypeOf([]byte{}) {
286286
paramLen := paramValue.Len()
287+
288+
// 空数组时候,作为普通参数处理(这种情况下,最后一定会错误的,但似乎没有什么好的处理方案)。
287289
if paramLen == 0 {
288-
// 空切片替换为 SQL 不可能条件。
289-
newSqlBuilder.WriteString("NULL")
290+
newSqlBuilder.WriteRune('?')
291+
newParams = append(newParams, param)
290292
continue
291293
}
292294

mysql/mysql_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ func TestExtendInParams(t *testing.T) {
7676
"empty",
7777
"select 1 from t where id in (?)",
7878
[]any{[]int{}},
79-
"select 1 from t where id in (NULL)",
80-
[]any{},
79+
"select 1 from t where id in (?)",
80+
[]any{[]int{}},
8181
},
8282
{
8383
"regular",

0 commit comments

Comments
 (0)