package sql
import (
)
func ( context.Context, driver.Conn, string) (driver.Stmt, error) {
if , := .(driver.ConnPrepareContext); {
return .PrepareContext(, )
}
, := .Prepare()
if == nil {
select {
default:
case <-.Done():
.Close()
return nil, .Err()
}
}
return ,
}
func ( context.Context, driver.ExecerContext, driver.Execer, string, []driver.NamedValue) (driver.Result, error) {
if != nil {
return .ExecContext(, , )
}
, := namedValueToValue()
if != nil {
return nil,
}
select {
default:
case <-.Done():
return nil, .Err()
}
return .Exec(, )
}
func ( context.Context, driver.QueryerContext, driver.Queryer, string, []driver.NamedValue) (driver.Rows, error) {
if != nil {
return .QueryContext(, , )
}
, := namedValueToValue()
if != nil {
return nil,
}
select {
default:
case <-.Done():
return nil, .Err()
}
return .Query(, )
}
func ( context.Context, driver.Stmt, []driver.NamedValue) (driver.Result, error) {
if , := .(driver.StmtExecContext); {
return .ExecContext(, )
}
, := namedValueToValue()
if != nil {
return nil,
}
select {
default:
case <-.Done():
return nil, .Err()
}
return .Exec()
}
func ( context.Context, driver.Stmt, []driver.NamedValue) (driver.Rows, error) {
if , := .(driver.StmtQueryContext); {
return .QueryContext(, )
}
, := namedValueToValue()
if != nil {
return nil,
}
select {
default:
case <-.Done():
return nil, .Err()
}
return .Query()
}
func ( context.Context, *TxOptions, driver.Conn) (driver.Tx, error) {
if , := .(driver.ConnBeginTx); {
:= driver.TxOptions{}
if != nil {
.Isolation = driver.IsolationLevel(.Isolation)
.ReadOnly = .ReadOnly
}
return .BeginTx(, )
}
if != nil {
if .Isolation != LevelDefault {
return nil, errors.New("sql: driver does not support non-default isolation level")
}
if .ReadOnly {
return nil, errors.New("sql: driver does not support read-only transactions")
}
}
if .Done() == nil {
return .Begin()
}
, := .Begin()
if == nil {
select {
default:
case <-.Done():
.Rollback()
return nil, .Err()
}
}
return ,
}
func ( []driver.NamedValue) ([]driver.Value, error) {
:= make([]driver.Value, len())
for , := range {
if len(.Name) > 0 {
return nil, errors.New("sql: driver does not support the use of Named Parameters")
}
[] = .Value
}
return , nil
}