diff --git a/changes/30199-stmt-tweak b/changes/30199-stmt-tweak new file mode 100644 index 0000000000..c0b289f0fa --- /dev/null +++ b/changes/30199-stmt-tweak @@ -0,0 +1 @@ +* Improved performance when pulling team settings on osquery config and distributed read endpoints diff --git a/server/datastore/mysql/teams.go b/server/datastore/mysql/teams.go index 568efeaf70..70a2af1568 100644 --- a/server/datastore/mysql/teams.go +++ b/server/datastore/mysql/teams.go @@ -394,9 +394,9 @@ func amountTeamsDB(ctx context.Context, db sqlx.QueryerContext) (int, error) { // TeamAgentOptions loads the agents options of a team. func (ds *Datastore) TeamAgentOptions(ctx context.Context, tid uint) (*json.RawMessage, error) { - sql := `SELECT config->'$.agent_options' FROM teams WHERE id = ?` + stmt := fmt.Sprintf(`SELECT config->'$.agent_options' FROM teams WHERE id = %d`, tid) // safe because uint var agentOptions *json.RawMessage - if err := sqlx.GetContext(ctx, ds.reader(ctx), &agentOptions, sql, tid); err != nil { + if err := sqlx.GetContext(ctx, ds.reader(ctx), &agentOptions, stmt); err != nil { return nil, ctxerr.Wrap(ctx, err, "select team") } return agentOptions, nil @@ -408,9 +408,9 @@ func (ds *Datastore) TeamFeatures(ctx context.Context, tid uint) (*fleet.Feature } func teamFeaturesDB(ctx context.Context, q sqlx.QueryerContext, tid uint) (*fleet.Features, error) { - sql := `SELECT config->'$.features' as features FROM teams WHERE id = ?` + stmt := fmt.Sprintf(`SELECT config->'$.features' as features FROM teams WHERE id = %d`, tid) // safe due to uint var raw *json.RawMessage - if err := sqlx.GetContext(ctx, q, &raw, sql, tid); err != nil { + if err := sqlx.GetContext(ctx, q, &raw, stmt); err != nil { return nil, ctxerr.Wrap(ctx, err, "get team config features") }