summaryrefslogtreecommitdiff
path: root/error.zig
diff options
context:
space:
mode:
authorGravatar Vincent Rischmann2020-12-31 22:04:08 +0100
committerGravatar Vincent Rischmann2020-12-31 22:06:15 +0100
commit188373fd0a0031c159935444afd601ee4218de1b (patch)
treec4c8699b30ff4601918ecab97e8dd099e4b69565 /error.zig
parentMerge pull request #9 from vrischmann/split-alloc (diff)
downloadzig-sqlite-188373fd0a0031c159935444afd601ee4218de1b.tar.gz
zig-sqlite-188373fd0a0031c159935444afd601ee4218de1b.tar.xz
zig-sqlite-188373fd0a0031c159935444afd601ee4218de1b.zip
add proper error types
* Add SQLiteError and various SQLiteExtendedXYZError * Replace old errors with the SQLite ones where appropriate Fixes #8
Diffstat (limited to '')
-rw-r--r--error.zig240
1 files changed, 240 insertions, 0 deletions
diff --git a/error.zig b/error.zig
new file mode 100644
index 0000000..bcccdaf
--- /dev/null
+++ b/error.zig
@@ -0,0 +1,240 @@
1const std = @import("std");
2
3const c = @cImport({
4 @cInclude("sqlite3.h");
5});
6
7pub const SQLiteExtendedIOError = error{
8 SQLiteIOErrRead,
9 SQLiteIOErrShortRead,
10 SQLiteIOErrWrite,
11 SQLiteIOErrFsync,
12 SQLiteIOErrDirFsync,
13 SQLiteIOErrTruncate,
14 SQLiteIOErrFstat,
15 SQLiteIOErrUnlock,
16 SQLiteIOErrRDLock,
17 SQLiteIOErrDelete,
18 SQLiteIOErrBlocked,
19 SQLiteIOErrNoMem,
20 SQLiteIOErrAccess,
21 SQLiteIOErrCheckReservedLock,
22 SQLiteIOErrLock,
23 SQLiteIOErrClose,
24 SQLiteIOErrDirClose,
25 SQLiteIOErrSHMOpen,
26 SQLiteIOErrSHMSize,
27 SQLiteIOErrSHMLock,
28 SQLiteIOErrSHMMap,
29 SQLiteIOErrSeek,
30 SQLiteIOErrDeleteNoEnt,
31 SQLiteIOErrMmap,
32 SQLiteIOErrGetTempPath,
33 SQLiteIOErrConvPath,
34 SQLiteIOErrVnode,
35 SQLiteIOErrAuth,
36 SQLiteIOErrBeginAtomic,
37 SQLiteIOErrCommitAtomic,
38 SQLiteIOErrRollbackAtomic,
39 SQLiteIOErrData,
40 SQLiteIOErrCorruptFS,
41};
42
43pub const SQLiteExtendedCantOpenError = error{
44 SQLiteCantOpenNoTempDir,
45 SQLiteCantOpenIsDir,
46 SQLiteCantOpenFullPath,
47 SQLiteCantOpenConvPath,
48 SQLiteCantOpenDirtyWAL,
49 SQLiteCantOpenSymlink,
50};
51
52pub const SQLiteExtendedReadOnlyError = error{
53 SQLiteReadOnlyRecovery,
54 SQLiteReadOnlyCantLock,
55 SQLiteReadOnlyRollback,
56 SQLiteReadOnlyDBMoved,
57 SQLiteReadOnlyCantInit,
58 SQLiteReadOnlyDirectory,
59};
60
61pub const SQLiteExtendedConstraintError = error{
62 SQLiteConstraintCheck,
63 SQLiteConstraintCommitHook,
64 SQLiteConstraintForeignKey,
65 SQLiteConstraintFunction,
66 SQLiteConstraintNotNull,
67 SQLiteConstraintPrimaryKey,
68 SQLiteConstraintTrigger,
69 SQLiteConstraintUnique,
70 SQLiteConstraintVTab,
71 SQLiteConstraintRowID,
72 SQLiteConstraintPinned,
73};
74
75pub const SQLiteExtendedError = error{
76 SQLiteErrorMissingCollSeq,
77 SQLiteErrorRetry,
78 SQLiteErrorSnapshot,
79
80 SQLiteLockedSharedCache,
81 SQLiteLockedVTab,
82
83 SQLiteBusyRecovery,
84 SQLiteBusySnapshot,
85 SQLiteBusyTimeout,
86
87 SQLiteCorruptVTab,
88 SQLiteCorruptSequence,
89 SQLiteCorruptIndex,
90
91 SQLiteAbortRollback,
92};
93
94pub const SQLiteError = error{
95 SQLiteError,
96 SQLiteInternal,
97 SQLitePerm,
98 SQLiteAbort,
99 SQLiteBusy,
100 SQLiteLocked,
101 SQLiteNoMem,
102 SQLiteReadOnly,
103 SQLiteInterrupt,
104 SQLiteIOErr,
105 SQLiteCorrupt,
106 SQLiteNotFound,
107 SQLiteFull,
108 SQLiteCantOpen,
109 SQLiteProtocol,
110 SQLiteEmpty,
111 SQLiteSchema,
112 SQLiteTooBig,
113 SQLiteConstraint,
114 SQLiteMismatch,
115 SQLiteMisuse,
116 SQLiteNoLFS,
117 SQLiteAuth,
118 SQLiteRange,
119 SQLiteNotADatabase,
120 SQLiteNotice,
121 SQLiteWarning,
122};
123
124pub const Error = SQLiteError ||
125 SQLiteExtendedError ||
126 SQLiteExtendedIOError ||
127 SQLiteExtendedCantOpenError ||
128 SQLiteExtendedReadOnlyError ||
129 SQLiteExtendedConstraintError;
130
131pub fn errorFromResultCode(code: c_int) Error {
132 return switch (code) {
133 c.SQLITE_ERROR => error.SQLiteError,
134 c.SQLITE_INTERNAL => error.SQLiteInternal,
135 c.SQLITE_PERM => error.SQLitePerm,
136 c.SQLITE_ABORT => error.SQLiteAbort,
137 c.SQLITE_BUSY => error.SQLiteBusy,
138 c.SQLITE_LOCKED => error.SQLiteLocked,
139 c.SQLITE_NOMEM => error.SQLiteNoMem,
140 c.SQLITE_READONLY => error.SQLiteReadOnly,
141 c.SQLITE_INTERRUPT => error.SQLiteInterrupt,
142 c.SQLITE_IOERR => error.SQLiteIOErr,
143 c.SQLITE_CORRUPT => error.SQLiteCorrupt,
144 c.SQLITE_NOTFOUND => error.SQLiteNotFound,
145 c.SQLITE_FULL => error.SQLiteFull,
146 c.SQLITE_CANTOPEN => error.SQLiteCantOpen,
147 c.SQLITE_PROTOCOL => error.SQLiteProtocol,
148 c.SQLITE_EMPTY => error.SQLiteEmpty,
149 c.SQLITE_SCHEMA => error.SQLiteSchema,
150 c.SQLITE_TOOBIG => error.SQLiteTooBig,
151 c.SQLITE_CONSTRAINT => error.SQLiteConstraint,
152 c.SQLITE_MISMATCH => error.SQLiteMismatch,
153 c.SQLITE_MISUSE => error.SQLiteMisuse,
154 c.SQLITE_NOLFS => error.SQLiteNoLFS,
155 c.SQLITE_AUTH => error.SQLiteAuth,
156 c.SQLITE_RANGE => error.SQLiteRange,
157 c.SQLITE_NOTADB => error.SQLiteNotADatabase,
158 c.SQLITE_NOTICE => error.SQLiteNotice,
159 c.SQLITE_WARNING => error.SQLiteWarning,
160
161 c.SQLITE_ERROR_MISSING_COLLSEQ => error.SQLiteErrorMissingCollSeq,
162 c.SQLITE_ERROR_RETRY => error.SQLiteErrorRetry,
163 c.SQLITE_ERROR_SNAPSHOT => error.SQLiteErrorSnapshot,
164
165 c.SQLITE_IOERR_READ => error.SQLiteIOErrRead,
166 c.SQLITE_IOERR_SHORT_READ => error.SQLiteIOErrShortRead,
167 c.SQLITE_IOERR_WRITE => error.SQLiteIOErrWrite,
168 c.SQLITE_IOERR_FSYNC => error.SQLiteIOErrFsync,
169 c.SQLITE_IOERR_DIR_FSYNC => error.SQLiteIOErrDirFsync,
170 c.SQLITE_IOERR_TRUNCATE => error.SQLiteIOErrTruncate,
171 c.SQLITE_IOERR_FSTAT => error.SQLiteIOErrFstat,
172 c.SQLITE_IOERR_UNLOCK => error.SQLiteIOErrUnlock,
173 c.SQLITE_IOERR_RDLOCK => error.SQLiteIOErrRDLock,
174 c.SQLITE_IOERR_DELETE => error.SQLiteIOErrDelete,
175 c.SQLITE_IOERR_BLOCKED => error.SQLiteIOErrBlocked,
176 c.SQLITE_IOERR_NOMEM => error.SQLiteIOErrNoMem,
177 c.SQLITE_IOERR_ACCESS => error.SQLiteIOErrAccess,
178 c.SQLITE_IOERR_CHECKRESERVEDLOCK => error.SQLiteIOErrCheckReservedLock,
179 c.SQLITE_IOERR_LOCK => error.SQLiteIOErrLock,
180 c.SQLITE_IOERR_CLOSE => error.SQLiteIOErrClose,
181 c.SQLITE_IOERR_DIR_CLOSE => error.SQLiteIOErrDirClose,
182 c.SQLITE_IOERR_SHMOPEN => error.SQLiteIOErrSHMOpen,
183 c.SQLITE_IOERR_SHMSIZE => error.SQLiteIOErrSHMSize,
184 c.SQLITE_IOERR_SHMLOCK => error.SQLiteIOErrSHMLock,
185 c.SQLITE_IOERR_SHMMAP => error.SQLiteIOErrSHMMap,
186 c.SQLITE_IOERR_SEEK => error.SQLiteIOErrSeek,
187 c.SQLITE_IOERR_DELETE_NOENT => error.SQLiteIOErrDeleteNoEnt,
188 c.SQLITE_IOERR_MMAP => error.SQLiteIOErrMmap,
189 c.SQLITE_IOERR_GETTEMPPATH => error.SQLiteIOErrGetTempPath,
190 c.SQLITE_IOERR_CONVPATH => error.SQLiteIOErrConvPath,
191 c.SQLITE_IOERR_VNODE => error.SQLiteIOErrVnode,
192 c.SQLITE_IOERR_AUTH => error.SQLiteIOErrAuth,
193 c.SQLITE_IOERR_BEGIN_ATOMIC => error.SQLiteIOErrBeginAtomic,
194 c.SQLITE_IOERR_COMMIT_ATOMIC => error.SQLiteIOErrCommitAtomic,
195 c.SQLITE_IOERR_ROLLBACK_ATOMIC => error.SQLiteIOErrRollbackAtomic,
196 c.SQLITE_IOERR_DATA => error.SQLiteIOErrData,
197 c.SQLITE_IOERR_CORRUPTFS => error.SQLiteIOErrCorruptFS,
198
199 c.SQLITE_LOCKED_SHAREDCACHE => error.SQLiteLockedSharedCache,
200 c.SQLITE_LOCKED_VTAB => error.SQLiteLockedVTab,
201
202 c.SQLITE_BUSY_RECOVERY => error.SQLiteBusyRecovery,
203 c.SQLITE_BUSY_SNAPSHOT => error.SQLiteBusySnapshot,
204 c.SQLITE_BUSY_TIMEOUT => error.SQLiteBusyTimeout,
205
206 c.SQLITE_CANTOPEN_NOTEMPDIR => error.SQLiteCantOpenNoTempDir,
207 c.SQLITE_CANTOPEN_ISDIR => error.SQLiteCantOpenIsDir,
208 c.SQLITE_CANTOPEN_FULLPATH => error.SQLiteCantOpenFullPath,
209 c.SQLITE_CANTOPEN_CONVPATH => error.SQLiteCantOpenConvPath,
210 c.SQLITE_CANTOPEN_DIRTYWAL => error.SQLiteCantOpenDirtyWAL,
211 c.SQLITE_CANTOPEN_SYMLINK => error.SQLiteCantOpenSymlink,
212
213 c.SQLITE_CORRUPT_VTAB => error.SQLiteCorruptVTab,
214 c.SQLITE_CORRUPT_SEQUENCE => error.SQLiteCorruptSequence,
215 c.SQLITE_CORRUPT_INDEX => error.SQLiteCorruptIndex,
216
217 c.SQLITE_READONLY_RECOVERY => error.SQLiteReadOnlyRecovery,
218 c.SQLITE_READONLY_CANTLOCK => error.SQLiteReadOnlyCantLock,
219 c.SQLITE_READONLY_ROLLBACK => error.SQLiteReadOnlyRollback,
220 c.SQLITE_READONLY_DBMOVED => error.SQLiteReadOnlyDBMoved,
221 c.SQLITE_READONLY_CANTINIT => error.SQLiteReadOnlyCantInit,
222 c.SQLITE_READONLY_DIRECTORY => error.SQLiteReadOnlyDirectory,
223
224 c.SQLITE_ABORT_ROLLBACK => error.SQLiteAbortRollback,
225
226 c.SQLITE_CONSTRAINT_CHECK => error.SQLiteConstraintCheck,
227 c.SQLITE_CONSTRAINT_COMMITHOOK => error.SQLiteConstraintCommitHook,
228 c.SQLITE_CONSTRAINT_FOREIGNKEY => error.SQLiteConstraintForeignKey,
229 c.SQLITE_CONSTRAINT_FUNCTION => error.SQLiteConstraintFunction,
230 c.SQLITE_CONSTRAINT_NOTNULL => error.SQLiteConstraintNotNull,
231 c.SQLITE_CONSTRAINT_PRIMARYKEY => error.SQLiteConstraintPrimaryKey,
232 c.SQLITE_CONSTRAINT_TRIGGER => error.SQLiteConstraintTrigger,
233 c.SQLITE_CONSTRAINT_UNIQUE => error.SQLiteConstraintUnique,
234 c.SQLITE_CONSTRAINT_VTAB => error.SQLiteConstraintVTab,
235 c.SQLITE_CONSTRAINT_ROWID => error.SQLiteConstraintRowID,
236 c.SQLITE_CONSTRAINT_PINNED => error.SQLiteConstraintPinned,
237
238 else => std.debug.panic("invalid result code {}", .{code}),
239 };
240}