From 0d1d1a644e704714e7ccf5e28dc53601c4e9cf37 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Sat, 5 Nov 2016 00:40:06 +0900 Subject: go vet && golint --- error.go | 1 + 1 file changed, 1 insertion(+) (limited to 'error.go') diff --git a/error.go b/error.go index b910108..474f8e6 100644 --- a/error.go +++ b/error.go @@ -7,6 +7,7 @@ package sqlite3 import "C" +// ErrNo inherit errno. type ErrNo int const ErrNoMask C.int = 0xff -- cgit v1.2.3 From cde7293c72308f3cc5b57bfa65e162fb868470d8 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Sat, 5 Nov 2016 00:46:04 +0900 Subject: go vet && golint --- error.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'error.go') diff --git a/error.go b/error.go index 474f8e6..1f14aba 100644 --- a/error.go +++ b/error.go @@ -10,10 +10,13 @@ import "C" // ErrNo inherit errno. type ErrNo int +// ErrNoMask is mask code. const ErrNoMask C.int = 0xff +// ErrNoExtended is extended errno. type ErrNoExtended int +// Error implement sqlite error code. type Error struct { Code ErrNo /* The error code returned by SQLite */ ExtendedCode ErrNoExtended /* The extended error code returned by SQLite */ @@ -53,18 +56,22 @@ var ( ErrWarning = ErrNo(28) /* Warnings from sqlite3_log() */ ) +// Error return error message from errno. func (err ErrNo) Error() string { return Error{Code: err}.Error() } +// Extend return extended errno. func (err ErrNo) Extend(by int) ErrNoExtended { return ErrNoExtended(int(err) | (by << 8)) } +// Error return error message that is extended code. func (err ErrNoExtended) Error() string { return Error{Code: ErrNo(C.int(err) & ErrNoMask), ExtendedCode: err}.Error() } +// Error return error message. func (err Error) Error() string { if err.err != "" { return err.err @@ -122,7 +129,7 @@ var ( ErrConstraintTrigger = ErrConstraint.Extend(7) ErrConstraintUnique = ErrConstraint.Extend(8) ErrConstraintVTab = ErrConstraint.Extend(9) - ErrConstraintRowId = ErrConstraint.Extend(10) + ErrConstraintRowID = ErrConstraint.Extend(10) ErrNoticeRecoverWAL = ErrNotice.Extend(1) ErrNoticeRecoverRollback = ErrNotice.Extend(2) ErrWarningAutoIndex = ErrWarning.Extend(1) -- cgit v1.2.3 From cf4bd560f1588d96c502b4c3407fe1a10cef4a28 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Mon, 20 Mar 2017 23:26:15 +0900 Subject: fix build --- error.go | 2 +- sqlite3.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'error.go') diff --git a/error.go b/error.go index 1f14aba..7d29b4b 100644 --- a/error.go +++ b/error.go @@ -72,7 +72,7 @@ func (err ErrNoExtended) Error() string { } // Error return error message. -func (err Error) Error() string { +func (err *Error) Error() string { if err.err != "" { return err.err } diff --git a/sqlite3.go b/sqlite3.go index 5df6c8b..6230b29 100644 --- a/sqlite3.go +++ b/sqlite3.go @@ -399,7 +399,7 @@ 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 -- cgit v1.2.3 From 997cab809454bae9b2af4cfaebc2ee6a7062a5c9 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Mon, 20 Mar 2017 23:31:22 +0900 Subject: fix build --- backup.go | 4 ++-- error.go | 4 ++-- sqlite3.go | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'error.go') diff --git a/backup.go b/backup.go index 5ab3a54..7f1eec9 100644 --- a/backup.go +++ b/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 } diff --git a/error.go b/error.go index 7d29b4b..be530e5 100644 --- a/error.go +++ b/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,7 +68,7 @@ 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. diff --git a/sqlite3.go b/sqlite3.go index 6230b29..0ae415f 100644 --- a/sqlite3.go +++ b/sqlite3.go @@ -404,7 +404,7 @@ func (c *SQLiteConn) lastError() *Error { 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)), @@ -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} -- cgit v1.2.3 From 866c3293d9a76aa491e56cc978d0d7fb0e63e121 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Tue, 21 Mar 2017 09:14:48 +0900 Subject: fix breaking compatibility. revert cf4bd560f1588d96c502b4c3407fe1a10cef4a28 close #394 --- backup.go | 4 ++-- error.go | 7 +++---- error_test.go | 8 ++++---- sqlite3.go | 12 ++++++------ 4 files changed, 15 insertions(+), 16 deletions(-) (limited to 'error.go') diff --git a/backup.go b/backup.go index 7f1eec9..5ab3a54 100644 --- a/backup.go +++ b/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 } diff --git a/error.go b/error.go index be530e5..49ab890 100644 --- a/error.go +++ b/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 } diff --git a/error_test.go b/error_test.go index 339b57a..1ccbe5b 100644 --- a/error_test.go +++ b/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) diff --git a/sqlite3.go b/sqlite3.go index 2d504d9..3a9a4dd 100644 --- a/sqlite3.go +++ b/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} -- cgit v1.2.3