Skip to content

Commit 82c901e

Browse files
committed
Allow to optionally bind unnamed query params when yielding results
1 parent efec262 commit 82c901e

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

pkg/icingadb/db.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,9 @@ func (db *DB) BatchSizeByPlaceholders(n int) int {
506506
// YieldAll executes the query with the supplied scope,
507507
// scans each resulting row into an entity returned by the factory function,
508508
// and streams them into a returned channel.
509-
func (db *DB) YieldAll(ctx context.Context, factoryFunc contracts.EntityFactoryFunc, query string, scope interface{}) (<-chan contracts.Entity, <-chan error) {
509+
func (db *DB) YieldAll(
510+
ctx context.Context, factoryFunc contracts.EntityFactoryFunc, query string, namedQueryParams bool, scope ...interface{},
511+
) (<-chan contracts.Entity, <-chan error) {
510512
entities := make(chan contracts.Entity, 1)
511513
g, ctx := errgroup.WithContext(ctx)
512514

@@ -515,7 +517,14 @@ func (db *DB) YieldAll(ctx context.Context, factoryFunc contracts.EntityFactoryF
515517
defer db.log(ctx, query, &counter).Stop()
516518
defer close(entities)
517519

518-
rows, err := db.NamedQueryContext(ctx, query, scope)
520+
var rows *sqlx.Rows
521+
var err error
522+
if namedQueryParams {
523+
rows, err = db.NamedQueryContext(ctx, query, scope)
524+
} else {
525+
rows, err = db.QueryxContext(ctx, query, scope...)
526+
}
527+
519528
if err != nil {
520529
return internal.CantPerformQuery(err, query)
521530
}

pkg/icingadb/sync.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ func (s Sync) Sync(ctx context.Context, subject *common.SyncSubject) error {
8585

8686
actual, dbErrs := s.db.YieldAll(
8787
ctx, subject.FactoryForDelta(),
88-
s.db.BuildSelectStmt(NewScopedEntity(subject.Entity(), e.Meta()), subject.Entity().Fingerprint()), e.Meta(),
88+
s.db.BuildSelectStmt(NewScopedEntity(subject.Entity(), e.Meta()), subject.Entity().Fingerprint()),
89+
true, e.Meta(),
8990
)
9091
// Let errors from DB cancel our group.
9192
com.ErrgroupReceive(g, dbErrs)
@@ -187,7 +188,8 @@ func (s Sync) SyncCustomvars(ctx context.Context) error {
187188

188189
actualCvs, errs := s.db.YieldAll(
189190
ctx, cv.FactoryForDelta(),
190-
s.db.BuildSelectStmt(NewScopedEntity(cv.Entity(), e.Meta()), cv.Entity().Fingerprint()), e.Meta(),
191+
s.db.BuildSelectStmt(NewScopedEntity(cv.Entity(), e.Meta()), cv.Entity().Fingerprint()),
192+
true, e.Meta(),
191193
)
192194
com.ErrgroupReceive(g, errs)
193195

@@ -199,7 +201,8 @@ func (s Sync) SyncCustomvars(ctx context.Context) error {
199201

200202
actualFlatCvs, errs := s.db.YieldAll(
201203
ctx, flatCv.FactoryForDelta(),
202-
s.db.BuildSelectStmt(NewScopedEntity(flatCv.Entity(), e.Meta()), flatCv.Entity().Fingerprint()), e.Meta(),
204+
s.db.BuildSelectStmt(NewScopedEntity(flatCv.Entity(), e.Meta()), flatCv.Entity().Fingerprint()),
205+
true, e.Meta(),
203206
)
204207
com.ErrgroupReceive(g, errs)
205208

0 commit comments

Comments
 (0)