Skip to main content

cartel_sqlite/
error.rs

1use crate::{open::journal, row, sys};
2use cartel_core::deadline;
3use dope_core::driver::schedule::clock::timer;
4use o3::alloc;
5use std::{mem, str};
6
7#[derive(Debug)]
8pub enum Error {
9    Sqlite {
10        action: sys::Action,
11        code: sys::Code,
12    },
13    QueryReturnedNoRows,
14    ParameterItems {
15        required: usize,
16        available: usize,
17    },
18    ParameterBytes {
19        required: usize,
20        available: usize,
21    },
22    ParameterU64 {
23        value: u64,
24    },
25    ParameterUsize {
26        value: usize,
27    },
28    ScanRows {
29        capacity: usize,
30    },
31    RowBytes {
32        required: usize,
33        available: usize,
34    },
35    RowLayout {
36        required: usize,
37        available: usize,
38    },
39    ColumnCount {
40        expected: usize,
41        actual: usize,
42    },
43    ColumnType {
44        column: i32,
45        expected: row::Class,
46        actual: row::Kind,
47    },
48    ColumnI32 {
49        column: i32,
50        value: i64,
51    },
52    ColumnUtf8 {
53        column: i32,
54        error: str::Utf8Error,
55    },
56    CollectRows {
57        required: usize,
58        available: usize,
59    },
60    CollectRowBytes {
61        required: usize,
62        available: usize,
63    },
64    CollectValueBytes {
65        required: usize,
66        available: usize,
67    },
68    PrepareSqlBytes {
69        actual: usize,
70    },
71    PragmaBytes {
72        start: usize,
73        added: usize,
74    },
75    StatementSqlLimit {
76        requested: i32,
77        available: i32,
78    },
79    StatementBytes {
80        required: usize,
81        available: usize,
82    },
83    StatementMissing {
84        bytes: usize,
85    },
86    StatementTail {
87        offset: usize,
88    },
89    CatalogStatementSql {
90        statement: usize,
91    },
92    WorkLimit {
93        action: sys::Action,
94        code: sys::Code,
95    },
96    /// The progress callback exhausted its quota while SQLite returned success.
97    WorkExhausted,
98    Busy {
99        action: sys::Action,
100        code: sys::Code,
101    },
102    TransactionBusy {
103        action: sys::Action,
104        code: sys::Code,
105    },
106    TransactionAborted {
107        action: sys::Action,
108        code: sys::Code,
109    },
110    Savepoints {
111        required: usize,
112        available: usize,
113    },
114    Locked {
115        action: sys::Action,
116        code: sys::Code,
117    },
118    RequestTimeout {
119        elapsed: deadline::Elapsed,
120        action: sys::Action,
121        code: sys::Code,
122    },
123    ReentrantQuery,
124    ConnectionPoisoned,
125    Journal {
126        expected: journal::Mode,
127        actual: journal::Mode,
128    },
129    MemoryJournal,
130    Mapped {
131        expected: i64,
132        actual: i64,
133    },
134    TemporaryStore {
135        actual: i64,
136    },
137    MainCache {
138        expected: i64,
139        actual: i64,
140    },
141    TemporaryCache {
142        expected: i64,
143        actual: i64,
144    },
145    LocalAllocatorOccupied,
146    LocalConnectionBorrowed,
147    LocalConnectionClosed,
148    TimerCapacity(timer::Exhausted),
149    Allocation(alloc::Error),
150    NegativeLimit {
151        value: i64,
152    },
153    NegativeOffset {
154        value: i64,
155    },
156    UnexpectedRows {
157        expected: usize,
158        minimum: usize,
159    },
160    ParameterCount {
161        expected: usize,
162        actual: usize,
163    },
164    PathNul(usize),
165    PathBytes {
166        actual: usize,
167        capacity: usize,
168    },
169    StatementNul {
170        offset: usize,
171    },
172    ForeignKeys {
173        actual: i32,
174    },
175    Defensive {
176        actual: i32,
177    },
178    TrustedSchema {
179        actual: i32,
180    },
181    JournalBytes {
182        value: u64,
183    },
184    MappedBytes {
185        value: u64,
186    },
187    /// SQLite returned an unrecognized journal mode name.
188    JournalMode,
189}
190
191impl From<timer::Exhausted> for Error {
192    fn from(error: timer::Exhausted) -> Self {
193        Self::TimerCapacity(error)
194    }
195}
196
197const _: () = {
198    assert!(!mem::needs_drop::<Error>());
199    assert!(mem::size_of::<Error>() <= 3 * mem::size_of::<usize>());
200};