github.com/RevenueMonster/sqlike@v1.0.6/plugin/opentracing/stmt.go (about) 1 package opentracing 2 3 import ( 4 "context" 5 "database/sql/driver" 6 7 "github.com/opentracing/opentracing-go" 8 ) 9 10 // StmtExecContext : 11 func (ot *OpenTracingInterceptor) StmtExecContext(ctx context.Context, conn driver.StmtExecContext, query string, args []driver.NamedValue) (result driver.Result, err error) { 12 if ot.opts.Exec { 13 var span opentracing.Span 14 span, ctx = ot.MaybeStartSpanFromContext(ctx, "stmt_exec") 15 ot.logQueryArgs(span, query, args) 16 defer func() { 17 ot.logError(span, err) 18 span.Finish() 19 }() 20 } 21 result, err = conn.ExecContext(ctx, args) 22 return 23 } 24 25 // StmtQueryContext : 26 func (ot *OpenTracingInterceptor) StmtQueryContext(ctx context.Context, conn driver.StmtQueryContext, query string, args []driver.NamedValue) (rows driver.Rows, err error) { 27 if ot.opts.Query { 28 var span opentracing.Span 29 span, ctx = ot.MaybeStartSpanFromContext(ctx, "stmt_query") 30 ot.logQueryArgs(span, query, args) 31 defer func() { 32 ot.logError(span, err) 33 span.Finish() 34 }() 35 } 36 rows, err = conn.QueryContext(ctx, args) 37 return 38 } 39 40 // StmtClose : 41 func (ot *OpenTracingInterceptor) StmtClose(ctx context.Context, conn driver.Stmt) (err error) { 42 if ot.opts.RowsClose { 43 span, _ := ot.MaybeStartSpanFromContext(ctx, "stmt_close") 44 defer func() { 45 ot.logError(span, err) 46 span.Finish() 47 }() 48 } 49 err = conn.Close() 50 return nil 51 }