diff options
| author | 2025-06-30 15:19:09 +0200 | |
|---|---|---|
| committer | 2025-06-30 15:19:09 +0200 | |
| commit | 8b0ea560279a5bf4479555d3924c763ddeecfcad (patch) | |
| tree | 005e26d4a658e565594fb259cc17948659195822 /vendor/github.com/uptrace/bun/query_select.go | |
| parent | [chore] bumps ncruces/go-sqlite3 v0.26.1 => v0.26.3 (#4302) (diff) | |
| download | gotosocial-8b0ea560279a5bf4479555d3924c763ddeecfcad.tar.xz | |
[chore] update go dependencies (#4304)
- github.com/KimMachineGun/automemlimit v0.7.2 => v0.7.3
- github.com/gin-contrib/cors v1.7.5 => v1.7.6
- github.com/minio/minio-go/v7 v7.0.92 => v7.0.94
- github.com/spf13/cast v1.8.0 => v1.9.2
- github.com/uptrace/bun{,/*} v1.2.11 => v1.2.14
- golang.org/x/image v0.27.0 => v0.28.0
- golang.org/x/net v0.40.0 => v0.41.0
- code.superseriousbusiness.org/go-swagger v0.31.0-gts-go1.23-fix => v0.32.3-gts-go1.23-fix
Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4304
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
Diffstat (limited to 'vendor/github.com/uptrace/bun/query_select.go')
| -rw-r--r-- | vendor/github.com/uptrace/bun/query_select.go | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/vendor/github.com/uptrace/bun/query_select.go b/vendor/github.com/uptrace/bun/query_select.go index db7f42df1..0deb8dc05 100644 --- a/vendor/github.com/uptrace/bun/query_select.go +++ b/vendor/github.com/uptrace/bun/query_select.go @@ -979,20 +979,25 @@ func (q *SelectQuery) scanAndCountConcurrently( var mu sync.Mutex var firstErr error + // FIXME: clone should not be needed, because the query is not modified here + // and should not be implicitly modified by the Bun lib. countQuery := q.Clone() - wg.Add(1) - go func() { - defer wg.Done() - - if err := q.Scan(ctx, dest...); err != nil { - mu.Lock() - if firstErr == nil { - firstErr = err + // Don't scan results if the user explicitly set Limit(-1). + if q.limit >= 0 { + wg.Add(1) + go func() { + defer wg.Done() + + if err := q.Scan(ctx, dest...); err != nil { + mu.Lock() + if firstErr == nil { + firstErr = err + } + mu.Unlock() } - mu.Unlock() - } - }() + }() + } wg.Add(1) go func() { @@ -1016,6 +1021,7 @@ func (q *SelectQuery) scanAndCountConcurrently( func (q *SelectQuery) scanAndCountSeq(ctx context.Context, dest ...interface{}) (int, error) { var firstErr error + // Don't scan results if the user explicitly set Limit(-1). if q.limit >= 0 { firstErr = q.Scan(ctx, dest...) } @@ -1086,12 +1092,13 @@ func (q *SelectQuery) whereExists(ctx context.Context) (bool, error) { return n == 1, nil } +// String returns the generated SQL query string. The SelectQuery instance must not be +// modified during query generation to ensure multiple calls to String() return identical results. func (q *SelectQuery) String() string { buf, err := q.AppendQuery(q.db.Formatter(), nil) if err != nil { panic(err) } - return string(buf) } @@ -1120,13 +1127,17 @@ func (q *SelectQuery) Clone() *SelectQuery { } } + var tableModel TableModel + if q.tableModel != nil { + tableModel = q.tableModel.clone() + } clone := &SelectQuery{ whereBaseQuery: whereBaseQuery{ baseQuery: baseQuery{ db: q.db, table: q.table, model: q.model, - tableModel: q.tableModel, + tableModel: tableModel, with: make([]withQuery, len(q.with)), tables: cloneArgs(q.tables), columns: cloneArgs(q.columns), |
