diff --git a/go.mod b/go.mod index 189d7a32..c2e80f9a 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/gin-contrib/zap v0.2.0 github.com/gin-gonic/gin v1.9.1 github.com/go-rel/mysql v0.12.0 - github.com/go-rel/rel v0.41.0 + github.com/go-rel/rel v0.42.0 github.com/go-rel/reltest v0.12.0 github.com/go-sql-driver/mysql v1.7.1 github.com/stretchr/testify v1.9.0 diff --git a/go.sum b/go.sum index 4b921900..064bc9d5 100644 --- a/go.sum +++ b/go.sum @@ -40,8 +40,8 @@ github.com/go-playground/validator/v10 v10.15.5/go.mod h1:9iXMNT7sEkjXb0I+enO7QX github.com/go-rel/mysql v0.12.0 h1:GMwNktroIgA5a8AMxSj6MnnobXqZ85LnjPjtV0OU3Pc= github.com/go-rel/mysql v0.12.0/go.mod h1:Q1Xa47BIyoeDfv5nFXo6VCEWwjpWpOX5wJnUAYOz4HA= github.com/go-rel/primaryreplica v0.6.0 h1:8ZlgUatz+Ger+d51aIvlDWK3iZSa2RwD6ys3cingyf0= -github.com/go-rel/rel v0.41.0 h1:21+n3QwPm1w193n9f+WB0LKDJxWS6bG3jO0DGqFCb7c= -github.com/go-rel/rel v0.41.0/go.mod h1:6opWRxsoHoDq67fIDnsmcmnojpskWpPqCs0AoL/UrEU= +github.com/go-rel/rel v0.42.0 h1:LxtI/Q7ConrivN+rp95LvLnu7QWU0stD9/ZpeR6OdrU= +github.com/go-rel/rel v0.42.0/go.mod h1:7RaEaNz30kCt/14m4VgdVWXFzATWnqJ40f0z1DnAUyk= github.com/go-rel/reltest v0.12.0 h1:8tP6zeH22mOwbfDbtQ6pn7UgxVK8D1XgkAn31YQ8W/o= github.com/go-rel/reltest v0.12.0/go.mod h1:JQGeMVG8i3OTk7wxNxKfrg1DyNz+nJcB0bjlyUjL4dE= github.com/go-rel/sql v0.16.0 h1:6k+eYAMSwBsKFXLHQFpPplMjWQJf6DMUPlTxwWoR/l8= diff --git a/vendor/github.com/go-rel/rel/cursor.go b/vendor/github.com/go-rel/rel/cursor.go index 78efd4c8..d9f233da 100644 --- a/vendor/github.com/go-rel/rel/cursor.go +++ b/vendor/github.com/go-rel/rel/cursor.go @@ -92,8 +92,14 @@ func scanMulti(cur Cursor, keyField string, keyType reflect.Type, cols map[any][ key, found := doc.Value(keyField) mustTrue(found, "rel: key field not found") + needCopy := false for _, col := range cols[key] { - col.Append(doc) + if needCopy { + col.Append(doc.Copy()) + } else { + col.Append(doc) + needCopy = true + } } // create new doc for next scan diff --git a/vendor/github.com/go-rel/rel/document.go b/vendor/github.com/go-rel/rel/document.go index 5e4fa28a..34d92dfe 100644 --- a/vendor/github.com/go-rel/rel/document.go +++ b/vendor/github.com/go-rel/rel/document.go @@ -266,6 +266,13 @@ func (d Document) NewDocument() *Document { return newZeroDocument(d.rt) } +// Copy returns copy of this document +func (d Document) Copy() *Document { + rv := reflect.New(d.rt) + rv.Elem().Set(d.rv) + return NewDocument(rv) +} + // Append is alias for Assign for compatibility with internal slice interface func (d *Document) Append(o *Document) { d.Assign(o) diff --git a/vendor/modules.txt b/vendor/modules.txt index f709d29d..8364766f 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -69,7 +69,7 @@ github.com/go-playground/validator/v10 # github.com/go-rel/mysql v0.12.0 ## explicit; go 1.21 github.com/go-rel/mysql -# github.com/go-rel/rel v0.41.0 +# github.com/go-rel/rel v0.42.0 ## explicit; go 1.21 github.com/go-rel/rel github.com/go-rel/rel/where