@@ -78,9 +78,15 @@ impl KVStore for SqliteStore {
78
78
} ,
79
79
|row| row. get ( 0 ) ,
80
80
)
81
- . map_err ( |_| {
82
- let msg = format ! ( "Failed to read from key: {}/{}" , namespace, key) ;
83
- std:: io:: Error :: new ( std:: io:: ErrorKind :: NotFound , msg)
81
+ . map_err ( |e| match e {
82
+ rusqlite:: Error :: QueryReturnedNoRows => {
83
+ let msg = format ! ( "Failed namespace/key not found: {}/{}" , namespace, key) ;
84
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: NotFound , msg)
85
+ }
86
+ e => {
87
+ let msg = format ! ( "Failed to read from key {}/{}: {}" , namespace, key, e) ;
88
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
89
+ }
84
90
} ) ?;
85
91
Ok ( Cursor :: new ( res) )
86
92
}
@@ -102,8 +108,8 @@ impl KVStore for SqliteStore {
102
108
":value" : buf,
103
109
} ,
104
110
)
105
- . map_err ( |_ | {
106
- let msg = format ! ( "Failed to write to key: {}/{}" , namespace, key) ;
111
+ . map_err ( |e | {
112
+ let msg = format ! ( "Failed to write to key {}/{}: {} " , namespace, key, e ) ;
107
113
std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
108
114
} ) ?;
109
115
Ok ( ( ) )
@@ -122,8 +128,8 @@ impl KVStore for SqliteStore {
122
128
":key" : key,
123
129
} ,
124
130
)
125
- . map_err ( |_ | {
126
- let msg = format ! ( "Failed to delete key: {}/{}" , namespace, key) ;
131
+ . map_err ( |e | {
132
+ let msg = format ! ( "Failed to delete key {}/{}: {} " , namespace, key, e ) ;
127
133
std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
128
134
} ) ?;
129
135
@@ -136,21 +142,24 @@ impl KVStore for SqliteStore {
136
142
let locked_conn = self . connection . lock ( ) . unwrap ( ) ;
137
143
138
144
let sql = format ! ( "SELECT key FROM {} WHERE namespace=:namespace" , KV_TABLE_NAME ) ;
139
- let mut stmt = locked_conn. prepare ( & sql) . map_err ( |_| {
140
- std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , "Failed to prepare statement" )
145
+ let mut stmt = locked_conn. prepare ( & sql) . map_err ( |e| {
146
+ let msg = format ! ( "Failed to prepare statement: {}" , e) ;
147
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
141
148
} ) ?;
142
149
143
150
let mut keys = Vec :: new ( ) ;
144
151
145
152
let rows_iter = stmt
146
153
. query_map ( named_params ! { ":namespace" : namespace, } , |row| row. get ( 0 ) )
147
- . map_err ( |_| {
148
- std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , "Failed to retrieve queried rows" )
154
+ . map_err ( |e| {
155
+ let msg = format ! ( "Failed to retrieve queried rows: {}" , e) ;
156
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
149
157
} ) ?;
150
158
151
159
for k in rows_iter {
152
- keys. push ( k. map_err ( |_| {
153
- std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , "Failed to retrieve queried rows" )
160
+ keys. push ( k. map_err ( |e| {
161
+ let msg = format ! ( "Failed to retrieve queried rows: {}" , e) ;
162
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
154
163
} ) ?) ;
155
164
}
156
165
0 commit comments