From 15517f8329378b6e1d1fa6a22eea69e52dda8344 Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Wed, 19 Oct 2022 10:33:40 -0400 Subject: [PATCH] SQLX: Expose sqlxdb query functions (#57227) --- pkg/services/sqlstore/session/session.go | 8 ++++++++ pkg/services/sqlstore/session_test.go | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/pkg/services/sqlstore/session/session.go b/pkg/services/sqlstore/session/session.go index 9cf72b7eadc..c0163d2c4f2 100644 --- a/pkg/services/sqlstore/session/session.go +++ b/pkg/services/sqlstore/session/session.go @@ -30,6 +30,10 @@ func (gs *SessionDB) Select(ctx context.Context, dest interface{}, query string, return gs.sqlxdb.SelectContext(ctx, dest, gs.sqlxdb.Rebind(query), args...) } +func (gs *SessionDB) Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) { + return gs.sqlxdb.QueryContext(ctx, gs.sqlxdb.Rebind(query), args...) +} + func (gs *SessionDB) Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error) { return gs.sqlxdb.ExecContext(ctx, gs.sqlxdb.Rebind(query), args...) } @@ -80,6 +84,10 @@ func (gtx *SessionTx) Exec(ctx context.Context, query string, args ...interface{ return gtx.sqlxtx.ExecContext(ctx, gtx.sqlxtx.Rebind(query), args...) } +func (gtx *SessionTx) Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) { + return gtx.sqlxtx.QueryContext(ctx, gtx.sqlxtx.Rebind(query), args...) +} + func (gtx *SessionTx) Get(ctx context.Context, dest interface{}, query string, args ...interface{}) error { return gtx.sqlxtx.GetContext(ctx, dest, gtx.sqlxtx.Rebind(query), args...) } diff --git a/pkg/services/sqlstore/session_test.go b/pkg/services/sqlstore/session_test.go index 061990eb3b4..6d22c735e5f 100644 --- a/pkg/services/sqlstore/session_test.go +++ b/pkg/services/sqlstore/session_test.go @@ -59,4 +59,20 @@ func TestRetryingOnFailures(t *testing.T) { require.Equal(t, i, store.dbCfg.QueryRetries+1) }) } + + // Check SQL query + sess := store.GetSqlxSession() + rows, err := sess.Query(context.Background(), `SELECT "hello",2.3,4`) + require.NoError(t, err) + require.True(t, rows.Next()) // first row + + str1 := "" + val2 := float64(100.1) + val3 := int64(200) + err = rows.Scan(&str1, &val2, &val3) + require.NoError(t, err) + require.Equal(t, "hello", str1) + require.Equal(t, 2.3, val2) + require.Equal(t, int64(4), val3) + require.False(t, rows.Next()) // no more rows }