summaryrefslogtreecommitdiff
path: root/libgo/go/exp/sql/sql.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/exp/sql/sql.go')
-rw-r--r--libgo/go/exp/sql/sql.go61
1 files changed, 31 insertions, 30 deletions
diff --git a/libgo/go/exp/sql/sql.go b/libgo/go/exp/sql/sql.go
index 7f0e0b28425..4f1c539127c 100644
--- a/libgo/go/exp/sql/sql.go
+++ b/libgo/go/exp/sql/sql.go
@@ -7,8 +7,9 @@
package sql
import (
+ "errors"
"fmt"
- "os"
+ "io"
"runtime"
"sync"
@@ -50,7 +51,7 @@ type NullableString struct {
}
// ScanInto implements the ScannerInto interface.
-func (ms *NullableString) ScanInto(value interface{}) os.Error {
+func (ms *NullableString) ScanInto(value interface{}) error {
if value == nil {
ms.String, ms.Valid = "", false
return nil
@@ -74,13 +75,13 @@ type ScannerInto interface {
//
// An error should be returned if the value can not be stored
// without loss of information.
- ScanInto(value interface{}) os.Error
+ ScanInto(value interface{}) error
}
// ErrNoRows is returned by Scan when QueryRow doesn't return a
// row. In such a case, QueryRow returns a placeholder *Row value that
// defers this error until a Scan.
-var ErrNoRows = os.NewError("db: no rows in result set")
+var ErrNoRows = errors.New("db: no rows in result set")
// DB is a database handle. It's safe for concurrent use by multiple
// goroutines.
@@ -98,7 +99,7 @@ type DB struct {
//
// Most users will open a database via a driver-specific connection
// helper function that returns a *DB.
-func Open(driverName, dataSourceName string) (*DB, os.Error) {
+func Open(driverName, dataSourceName string) (*DB, error) {
driver, ok := drivers[driverName]
if !ok {
return nil, fmt.Errorf("db: unknown driver %q (forgotten import?)", driverName)
@@ -114,7 +115,7 @@ func (db *DB) maxIdleConns() int {
}
// conn returns a newly-opened or cached driver.Conn
-func (db *DB) conn() (driver.Conn, os.Error) {
+func (db *DB) conn() (driver.Conn, error) {
db.mu.Lock()
if n := len(db.freeConn); n > 0 {
conn := db.freeConn[n-1]
@@ -154,7 +155,7 @@ func (db *DB) closeConn(c driver.Conn) {
}
// Prepare creates a prepared statement for later execution.
-func (db *DB) Prepare(query string) (*Stmt, os.Error) {
+func (db *DB) Prepare(query string) (*Stmt, error) {
// TODO: check if db.driver supports an optional
// driver.Preparer interface and call that instead, if so,
// otherwise we make a prepared statement that's bound
@@ -179,7 +180,7 @@ func (db *DB) Prepare(query string) (*Stmt, os.Error) {
}
// Exec executes a query without returning any rows.
-func (db *DB) Exec(query string, args ...interface{}) (Result, os.Error) {
+func (db *DB) Exec(query string, args ...interface{}) (Result, error) {
// Optional fast path, if the driver implements driver.Execer.
if execer, ok := db.driver.(driver.Execer); ok {
resi, err := execer.Exec(query, args)
@@ -218,7 +219,7 @@ func (db *DB) Exec(query string, args ...interface{}) (Result, os.Error) {
}
// Query executes a query that returns rows, typically a SELECT.
-func (db *DB) Query(query string, args ...interface{}) (*Rows, os.Error) {
+func (db *DB) Query(query string, args ...interface{}) (*Rows, error) {
stmt, err := db.Prepare(query)
if err != nil {
return nil, err
@@ -240,7 +241,7 @@ func (db *DB) QueryRow(query string, args ...interface{}) *Row {
// Begin starts a transaction. The isolation level is dependent on
// the driver.
-func (db *DB) Begin() (*Tx, os.Error) {
+func (db *DB) Begin() (*Tx, error) {
// TODO(bradfitz): add another method for beginning a transaction
// at a specific isolation level.
panic(todo())
@@ -257,17 +258,17 @@ type Tx struct {
}
// Commit commits the transaction.
-func (tx *Tx) Commit() os.Error {
+func (tx *Tx) Commit() error {
panic(todo())
}
// Rollback aborts the transaction.
-func (tx *Tx) Rollback() os.Error {
+func (tx *Tx) Rollback() error {
panic(todo())
}
// Prepare creates a prepared statement.
-func (tx *Tx) Prepare(query string) (*Stmt, os.Error) {
+func (tx *Tx) Prepare(query string) (*Stmt, error) {
panic(todo())
}
@@ -278,7 +279,7 @@ func (tx *Tx) Exec(query string, args ...interface{}) {
}
// Query executes a query that returns rows, typically a SELECT.
-func (tx *Tx) Query(query string, args ...interface{}) (*Rows, os.Error) {
+func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error) {
panic(todo())
}
@@ -313,7 +314,7 @@ func todo() string {
// Exec executes a prepared statement with the given arguments and
// returns a Result summarizing the effect of the statement.
-func (s *Stmt) Exec(args ...interface{}) (Result, os.Error) {
+func (s *Stmt) Exec(args ...interface{}) (Result, error) {
ci, si, err := s.connStmt()
if err != nil {
return nil, err
@@ -352,10 +353,10 @@ func (s *Stmt) Exec(args ...interface{}) (Result, os.Error) {
return result{resi}, nil
}
-func (s *Stmt) connStmt(args ...interface{}) (driver.Conn, driver.Stmt, os.Error) {
+func (s *Stmt) connStmt(args ...interface{}) (driver.Conn, driver.Stmt, error) {
s.mu.Lock()
if s.closed {
- return nil, nil, os.NewError("db: statement is closed")
+ return nil, nil, errors.New("db: statement is closed")
}
var cs connStmt
match := false
@@ -391,7 +392,7 @@ func (s *Stmt) connStmt(args ...interface{}) (driver.Conn, driver.Stmt, os.Error
// Query executes a prepared query statement with the given arguments
// and returns the query results as a *Rows.
-func (s *Stmt) Query(args ...interface{}) (*Rows, os.Error) {
+func (s *Stmt) Query(args ...interface{}) (*Rows, error) {
ci, si, err := s.connStmt(args...)
if err != nil {
return nil, err
@@ -433,7 +434,7 @@ func (s *Stmt) QueryRow(args ...interface{}) *Row {
}
// Close closes the statement.
-func (s *Stmt) Close() os.Error {
+func (s *Stmt) Close() error {
s.mu.Lock()
defer s.mu.Unlock() // TODO(bradfitz): move this unlock after 'closed = true'?
if s.closed {
@@ -473,7 +474,7 @@ type Rows struct {
closed bool
lastcols []interface{}
- lasterr os.Error
+ lasterr error
}
// Next prepares the next result row for reading with the Scan method.
@@ -495,8 +496,8 @@ func (rs *Rows) Next() bool {
}
// Error returns the error, if any, that was encountered during iteration.
-func (rs *Rows) Error() os.Error {
- if rs.lasterr == os.EOF {
+func (rs *Rows) Error() error {
+ if rs.lasterr == io.EOF {
return nil
}
return rs.lasterr
@@ -506,15 +507,15 @@ func (rs *Rows) Error() os.Error {
// at by dest. If dest contains pointers to []byte, the slices should
// not be modified and should only be considered valid until the next
// call to Next or Scan.
-func (rs *Rows) Scan(dest ...interface{}) os.Error {
+func (rs *Rows) Scan(dest ...interface{}) error {
if rs.closed {
- return os.NewError("db: Rows closed")
+ return errors.New("db: Rows closed")
}
if rs.lasterr != nil {
return rs.lasterr
}
if rs.lastcols == nil {
- return os.NewError("db: Scan called without calling Next")
+ return errors.New("db: Scan called without calling Next")
}
if len(dest) != len(rs.lastcols) {
return fmt.Errorf("db: expected %d destination arguments in Scan, not %d", len(rs.lastcols), len(dest))
@@ -531,7 +532,7 @@ func (rs *Rows) Scan(dest ...interface{}) os.Error {
// Close closes the Rows, preventing further enumeration. If the
// end is encountered, the Rows are closed automatically. Close
// is idempotent.
-func (rs *Rows) Close() os.Error {
+func (rs *Rows) Close() error {
if rs.closed {
return nil
}
@@ -544,7 +545,7 @@ func (rs *Rows) Close() os.Error {
// Row is the result of calling QueryRow to select a single row.
type Row struct {
// One of these two will be non-nil:
- err os.Error // deferred error for easy chaining
+ err error // deferred error for easy chaining
rows *Rows
}
@@ -556,7 +557,7 @@ type Row struct {
// If dest contains pointers to []byte, the slices should not be
// modified and should only be considered valid until the next call to
// Next or Scan.
-func (r *Row) Scan(dest ...interface{}) os.Error {
+func (r *Row) Scan(dest ...interface{}) error {
if r.err != nil {
return r.err
}
@@ -569,8 +570,8 @@ func (r *Row) Scan(dest ...interface{}) os.Error {
// A Result summarizes an executed SQL command.
type Result interface {
- LastInsertId() (int64, os.Error)
- RowsAffected() (int64, os.Error)
+ LastInsertId() (int64, error)
+ RowsAffected() (int64, error)
}
type result struct {