aboutsummaryrefslogtreecommitdiff
path: root/error.go
diff options
context:
space:
mode:
authorJochen Voss <voss@seehuhn.de>2013-06-20 21:52:38 +0100
committermattn <mattn.jp@gmail.com>2013-08-30 22:35:32 +0900
commit2d6a60e2f524a03af5d15420c70ea448b7380815 (patch)
treec83e7cabccd1747dad49e2e7124d4e4e17af272c /error.go
parentAdd Makefile (diff)
downloadgolite-2d6a60e2f524a03af5d15420c70ea448b7380815.tar.gz
golite-2d6a60e2f524a03af5d15420c70ea448b7380815.tar.xz
Start work on introducing machine-readable error codes.
This commit introduces a new type 'ErrNo', implementing the error interface. Constants for all sqlite3 error codes are provided in the new source file "error.go".
Diffstat (limited to 'error.go')
-rw-r--r--error.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/error.go b/error.go
new file mode 100644
index 0000000..15c843e
--- /dev/null
+++ b/error.go
@@ -0,0 +1,41 @@
+package sqlite3
+
+import "C"
+
+type ErrNo int
+
+// result codes from http://www.sqlite.org/c3ref/c_abort.html
+var (
+ ErrError error = ErrNo(1) /* SQL error or missing database */
+ ErrInternal error = ErrNo(2) /* Internal logic error in SQLite */
+ ErrPerm error = ErrNo(3) /* Access permission denied */
+ ErrAbort error = ErrNo(4) /* Callback routine requested an abort */
+ ErrBusy error = ErrNo(5) /* The database file is locked */
+ ErrLocked error = ErrNo(6) /* A table in the database is locked */
+ ErrNomem error = ErrNo(7) /* A malloc() failed */
+ ErrReadonly error = ErrNo(8) /* Attempt to write a readonly database */
+ ErrInterrupt error = ErrNo(9) /* Operation terminated by sqlite3_interrupt() */
+ ErrIoErr error = ErrNo(10) /* Some kind of disk I/O error occurred */
+ ErrCorrupt error = ErrNo(11) /* The database disk image is malformed */
+ ErrNotFound error = ErrNo(12) /* Unknown opcode in sqlite3_file_control() */
+ ErrFull error = ErrNo(13) /* Insertion failed because database is full */
+ ErrCantOpen error = ErrNo(14) /* Unable to open the database file */
+ ErrProtocol error = ErrNo(15) /* Database lock protocol error */
+ ErrEmpty error = ErrNo(16) /* Database is empty */
+ ErrSchema error = ErrNo(17) /* The database schema changed */
+ ErrTooBig error = ErrNo(18) /* String or BLOB exceeds size limit */
+ ErrConstraint error = ErrNo(19) /* Abort due to constraint violation */
+ ErrMismatch error = ErrNo(20) /* Data type mismatch */
+ ErrMisuse error = ErrNo(21) /* Library used incorrectly */
+ ErrNoLFS error = ErrNo(22) /* Uses OS features not supported on host */
+ ErrAuth error = ErrNo(23) /* Authorization denied */
+ ErrFormat error = ErrNo(24) /* Auxiliary database format error */
+ ErrRange error = ErrNo(25) /* 2nd parameter to sqlite3_bind out of range */
+ ErrNotADB error = ErrNo(26) /* File opened that is not a database file */
+ ErrNotice error = ErrNo(27) /* Notifications from sqlite3_log() */
+ ErrWarning error = ErrNo(28) /* Warnings from sqlite3_log() */
+)
+
+func (err ErrNo) Error() string {
+ return errorString(err)
+}