summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/internal/util/error.go')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/internal/util/error.go106
1 files changed, 106 insertions, 0 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go
new file mode 100644
index 000000000..1f5555fd3
--- /dev/null
+++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go
@@ -0,0 +1,106 @@
+package util
+
+import (
+ "runtime"
+ "strconv"
+)
+
+type ErrorString string
+
+func (e ErrorString) Error() string { return string(e) }
+
+const (
+ NilErr = ErrorString("sqlite3: invalid memory address or null pointer dereference")
+ OOMErr = ErrorString("sqlite3: out of memory")
+ RangeErr = ErrorString("sqlite3: index out of range")
+ NoNulErr = ErrorString("sqlite3: missing NUL terminator")
+ NoBinaryErr = ErrorString("sqlite3: no SQLite binary embed/set/loaded")
+ BadBinaryErr = ErrorString("sqlite3: invalid SQLite binary embed/set/loaded")
+ TimeErr = ErrorString("sqlite3: invalid time value")
+ WhenceErr = ErrorString("sqlite3: invalid whence")
+ OffsetErr = ErrorString("sqlite3: invalid offset")
+ TailErr = ErrorString("sqlite3: multiple statements")
+ IsolationErr = ErrorString("sqlite3: unsupported isolation level")
+ ValueErr = ErrorString("sqlite3: unsupported value")
+ NoVFSErr = ErrorString("sqlite3: no such vfs: ")
+)
+
+func AssertErr() ErrorString {
+ msg := "sqlite3: assertion failed"
+ if _, file, line, ok := runtime.Caller(1); ok {
+ msg += " (" + file + ":" + strconv.Itoa(line) + ")"
+ }
+ return ErrorString(msg)
+}
+
+func ErrorCodeString(rc uint32) string {
+ switch rc {
+ case ABORT_ROLLBACK:
+ return "sqlite3: abort due to ROLLBACK"
+ case ROW:
+ return "sqlite3: another row available"
+ case DONE:
+ return "sqlite3: no more rows available"
+ }
+ switch rc & 0xff {
+ case OK:
+ return "sqlite3: not an error"
+ case ERROR:
+ return "sqlite3: SQL logic error"
+ case INTERNAL:
+ break
+ case PERM:
+ return "sqlite3: access permission denied"
+ case ABORT:
+ return "sqlite3: query aborted"
+ case BUSY:
+ return "sqlite3: database is locked"
+ case LOCKED:
+ return "sqlite3: database table is locked"
+ case NOMEM:
+ return "sqlite3: out of memory"
+ case READONLY:
+ return "sqlite3: attempt to write a readonly database"
+ case INTERRUPT:
+ return "sqlite3: interrupted"
+ case IOERR:
+ return "sqlite3: disk I/O error"
+ case CORRUPT:
+ return "sqlite3: database disk image is malformed"
+ case NOTFOUND:
+ return "sqlite3: unknown operation"
+ case FULL:
+ return "sqlite3: database or disk is full"
+ case CANTOPEN:
+ return "sqlite3: unable to open database file"
+ case PROTOCOL:
+ return "sqlite3: locking protocol"
+ case FORMAT:
+ break
+ case SCHEMA:
+ return "sqlite3: database schema has changed"
+ case TOOBIG:
+ return "sqlite3: string or blob too big"
+ case CONSTRAINT:
+ return "sqlite3: constraint failed"
+ case MISMATCH:
+ return "sqlite3: datatype mismatch"
+ case MISUSE:
+ return "sqlite3: bad parameter or other API misuse"
+ case NOLFS:
+ break
+ case AUTH:
+ return "sqlite3: authorization denied"
+ case EMPTY:
+ break
+ case RANGE:
+ return "sqlite3: column index out of range"
+ case NOTADB:
+ return "sqlite3: file is not a database"
+ case NOTICE:
+ return "sqlite3: notification message"
+ case WARNING:
+ return "sqlite3: warning message"
+ }
+ return "sqlite3: unknown error"
+}