]>
Commit | Line | Data |
---|---|---|
20effc67 TL |
1 | // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- |
2 | // vim: ts=8 sw=2 smarttab | |
3 | ||
4 | #ifndef SQLITE_DB_H | |
5 | #define SQLITE_DB_H | |
6 | ||
7 | #include <errno.h> | |
8 | #include <stdlib.h> | |
9 | #include <string> | |
10 | #include <sqlite3.h> | |
11 | #include "rgw/store/dbstore/common/dbstore.h" | |
12 | ||
13 | using namespace std; | |
14 | using namespace rgw::store; | |
15 | ||
16 | class SQLiteDB : public DB, virtual public DBOp { | |
17 | private: | |
18 | sqlite3_mutex *mutex = NULL; | |
19 | ||
20 | protected: | |
21 | CephContext *cct; | |
22 | ||
23 | public: | |
24 | sqlite3_stmt *stmt = NULL; | |
25 | DBOpPrepareParams PrepareParams; | |
26 | ||
27 | SQLiteDB(sqlite3 *dbi, string db_name, CephContext *_cct) : DB(db_name, _cct), cct(_cct) { | |
28 | db = (void*)dbi; | |
29 | InitPrepareParams(get_def_dpp(), PrepareParams); | |
30 | } | |
31 | SQLiteDB(string db_name, CephContext *_cct) : DB(db_name, _cct), cct(_cct) { | |
32 | InitPrepareParams(get_def_dpp(), PrepareParams); | |
33 | } | |
34 | ~SQLiteDB() {} | |
35 | ||
36 | uint64_t get_blob_limit() override { return SQLITE_LIMIT_LENGTH; } | |
37 | void *openDB(const DoutPrefixProvider *dpp) override; | |
38 | int closeDB(const DoutPrefixProvider *dpp) override; | |
39 | int InitializeDBOps(const DoutPrefixProvider *dpp) override; | |
40 | int FreeDBOps(const DoutPrefixProvider *dpp) override; | |
41 | ||
42 | int InitPrepareParams(const DoutPrefixProvider *dpp, DBOpPrepareParams ¶ms) override { return 0; } | |
43 | ||
44 | int exec(const DoutPrefixProvider *dpp, const char *schema, | |
45 | int (*callback)(void*,int,char**,char**)); | |
46 | int Step(const DoutPrefixProvider *dpp, DBOpInfo &op, sqlite3_stmt *stmt, | |
47 | int (*cbk)(const DoutPrefixProvider *dpp, DBOpInfo &op, sqlite3_stmt *stmt)); | |
48 | int Reset(const DoutPrefixProvider *dpp, sqlite3_stmt *stmt); | |
49 | /* default value matches with sqliteDB style */ | |
50 | ||
51 | int createTables(const DoutPrefixProvider *dpp); | |
52 | int createBucketTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
53 | int createUserTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
54 | int createObjectTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
55 | int createObjectDataTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
56 | int createQuotaTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
57 | ||
58 | int createLCTables(const DoutPrefixProvider *dpp) override; | |
59 | ||
60 | int DeleteBucketTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
61 | int DeleteUserTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
62 | int DeleteObjectTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
63 | int DeleteObjectDataTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
64 | int DeleteQuotaTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
65 | int DeleteLCEntryTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
66 | int DeleteLCHeadTable(const DoutPrefixProvider *dpp, DBOpParams *params); | |
67 | ||
68 | int ListAllBuckets(const DoutPrefixProvider *dpp, DBOpParams *params) override; | |
69 | int ListAllUsers(const DoutPrefixProvider *dpp, DBOpParams *params) override; | |
70 | int ListAllObjects(const DoutPrefixProvider *dpp, DBOpParams *params) override; | |
71 | }; | |
72 | ||
73 | class SQLObjectOp : public ObjectOp { | |
74 | private: | |
75 | sqlite3 **sdb = NULL; | |
76 | CephContext *cct; | |
77 | ||
78 | public: | |
79 | SQLObjectOp(sqlite3 **sdbi, CephContext *_cct) : sdb(sdbi), cct(_cct) {}; | |
80 | ~SQLObjectOp() {} | |
81 | ||
82 | int InitializeObjectOps(string db_name, const DoutPrefixProvider *dpp); | |
83 | int FreeObjectOps(const DoutPrefixProvider *dpp); | |
84 | }; | |
85 | ||
86 | class SQLInsertUser : public SQLiteDB, public InsertUserOp { | |
87 | private: | |
88 | sqlite3 **sdb = NULL; | |
89 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
90 | ||
91 | public: | |
92 | SQLInsertUser(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
93 | ~SQLInsertUser() { | |
94 | if (stmt) | |
95 | sqlite3_finalize(stmt); | |
96 | } | |
97 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
98 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
99 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
100 | }; | |
101 | ||
102 | class SQLRemoveUser : public SQLiteDB, public RemoveUserOp { | |
103 | private: | |
104 | sqlite3 **sdb = NULL; | |
105 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
106 | ||
107 | public: | |
108 | SQLRemoveUser(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
109 | ~SQLRemoveUser() { | |
110 | if (stmt) | |
111 | sqlite3_finalize(stmt); | |
112 | } | |
113 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
114 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
115 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
116 | }; | |
117 | ||
118 | class SQLGetUser : public SQLiteDB, public GetUserOp { | |
119 | private: | |
120 | sqlite3 **sdb = NULL; | |
121 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
122 | sqlite3_stmt *email_stmt = NULL; // Prepared statement to query by useremail | |
123 | sqlite3_stmt *ak_stmt = NULL; // Prepared statement to query by access_key_id | |
124 | sqlite3_stmt *userid_stmt = NULL; // Prepared statement to query by user_id | |
125 | ||
126 | public: | |
127 | SQLGetUser(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
128 | ~SQLGetUser() { | |
129 | if (stmt) | |
130 | sqlite3_finalize(stmt); | |
131 | if (email_stmt) | |
132 | sqlite3_finalize(email_stmt); | |
133 | if (ak_stmt) | |
134 | sqlite3_finalize(ak_stmt); | |
135 | if (userid_stmt) | |
136 | sqlite3_finalize(userid_stmt); | |
137 | } | |
138 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
139 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
140 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
141 | }; | |
142 | ||
143 | class SQLInsertBucket : public SQLiteDB, public InsertBucketOp { | |
144 | private: | |
145 | sqlite3 **sdb = NULL; | |
146 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
147 | ||
148 | public: | |
149 | SQLInsertBucket(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
150 | ~SQLInsertBucket() { | |
151 | if (stmt) | |
152 | sqlite3_finalize(stmt); | |
153 | } | |
154 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
155 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
156 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
157 | }; | |
158 | ||
159 | class SQLUpdateBucket : public SQLiteDB, public UpdateBucketOp { | |
160 | private: | |
161 | sqlite3 **sdb = NULL; | |
162 | sqlite3_stmt *info_stmt = NULL; // Prepared statement | |
163 | sqlite3_stmt *attrs_stmt = NULL; // Prepared statement | |
164 | sqlite3_stmt *owner_stmt = NULL; // Prepared statement | |
165 | ||
166 | public: | |
167 | SQLUpdateBucket(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
168 | ~SQLUpdateBucket() { | |
169 | if (info_stmt) | |
170 | sqlite3_finalize(info_stmt); | |
171 | if (attrs_stmt) | |
172 | sqlite3_finalize(attrs_stmt); | |
173 | if (owner_stmt) | |
174 | sqlite3_finalize(owner_stmt); | |
175 | } | |
176 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
177 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
178 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
179 | }; | |
180 | ||
181 | class SQLRemoveBucket : public SQLiteDB, public RemoveBucketOp { | |
182 | private: | |
183 | sqlite3 **sdb = NULL; | |
184 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
185 | ||
186 | public: | |
187 | SQLRemoveBucket(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
188 | ~SQLRemoveBucket() { | |
189 | if (stmt) | |
190 | sqlite3_finalize(stmt); | |
191 | } | |
192 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
193 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
194 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
195 | }; | |
196 | ||
197 | class SQLGetBucket : public SQLiteDB, public GetBucketOp { | |
198 | private: | |
199 | sqlite3 **sdb = NULL; | |
200 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
201 | ||
202 | public: | |
203 | SQLGetBucket(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
204 | ~SQLGetBucket() { | |
205 | if (stmt) | |
206 | sqlite3_finalize(stmt); | |
207 | } | |
208 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
209 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
210 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
211 | }; | |
212 | ||
213 | class SQLListUserBuckets : public SQLiteDB, public ListUserBucketsOp { | |
214 | private: | |
215 | sqlite3 **sdb = NULL; | |
216 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
217 | ||
218 | public: | |
219 | SQLListUserBuckets(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
220 | ~SQLListUserBuckets() { | |
221 | if (stmt) | |
222 | sqlite3_finalize(stmt); | |
223 | } | |
224 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
225 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
226 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
227 | }; | |
228 | ||
229 | class SQLPutObject : public SQLiteDB, public PutObjectOp { | |
230 | private: | |
231 | sqlite3 **sdb = NULL; | |
232 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
233 | ||
234 | public: | |
235 | SQLPutObject(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
236 | SQLPutObject(sqlite3 **sdbi, string db_name, CephContext *cct) : SQLiteDB(*sdbi, db_name, cct), sdb(sdbi) {} | |
237 | ||
238 | ~SQLPutObject() { | |
239 | if (stmt) | |
240 | sqlite3_finalize(stmt); | |
241 | } | |
242 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
243 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
244 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
245 | }; | |
246 | ||
247 | class SQLDeleteObject : public SQLiteDB, public DeleteObjectOp { | |
248 | private: | |
249 | sqlite3 **sdb = NULL; | |
250 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
251 | ||
252 | public: | |
253 | SQLDeleteObject(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
254 | SQLDeleteObject(sqlite3 **sdbi, string db_name, CephContext *cct) : SQLiteDB(*sdbi, db_name, cct), sdb(sdbi) {} | |
255 | ||
256 | ~SQLDeleteObject() { | |
257 | if (stmt) | |
258 | sqlite3_finalize(stmt); | |
259 | } | |
260 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
261 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
262 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
263 | }; | |
264 | ||
265 | class SQLGetObject : public SQLiteDB, public GetObjectOp { | |
266 | private: | |
267 | sqlite3 **sdb = NULL; | |
268 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
269 | ||
270 | public: | |
271 | SQLGetObject(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
272 | SQLGetObject(sqlite3 **sdbi, string db_name, CephContext *cct) : SQLiteDB(*sdbi, db_name, cct), sdb(sdbi) {} | |
273 | ||
274 | ~SQLGetObject() { | |
275 | if (stmt) | |
276 | sqlite3_finalize(stmt); | |
277 | } | |
278 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
279 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
280 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
281 | }; | |
282 | ||
283 | class SQLUpdateObject : public SQLiteDB, public UpdateObjectOp { | |
284 | private: | |
285 | sqlite3 **sdb = NULL; | |
286 | sqlite3_stmt *omap_stmt = NULL; // Prepared statement | |
287 | sqlite3_stmt *attrs_stmt = NULL; // Prepared statement | |
288 | sqlite3_stmt *meta_stmt = NULL; // Prepared statement | |
289 | sqlite3_stmt *mp_stmt = NULL; // Prepared statement | |
290 | ||
291 | public: | |
292 | SQLUpdateObject(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
293 | SQLUpdateObject(sqlite3 **sdbi, string db_name, CephContext *cct) : SQLiteDB(*sdbi, db_name, cct), sdb(sdbi) {} | |
294 | ||
295 | ~SQLUpdateObject() { | |
296 | if (omap_stmt) | |
297 | sqlite3_finalize(omap_stmt); | |
298 | if (attrs_stmt) | |
299 | sqlite3_finalize(attrs_stmt); | |
300 | if (meta_stmt) | |
301 | sqlite3_finalize(meta_stmt); | |
302 | } | |
303 | ||
304 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
305 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
306 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
307 | }; | |
308 | ||
309 | class SQLListBucketObjects : public SQLiteDB, public ListBucketObjectsOp { | |
310 | private: | |
311 | sqlite3 **sdb = NULL; | |
312 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
313 | ||
314 | public: | |
315 | SQLListBucketObjects(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
316 | SQLListBucketObjects(sqlite3 **sdbi, string db_name, CephContext *cct) : SQLiteDB(*sdbi, db_name, cct), sdb(sdbi) {} | |
317 | ||
318 | ~SQLListBucketObjects() { | |
319 | if (stmt) | |
320 | sqlite3_finalize(stmt); | |
321 | } | |
322 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
323 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
324 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
325 | }; | |
326 | ||
327 | class SQLPutObjectData : public SQLiteDB, public PutObjectDataOp { | |
328 | private: | |
329 | sqlite3 **sdb = NULL; | |
330 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
331 | ||
332 | public: | |
333 | SQLPutObjectData(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
334 | SQLPutObjectData(sqlite3 **sdbi, string db_name, CephContext *cct) : SQLiteDB(*sdbi, db_name, cct), sdb(sdbi) {} | |
335 | ||
336 | ~SQLPutObjectData() { | |
337 | if (stmt) | |
338 | sqlite3_finalize(stmt); | |
339 | } | |
340 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
341 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
342 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
343 | }; | |
344 | ||
345 | class SQLUpdateObjectData : public SQLiteDB, public UpdateObjectDataOp { | |
346 | private: | |
347 | sqlite3 **sdb = NULL; | |
348 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
349 | ||
350 | public: | |
351 | SQLUpdateObjectData(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
352 | SQLUpdateObjectData(sqlite3 **sdbi, string db_name, CephContext *cct) : SQLiteDB(*sdbi, db_name, cct), sdb(sdbi) {} | |
353 | ||
354 | ~SQLUpdateObjectData() { | |
355 | if (stmt) | |
356 | sqlite3_finalize(stmt); | |
357 | } | |
358 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
359 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
360 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
361 | }; | |
362 | ||
363 | class SQLGetObjectData : public SQLiteDB, public GetObjectDataOp { | |
364 | private: | |
365 | sqlite3 **sdb = NULL; | |
366 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
367 | ||
368 | public: | |
369 | SQLGetObjectData(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
370 | SQLGetObjectData(sqlite3 **sdbi, string db_name, CephContext *cct) : SQLiteDB(*sdbi, db_name, cct), sdb(sdbi) {} | |
371 | ||
372 | ~SQLGetObjectData() { | |
373 | if (stmt) | |
374 | sqlite3_finalize(stmt); | |
375 | } | |
376 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
377 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
378 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
379 | }; | |
380 | ||
381 | class SQLDeleteObjectData : public SQLiteDB, public DeleteObjectDataOp { | |
382 | private: | |
383 | sqlite3 **sdb = NULL; | |
384 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
385 | ||
386 | public: | |
387 | SQLDeleteObjectData(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
388 | SQLDeleteObjectData(sqlite3 **sdbi, string db_name, CephContext *cct) : SQLiteDB(*sdbi, db_name, cct), sdb(sdbi) {} | |
389 | ||
390 | ~SQLDeleteObjectData() { | |
391 | if (stmt) | |
392 | sqlite3_finalize(stmt); | |
393 | } | |
394 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
395 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
396 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
397 | }; | |
398 | ||
399 | class SQLInsertLCEntry : public SQLiteDB, public InsertLCEntryOp { | |
400 | private: | |
401 | sqlite3 **sdb = NULL; | |
402 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
403 | ||
404 | public: | |
405 | SQLInsertLCEntry(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
406 | ~SQLInsertLCEntry() { | |
407 | if (stmt) | |
408 | sqlite3_finalize(stmt); | |
409 | } | |
410 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
411 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
412 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
413 | }; | |
414 | ||
415 | class SQLRemoveLCEntry : public SQLiteDB, public RemoveLCEntryOp { | |
416 | private: | |
417 | sqlite3 **sdb = NULL; | |
418 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
419 | ||
420 | public: | |
421 | SQLRemoveLCEntry(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
422 | ~SQLRemoveLCEntry() { | |
423 | if (stmt) | |
424 | sqlite3_finalize(stmt); | |
425 | } | |
426 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
427 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
428 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
429 | }; | |
430 | ||
431 | class SQLGetLCEntry : public SQLiteDB, public GetLCEntryOp { | |
432 | private: | |
433 | sqlite3 **sdb = NULL; | |
434 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
435 | sqlite3_stmt *next_stmt = NULL; // Prepared statement | |
436 | ||
437 | public: | |
438 | SQLGetLCEntry(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
439 | ~SQLGetLCEntry() { | |
440 | if (stmt) | |
441 | sqlite3_finalize(stmt); | |
442 | if (next_stmt) | |
443 | sqlite3_finalize(next_stmt); | |
444 | } | |
445 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
446 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
447 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
448 | }; | |
449 | ||
450 | class SQLListLCEntries : public SQLiteDB, public ListLCEntriesOp { | |
451 | private: | |
452 | sqlite3 **sdb = NULL; | |
453 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
454 | ||
455 | public: | |
456 | SQLListLCEntries(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
457 | ~SQLListLCEntries() { | |
458 | if (stmt) | |
459 | sqlite3_finalize(stmt); | |
460 | } | |
461 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
462 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
463 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
464 | }; | |
465 | ||
466 | class SQLInsertLCHead : public SQLiteDB, public InsertLCHeadOp { | |
467 | private: | |
468 | sqlite3 **sdb = NULL; | |
469 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
470 | ||
471 | public: | |
472 | SQLInsertLCHead(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
473 | ~SQLInsertLCHead() { | |
474 | if (stmt) | |
475 | sqlite3_finalize(stmt); | |
476 | } | |
477 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
478 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
479 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
480 | }; | |
481 | ||
482 | class SQLRemoveLCHead : public SQLiteDB, public RemoveLCHeadOp { | |
483 | private: | |
484 | sqlite3 **sdb = NULL; | |
485 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
486 | ||
487 | public: | |
488 | SQLRemoveLCHead(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
489 | ~SQLRemoveLCHead() { | |
490 | if (stmt) | |
491 | sqlite3_finalize(stmt); | |
492 | } | |
493 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
494 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
495 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
496 | }; | |
497 | ||
498 | class SQLGetLCHead : public SQLiteDB, public GetLCHeadOp { | |
499 | private: | |
500 | sqlite3 **sdb = NULL; | |
501 | sqlite3_stmt *stmt = NULL; // Prepared statement | |
502 | ||
503 | public: | |
504 | SQLGetLCHead(void **db, string db_name, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), db_name, cct), sdb((sqlite3 **)db) {} | |
505 | ~SQLGetLCHead() { | |
506 | if (stmt) | |
507 | sqlite3_finalize(stmt); | |
508 | } | |
509 | int Prepare(const DoutPrefixProvider *dpp, DBOpParams *params); | |
510 | int Execute(const DoutPrefixProvider *dpp, DBOpParams *params); | |
511 | int Bind(const DoutPrefixProvider *dpp, DBOpParams *params); | |
512 | }; | |
513 | ||
514 | #endif |