diff options
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/sqlite.go')
| -rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/sqlite.go | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/sqlite.go b/vendor/github.com/ncruces/go-sqlite3/sqlite.go index fb64ac5c0..52532e077 100644 --- a/vendor/github.com/ncruces/go-sqlite3/sqlite.go +++ b/vendor/github.com/ncruces/go-sqlite3/sqlite.go @@ -125,14 +125,15 @@ func (sqlt *sqlite) error(rc res_t, handle ptr_t, sql ...string) error { panic(util.OOMErr) } + var msg, query string if handle != 0 { - var msg, query string if ptr := ptr_t(sqlt.call("sqlite3_errmsg", stk_t(handle))); ptr != 0 { msg = util.ReadString(sqlt.mod, ptr, _MAX_LENGTH) - if msg == "not an error" { + msg = strings.TrimPrefix(msg, "sqlite3: ") + msg = strings.TrimPrefix(msg, util.ErrorCodeString(rc)[len("sqlite3: "):]) + msg = strings.TrimPrefix(msg, ": ") + if msg == "" || msg == "not an error" { msg = "" - } else { - msg = strings.TrimPrefix(msg, util.ErrorCodeString(uint32(rc))[len("sqlite3: "):]) } } @@ -141,10 +142,16 @@ func (sqlt *sqlite) error(rc res_t, handle ptr_t, sql ...string) error { query = sql[0][i:] } } + } - if msg != "" || query != "" { - return &Error{code: rc, msg: msg, sql: query} - } + var sys error + switch ErrorCode(rc) { + case CANTOPEN, IOERR: + sys = util.GetSystemError(sqlt.ctx) + } + + if sys != nil || msg != "" || query != "" { + return &Error{code: rc, sys: sys, msg: msg, sql: query} } return xErrorCode(rc) } |
