summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/sqlite.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/sqlite.go')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/sqlite.go21
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)
}