瀏覽代碼

fix(func): array_shuffle should clone (#2188)

Signed-off-by: Jiyong Huang <huangjy@emqx.io>
ngjaying 1 年之前
父節點
當前提交
4b4ab30d34
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      internal/binder/function/funcs_array.go

+ 3 - 2
internal/binder/function/funcs_array.go

@@ -607,11 +607,12 @@ func registerArrayFunc() {
 	builtins["array_shuffle"] = builtinFunc{
 	builtins["array_shuffle"] = builtinFunc{
 		fType: ast.FuncTypeScalar,
 		fType: ast.FuncTypeScalar,
 		exec: func(ctx api.FunctionContext, args []interface{}) (interface{}, bool) {
 		exec: func(ctx api.FunctionContext, args []interface{}) (interface{}, bool) {
-			array, ok := args[0].([]interface{})
+			arr, ok := args[0].([]interface{})
 			if !ok {
 			if !ok {
 				return errorArrayFirstArgumentNotArrayError, false
 				return errorArrayFirstArgumentNotArrayError, false
 			}
 			}
-
+			array := make([]interface{}, len(arr))
+			copy(array, arr)
 			rand.Shuffle(len(array), func(i, j int) {
 			rand.Shuffle(len(array), func(i, j int) {
 				array[i], array[j] = array[j], array[i]
 				array[i], array[j] = array[j], array[i]
 			})
 			})