in xray/sql_context.go [123:148]
func (conn *driverConn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) {
var stmt driver.Stmt
var err error
if connCtx, ok := conn.Conn.(driver.ConnPrepareContext); ok {
stmt, err = connCtx.PrepareContext(ctx, query)
} else {
stmt, err = conn.Conn.Prepare(query)
if err == nil {
select {
default:
case <-ctx.Done():
stmt.Close()
return nil, ctx.Err()
}
}
}
if err != nil {
return nil, err
}
return &driverStmt{
Stmt: stmt,
attr: conn.attr,
query: query,
conn: conn,
}, nil
}