Преглед на файлове

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{
 		fType: ast.FuncTypeScalar,
 		exec: func(ctx api.FunctionContext, args []interface{}) (interface{}, bool) {
-			array, ok := args[0].([]interface{})
+			arr, ok := args[0].([]interface{})
 			if !ok {
 				return errorArrayFirstArgumentNotArrayError, false
 			}
-
+			array := make([]interface{}, len(arr))
+			copy(array, arr)
 			rand.Shuffle(len(array), func(i, j int) {
 				array[i], array[j] = array[j], array[i]
 			})