mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
5.7 KiB
136 lines
5.7 KiB
// Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. |
|
// |
|
// Use of this source code is governed by an MIT-style |
|
// license that can be found in the LICENSE file. |
|
|
|
package sqlite3 |
|
|
|
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 */ |
|
err string /* The error string returned by sqlite3_errmsg(), |
|
this usually contains more specific details. */ |
|
} |
|
|
|
// result codes from http://www.sqlite.org/c3ref/c_abort.html |
|
var ( |
|
ErrError = ErrNo(1) /* SQL error or missing database */ |
|
ErrInternal = ErrNo(2) /* Internal logic error in SQLite */ |
|
ErrPerm = ErrNo(3) /* Access permission denied */ |
|
ErrAbort = ErrNo(4) /* Callback routine requested an abort */ |
|
ErrBusy = ErrNo(5) /* The database file is locked */ |
|
ErrLocked = ErrNo(6) /* A table in the database is locked */ |
|
ErrNomem = ErrNo(7) /* A malloc() failed */ |
|
ErrReadonly = ErrNo(8) /* Attempt to write a readonly database */ |
|
ErrInterrupt = ErrNo(9) /* Operation terminated by sqlite3_interrupt() */ |
|
ErrIoErr = ErrNo(10) /* Some kind of disk I/O error occurred */ |
|
ErrCorrupt = ErrNo(11) /* The database disk image is malformed */ |
|
ErrNotFound = ErrNo(12) /* Unknown opcode in sqlite3_file_control() */ |
|
ErrFull = ErrNo(13) /* Insertion failed because database is full */ |
|
ErrCantOpen = ErrNo(14) /* Unable to open the database file */ |
|
ErrProtocol = ErrNo(15) /* Database lock protocol error */ |
|
ErrEmpty = ErrNo(16) /* Database is empty */ |
|
ErrSchema = ErrNo(17) /* The database schema changed */ |
|
ErrTooBig = ErrNo(18) /* String or BLOB exceeds size limit */ |
|
ErrConstraint = ErrNo(19) /* Abort due to constraint violation */ |
|
ErrMismatch = ErrNo(20) /* Data type mismatch */ |
|
ErrMisuse = ErrNo(21) /* Library used incorrectly */ |
|
ErrNoLFS = ErrNo(22) /* Uses OS features not supported on host */ |
|
ErrAuth = ErrNo(23) /* Authorization denied */ |
|
ErrFormat = ErrNo(24) /* Auxiliary database format error */ |
|
ErrRange = ErrNo(25) /* 2nd parameter to sqlite3_bind out of range */ |
|
ErrNotADB = ErrNo(26) /* File opened that is not a database file */ |
|
ErrNotice = ErrNo(27) /* Notifications from sqlite3_log() */ |
|
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 |
|
} |
|
return errorString(err) |
|
} |
|
|
|
// result codes from http://www.sqlite.org/c3ref/c_abort_rollback.html |
|
var ( |
|
ErrIoErrRead = ErrIoErr.Extend(1) |
|
ErrIoErrShortRead = ErrIoErr.Extend(2) |
|
ErrIoErrWrite = ErrIoErr.Extend(3) |
|
ErrIoErrFsync = ErrIoErr.Extend(4) |
|
ErrIoErrDirFsync = ErrIoErr.Extend(5) |
|
ErrIoErrTruncate = ErrIoErr.Extend(6) |
|
ErrIoErrFstat = ErrIoErr.Extend(7) |
|
ErrIoErrUnlock = ErrIoErr.Extend(8) |
|
ErrIoErrRDlock = ErrIoErr.Extend(9) |
|
ErrIoErrDelete = ErrIoErr.Extend(10) |
|
ErrIoErrBlocked = ErrIoErr.Extend(11) |
|
ErrIoErrNoMem = ErrIoErr.Extend(12) |
|
ErrIoErrAccess = ErrIoErr.Extend(13) |
|
ErrIoErrCheckReservedLock = ErrIoErr.Extend(14) |
|
ErrIoErrLock = ErrIoErr.Extend(15) |
|
ErrIoErrClose = ErrIoErr.Extend(16) |
|
ErrIoErrDirClose = ErrIoErr.Extend(17) |
|
ErrIoErrSHMOpen = ErrIoErr.Extend(18) |
|
ErrIoErrSHMSize = ErrIoErr.Extend(19) |
|
ErrIoErrSHMLock = ErrIoErr.Extend(20) |
|
ErrIoErrSHMMap = ErrIoErr.Extend(21) |
|
ErrIoErrSeek = ErrIoErr.Extend(22) |
|
ErrIoErrDeleteNoent = ErrIoErr.Extend(23) |
|
ErrIoErrMMap = ErrIoErr.Extend(24) |
|
ErrIoErrGetTempPath = ErrIoErr.Extend(25) |
|
ErrIoErrConvPath = ErrIoErr.Extend(26) |
|
ErrLockedSharedCache = ErrLocked.Extend(1) |
|
ErrBusyRecovery = ErrBusy.Extend(1) |
|
ErrBusySnapshot = ErrBusy.Extend(2) |
|
ErrCantOpenNoTempDir = ErrCantOpen.Extend(1) |
|
ErrCantOpenIsDir = ErrCantOpen.Extend(2) |
|
ErrCantOpenFullPath = ErrCantOpen.Extend(3) |
|
ErrCantOpenConvPath = ErrCantOpen.Extend(4) |
|
ErrCorruptVTab = ErrCorrupt.Extend(1) |
|
ErrReadonlyRecovery = ErrReadonly.Extend(1) |
|
ErrReadonlyCantLock = ErrReadonly.Extend(2) |
|
ErrReadonlyRollback = ErrReadonly.Extend(3) |
|
ErrReadonlyDbMoved = ErrReadonly.Extend(4) |
|
ErrAbortRollback = ErrAbort.Extend(2) |
|
ErrConstraintCheck = ErrConstraint.Extend(1) |
|
ErrConstraintCommitHook = ErrConstraint.Extend(2) |
|
ErrConstraintForeignKey = ErrConstraint.Extend(3) |
|
ErrConstraintFunction = ErrConstraint.Extend(4) |
|
ErrConstraintNotNull = ErrConstraint.Extend(5) |
|
ErrConstraintPrimaryKey = ErrConstraint.Extend(6) |
|
ErrConstraintTrigger = ErrConstraint.Extend(7) |
|
ErrConstraintUnique = ErrConstraint.Extend(8) |
|
ErrConstraintVTab = ErrConstraint.Extend(9) |
|
ErrConstraintRowID = ErrConstraint.Extend(10) |
|
ErrNoticeRecoverWAL = ErrNotice.Extend(1) |
|
ErrNoticeRecoverRollback = ErrNotice.Extend(2) |
|
ErrWarningAutoIndex = ErrWarning.Extend(1) |
|
)
|
|
|