Browse Source

fix breaking compatibility.

revert cf4bd560f1588d96c502b4c3407fe1a10cef4a28

close #394
Yasuhiro Matsumoto 1 year ago
parent
commit
866c3293d9
4 changed files with 15 additions and 16 deletions
  1. 2 2
      backup.go
  2. 3 4
      error.go
  3. 4 4
      error_test.go
  4. 6 6
      sqlite3.go

+ 2 - 2
backup.go

@@ -48,7 +48,7 @@ func (b *SQLiteBackup) Step(p int) (bool, error) {
 	if ret == C.SQLITE_DONE {
 		return true, nil
 	} else if ret != 0 && ret != C.SQLITE_LOCKED && ret != C.SQLITE_BUSY {
-		return false, &Error{Code: ErrNo(ret)}
+		return false, Error{Code: ErrNo(ret)}
 	}
 	return false, nil
 }
@@ -79,7 +79,7 @@ func (b *SQLiteBackup) Close() error {
 	runtime.SetFinalizer(b, nil)
 
 	if ret != 0 {
-		return &Error{Code: ErrNo(ret)}
+		return Error{Code: ErrNo(ret)}
 	}
 	return nil
 }

+ 3 - 4
error.go

@@ -58,7 +58,7 @@ var (
 
 // Error return error message from errno.
 func (err ErrNo) Error() string {
-	return (&Error{Code: err}).Error()
+	return Error{Code: err}.Error()
 }
 
 // Extend return extended errno.
@@ -68,11 +68,10 @@ func (err ErrNo) Extend(by int) ErrNoExtended {
 
 // Error return error message that is extended code.
 func (err ErrNoExtended) Error() string {
-	return (&Error{Code: ErrNo(C.int(err) & ErrNoMask), ExtendedCode: err}).Error()
+	return Error{Code: ErrNo(C.int(err) & ErrNoMask), ExtendedCode: err}.Error()
 }
 
-// Error return error message.
-func (err *Error) Error() string {
+func (err Error) Error() string {
 	if err.err != "" {
 		return err.err
 	}

+ 4 - 4
error_test.go

@@ -40,7 +40,7 @@ func TestCorruptDbErrors(t *testing.T) {
 		_, err = db.Exec("drop table foo")
 	}
 
-	sqliteErr := err.(*Error)
+	sqliteErr := err.(Error)
 	if sqliteErr.Code != ErrNotADB {
 		t.Error("wrong error code for corrupted DB")
 	}
@@ -110,7 +110,7 @@ func TestExtendedErrorCodes_ForeignKey(t *testing.T) {
 	if err == nil {
 		t.Error("No error!")
 	} else {
-		sqliteErr := err.(*Error)
+		sqliteErr := err.(Error)
 		if sqliteErr.Code != ErrConstraint {
 			t.Errorf("Wrong basic error code: %d != %d",
 				sqliteErr.Code, ErrConstraint)
@@ -166,7 +166,7 @@ func TestExtendedErrorCodes_NotNull(t *testing.T) {
 	if err == nil {
 		t.Error("No error!")
 	} else {
-		sqliteErr := err.(*Error)
+		sqliteErr := err.(Error)
 		if sqliteErr.Code != ErrConstraint {
 			t.Errorf("Wrong basic error code: %d != %d",
 				sqliteErr.Code, ErrConstraint)
@@ -222,7 +222,7 @@ func TestExtendedErrorCodes_Unique(t *testing.T) {
 	if err == nil {
 		t.Error("No error!")
 	} else {
-		sqliteErr := err.(*Error)
+		sqliteErr := err.(Error)
 		if sqliteErr.Code != ErrConstraint {
 			t.Errorf("Wrong basic error code: %d != %d",
 				sqliteErr.Code, ErrConstraint)

+ 6 - 6
sqlite3.go

@@ -298,7 +298,7 @@ func (ai *aggInfo) Done(ctx *C.sqlite3_context) {
 // Commit transaction.
 func (tx *SQLiteTx) Commit() error {
 	_, err := tx.c.exec(context.Background(), "COMMIT", nil)
-	if err != nil && err.(*Error).Code == C.SQLITE_BUSY {
+	if err != nil && err.(Error).Code == C.SQLITE_BUSY {
 		// sqlite3 will leave the transaction open in this scenario.
 		// However, database/sql considers the transaction complete once we
 		// return from Commit() - we must clean up to honour its semantics.
@@ -399,12 +399,12 @@ func (c *SQLiteConn) AutoCommit() bool {
 	return int(C.sqlite3_get_autocommit(c.db)) != 0
 }
 
-func (c *SQLiteConn) lastError() *Error {
+func (c *SQLiteConn) lastError() error {
 	rv := C.sqlite3_errcode(c.db)
 	if rv == C.SQLITE_OK {
 		return nil
 	}
-	return &Error{
+	return Error{
 		Code:         ErrNo(rv),
 		ExtendedCode: ErrNoExtended(C.sqlite3_extended_errcode(c.db)),
 		err:          C.GoString(C.sqlite3_errmsg(c.db)),
@@ -519,7 +519,7 @@ func (c *SQLiteConn) begin(ctx context.Context) (driver.Tx, error) {
 	return &SQLiteTx{c}, nil
 }
 
-func errorString(err *Error) string {
+func errorString(err Error) string {
 	return C.GoString(C.sqlite3_errstr(C.int(err.Code)))
 }
 
@@ -601,7 +601,7 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
 			C.SQLITE_OPEN_CREATE,
 		nil)
 	if rv != 0 {
-		return nil, &Error{Code: ErrNo(rv)}
+		return nil, Error{Code: ErrNo(rv)}
 	}
 	if db == nil {
 		return nil, errors.New("sqlite succeeded without returning a database")
@@ -609,7 +609,7 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
 
 	rv = C.sqlite3_busy_timeout(db, C.int(busyTimeout))
 	if rv != C.SQLITE_OK {
-		return nil, &Error{Code: ErrNo(rv)}
+		return nil, Error{Code: ErrNo(rv)}
 	}
 
 	conn := &SQLiteConn{db: db, loc: loc, txlock: txlock}