changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/ffi/rocksdb/db.lisp

changeset 268: a52d42f30617
parent: f3d814fb136a
child: 87f503c7a365
author: Richard Westhaver <ellis@rwest.io>
date: Sat, 06 Apr 2024 23:30:32 -0400
permissions: -rw-r--r--
description: rocksdb alien functions and cargo fmt
1 (in-package :rocksdb)
2 
3 ;;; DB
4 (def-with-errptr rocksdb-open (* rocksdb)
5  (opt (* rocksdb-options))
6  (name c-string))
7 
8 (define-alien-routine rocksdb-close void
9  (db (* rocksdb)))
10 
11 (define-alien-routine rocksdb-cancel-all-background-work void
12  (db (* rocksdb))
13  (wait boolean))
14 
15 (export '(rocksdb-close rocksdb-cancel-all-background-work))
16 
17 (def-with-errptr rocksdb-put
18  void
19  (db (* rocksdb))
20  (options (* rocksdb-writeoptions))
21  (key (* unsigned-char))
22  (keylen size-t)
23  (val (* unsigned-char))
24  (vallen size-t))
25 
26 (def-with-errptr rocksdb-get
27  (* unsigned-char)
28  (db (* rocksdb))
29  (options (* rocksdb-readoptions))
30  (key (* unsigned-char))
31  (keylen size-t)
32  (vallen (* size-t)))
33 
34 (def-with-errptr rocksdb-delete
35  void
36  (db (* rocksdb))
37  (options (* rocksdb-writeoptions))
38  (key (* unsigned-char))
39  (keylen size-t))
40 
41 (def-with-errptr rocksdb-merge
42  void
43  (db (* rocksdb))
44  (opt (* rocksdb-writeoptions))
45  (key (* unsigned-char))
46  (keylen size-t)
47  (val (* unsigned-char))
48  (vallen size-t))
49 
50 (def-with-errptr rocksdb-merge-cf
51  void
52  (db (* rocksdb))
53  (opt (* rocksdb-writeoptions))
54  (cf (* rocksdb-column-family-handle))
55  (key (* unsigned-char))
56  (keylen size-t)
57  (val (* unsigned-char))
58  (vallen size-t))
59 
60 (def-with-errptr rocksdb-write
61  void
62  (db (* rocksdb))
63  (opt (* rocksdb-writeoptions))
64  (batch (* rocksdb-writebatch)))
65 
66 (def-with-errptr rocksdb-get-cf
67  (* unsigned-char)
68  (db (* rocksdb))
69  (opt (* rocksdb-readoptions))
70  (cf (* rocksdb-column-family-handle))
71  (key (* unsigned-char))
72  (keylen size-t)
73  (vallen (* size-t)))
74 
75 ;; NOTE 2023-12-19: only the VOID-returning functions in the multi-
76 ;; family perform parallel IO:
77 ;; https://github.com/facebook/rocksdb/wiki/MultiGet-Performance
78 (define-alien-routine rocksdb-multi-get void
79  (db (* rocksdb))
80  (opt (* rocksdb-readoptions))
81  (num-keys size-t)
82  (keys-list (array c-string))
83  (keys-list-sizes (array size-t))
84  (values-list (array c-string))
85  (values-list-sizes (array size-t))
86  (errs (array rocksdb-errptr)))
87 
88 (define-alien-routine rocksdb-multi-get-cf void
89  (db (* rocksdb))
90  (opt (* rocksdb-readoptions))
91  (cfs (array rocksdb-column-family-handle))
92  (num-keys size-t)
93  (keys-list (array c-string))
94  (keys-list-sizes (array size-t))
95  (values-list (array c-string))
96  (values-list-sizes (array size-t))
97  (errs (array rocksdb-errptr)))
98 
99 (export '(rocksdb-multi-get rocksdb-multi-get-cf))
100 
101 (define-alien-routine rocksdb-cache-create-lru (* rocksdb) (capacity unsigned-int))
102 
103 (export '(rocksdb-cache-create-lru))
104 
105 (def-with-errptr rocksdb-flush void
106  (db (* rocksdb))
107  (options (* rocksdb-flushoptions)))
108 
109 (def-with-errptr rocksdb-flush-cf void
110  (db (* rocksdb))
111  (opts (* rocksdb-flushoptions))
112  (cf (* rocksdb-column-family-handle))
113  (num-cf int))
114 
115 (def-with-errptr rocksdb-flush-cfs void
116  (db (* rocksdb))
117  (opts (* rocksdb-flushoptions))
118  (cf (* (* rocksdb-column-family-handle)))
119  (num-cf int))
120 
121 (def-with-errptr rocksdb-flush-wal void
122  (db (* rocksdb))
123  (sync unsigned-char))
124 
125 (define-alien-routine rocksdb-delete-file void
126  (db (* rocksdb))
127  (name c-string))
128 
129 (define-alien-routine rocksdb-livefile (* rocksdb-livefiles)
130  (db (* rocksdb))
131  (name c-string))
132 
133 (export '(rocksdb-delete-file rocksdb-livefile))
134 
135 ;; return NULL if prop name is unknown, else return pointer to
136 ;; malloc-ed null-term value.
137 (define-alien-routine rocksdb-property-value (* t)
138  (db (* rocksdb))
139  (propname (* c-string)))
140 
141 ;; return 0 on success, else -1
142 (define-alien-routine rocksdb-property-int int
143  (db (* rocksdb))
144  (propname (* c-string)))
145 
146 (define-alien-routine rocksdb-property-value-cf (* t)
147  (db (* rocksdb))
148  (cf (* rocksdb-column-family-handle))
149  (propname (* c-string)))
150 
151 (define-alien-routine rocksdb-property-int-cf int
152  (db (* rocksdb))
153  (cf (* rocksdb-column-family-handle))
154  (propname (* c-string)))
155 
156 (export '(rocksdb-property-value rocksdb-property-value-cf rocksdb-property-int rocksdb-property-int-cf))
157 
158 ;;; CF
159 (def-with-errptr rocksdb-create-column-family
160  (* rocksdb-column-family-handle)
161  (db (* rocksdb))
162  (column-family-options (* rocksdb-options))
163  (column-family-name c-string))
164 
165 (def-with-errptr rocksdb-create-column-families
166  (array rocksdb-column-family-handle)
167  (db (* rocksdb))
168  (column-family-options (* rocksdb-options))
169  (num-column-familes int)
170  (column-family-names (array c-string))
171  (lencfs (* size-t)))
172 
173 (define-alien-routine rocksdb-create-column-families-destroy void
174  (list (array rocksdb-column-family-handle)))
175 
176 (define-alien-routine rocksdb-column-family-handle-destroy void
177  (* rocksdb-column-family-handle))
178 
179 (define-alien-routine rocksdb-column-family-handle-get-id unsigned-int
180  (* rocksdb-column-family-handle))
181 
182 (define-alien-routine rocksdb-column-family-handle-get-name c-string
183  (handle (* rocksdb-column-family-handle))
184  (name-len (* size-t)))
185 
186 (export '(rocksdb-create-column-families-destroy rocksdb-create-column-family-handle-destroy
187  rocksdb-column-family-handle-get-id rocksdb-column-family-handle-get-name))
188 
189 (def-with-errptr rocksdb-drop-column-family
190  void
191  (db (* rocksdb))
192  (handle (* rocksdb-column-family-handle)))
193 
194 (def-with-errptr rocksdb-open-column-families
195  (* rocksdb)
196  (options (* rocksdb-options))
197  (name c-string)
198  (num-column-families int)
199  (column-family-names (array c-string))
200  (column-family-options (array rocksdb-options))
201  (column-family-handles (array rocksdb-column-family-handle)))
202 
203 (def-with-errptr rocksdb-list-column-families
204  (array c-string)
205  (opt (* rocksdb-options))
206  (name c-string)
207  (lencf (* size-t)))
208 
209 (define-alien-routine rocksdb-list-column-families-destroy void
210  (list (array c-string))
211  (len size-t))
212 
213 (export '(rocksdb-list-column-families-destroy))
214 
215 (def-with-errptr rocksdb-put-cf
216  void
217  (db (* rocksdb))
218  (opt (* rocksdb-writeoptions))
219  (cf (* rocksdb-column-family-handle))
220  (key (* unsigned-char))
221  (keylen size-t)
222  (val (* unsigned-char))
223  (vallen size-t))
224 
225 (def-with-errptr rocksdb-delete-cf
226  void
227  (db (* rocksdb))
228  (options (* rocksdb-writeoptions))
229  (cf (* rocksdb-column-family-handle))
230  (key (* unsigned-char))
231  (keylen size-t))
232 
233 (def-with-errptr rocksdb-delete-range-cf
234  void
235  (db (* rocksdb))
236  (options (* rocksdb-writeoptions))
237  (cf (* rocksdb-column-family-handle))
238  (start-key (* unsigned-char))
239  (start-key-len size-t)
240  (end-key (* unsigned-char))
241  (end-key-len size-t))
242 
243 (def-with-errptr rocksdb-disable-file-deletions void
244  (db (* rocksdb)))
245 
246 (def-with-errptr rocksdb-enable-file-deletions void
247  (db (* rocksdb)))
248 
249 (def-with-errptr rocksdb-destroy-db void
250  (opts (* rocksdb-options))
251  (name c-string))
252 
253 (def-with-errptr rocksdb-repair-db void
254  (opts (* rocksdb-options))
255  (name c-string))
256 
257 ;;; Iterators
258 (define-alien-routine rocksdb-create-iterator (* rocksdb-iterator)
259  (db (* rocksdb))
260  (opt (* rocksdb-readoptions)))
261 (define-alien-routine rocksdb-iter-destroy void
262  (iter (* rocksdb-iterator)))
263 (define-alien-routine rocksdb-iter-seek-to-first void
264  (iter (* rocksdb-iterator)))
265 (define-alien-routine rocksdb-iter-valid boolean
266  (iter (* rocksdb-iterator)))
267 (define-alien-routine rocksdb-iter-next void
268  (iter (* rocksdb-iterator)))
269 (define-alien-routine rocksdb-iter-prev void
270  (iter (* rocksdb-iterator)))
271 (define-alien-routine rocksdb-iter-key (* unsigned-char)
272  (iter (* rocksdb-iterator))
273  (klen-ptr (* size-t)))
274 (define-alien-routine rocksdb-iter-value (* unsigned-char)
275  (iter (* rocksdb-iterator))
276  (vlen-ptr (* size-t)))
277 
278 (export '(rocksdb-create-iterator rocksdb-iter-destroy rocksdb-iter-seek-to-first rocksdb-iter-valid
279  rocksdb-iter-next rocksdb-iter-prev rocksdb-iter-key rocksdb-iter-value))
280 
281 ;;; Backup
282 (def-with-errptr rocksdb-backup-engine-open
283  (* rocksdb-backup-engine)
284  (opts (* rocksdb-options))
285  (path c-string))
286 
287 (def-with-errptr rocksdb-backup-engine-create-new-backup
288  void
289  (be (* rocksdb-backup-engine))
290  (db (* rocksdb)))
291 
292 (def-with-errptr rocksdb-backup-engine-restore-db-from-latest-backup
293  void
294  (be (* rocksdb-backup-engine))
295  (db-dir c-string)
296  (wal-dir c-string)
297  (res-opts (* rocksdb-restore-options)))
298 
299 (def-with-errptr rocksdb-backup-engine-restore-db-from-backup
300  void
301  (be (* rocksdb-backup-engine))
302  (db-dir c-string)
303  (wal-dir c-string)
304  (res-opts (* rocksdb-restore-options))
305  (backup-id unsigned-int))
306 
307 (define-alien-routine rocksdb-backup-engine-close void
308  (be (* rocksdb-backup-engine)))
309 
310 (export '(rocksdb-backup-engine-close))
311 
312 ;;; Transactions
313 (def-with-errptr rocksdb-transactiondb-create-column-family (* rocksdb-column-family-handle)
314  (txn-db (* rocksdb-transactiondb))
315  (cf-options (* rocksdb-options))
316  (cf-name c-string))
317 
318 (def-with-errptr rocksdb-transactiondb-open (* rocksdb-transactiondb)
319  (opts (* rocksdb-options))
320  (topts (* rocksdb-transactiondb-options))
321  (name c-string))
322 
323 (def-with-errptr rocksdb-transactiondb-open-column-families (* rocksdb-transactiondb)
324  (opts (* rocksdb-options))
325  (txn-db-opts (* rocksdb-transactiondb-options))
326  (name c-string)
327  (num-cfs int)
328  (cf-names (array c-string))
329  (cf-opfs (* rocksdb-options))
330  (cf-handles (array (* rocksdb-column-family-handle))))
331 
332 (define-alien-routine rocksdb-transactiondb-create-snapshot (* rocksdb-snapshot)
333  (txn-db (* rocksdb-transactiondb))
334  (snapshot (* rocksdb-snapshot)))
335 
336 (define-alien-routine rocksdb-transactiondb-release-snapshot void
337  (txn-db (* rocksdb-transactiondb))
338  (snapshot (* rocksdb-snapshot)))
339 
340 (define-alien-routine rocksdb-transactiondb-property-value c-string
341  (db (* rocksdb-transactiondb))
342  (propname c-string))
343 
344 (define-alien-routine rocksdb-transactiondb-property-int int
345  (db (* rocksdb-transactiondb))
346  (propname c-string)
347  (out-val (unsigned 64)))
348 
349 (define-alien-routine rocksdb-transactiondb-get-base-db (* rocksdb)
350  (txn-db (* rocksdb-transactiondb)))
351 
352 (define-alien-routine rocksdb-transactiondb-get-close-db void
353  (base-db (* rocksdb)))
354 
355 (define-alien-routine rocksdb-transaction-begin (* rocksdb-transaction)
356  (wopts (* rocksdb-writeoptions))
357  (topts (* rocksdb-transaction-options))
358  (told (* rocksdb-transaction)))
359 
360 (define-alien-routine rocksdb-transactiondb-get-prepared-transactions (array (* rocksdb-transaction))
361  (txn-db (* rocksdb-transactiondb))
362  (cnt (* size-t)))
363 
364 (def-with-errptr rocksdb-transaction-set-name void
365  (txn (* rocksdb-transaction))
366  (name c-string)
367  (name-len size-t))
368 
369 (define-alien-routine rocksdb-transaction-get-name c-string
370  (txn (* rocksdb-transaction))
371  (name-len (* size-t)))
372 
373 (def-with-errptr rocksdb-transaction-prepare void
374  (txn (* rocksdb-transaction)))
375 
376 (def-with-errptr rocksdb-transaction-commit void
377  (txn (* rocksdb-transaction)))
378 
379 (def-with-errptr rocksdb-transaction-rollback void
380  (txn (* rocksdb-transaction)))
381 
382 (define-alien-routine rocksdb-transaction-set-savepoint void
383  (txn (* rocksdb-transaction)))
384 
385 (def-with-errptr rocksdb-transaction-rollback-to-savepoint void
386  (txn (* rocksdb-transaction)))
387 
388 (define-alien-routine rocksdb-transaction-destroy void
389  (txn (* rocksdb-transaction)))
390 
391 (define-alien-routine rocksdb-transaction-get-writebach-wi (* rocksdb-writebatch-wi)
392  (txn (* rocksdb-transaction)))
393 
394 (define-alien-routine rocksdb-transactiondb-close void
395  (tdb (* rocksdb-transactiondb)))
396 
397 (export '(rocksdb-transaction-begin rocksdb-transaction-close rocksdb-transactiondb-create-snapshot
398  rocksdb-transactiondb-release-snapshot rocksdb-transactiondb-property-value
399  rocksdb-transactiondb-property-int rocksdb-transactiondb-get-base-db
400  rocksdb-transactiondb-get-close-db rocksdb-transaction-get-name
401  rocksdb-transaction-set-savepoint rocksdb-transaction-destroy))
402 
403 ;;; Perfcontext
404 (define-alien-routine rocksdb-set-perf-level void (val int))
405 
406 (define-alien-routine rocksdb-perfcontext-create (* rocksdb-perfcontext))
407 
408 (define-alien-routine rocksdb-perfcontext-reset void (* rocksdb-perfcontext))
409 
410 (define-alien-routine rocksdb-perfcontext-report (* unsigned-char)
411  (context (* rocksdb-perfcontext))
412  (exclude-zero-counters unsigned-char))
413 
414 (define-alien-routine rocksdb-perfcontext-metric unsigned-long
415  (context (* rocksdb-perfcontext)) (metric int))
416 
417 (define-alien-routine rocksdb-perfcontext-destroy void (* rocksdb-perfcontext))
418 
419 (export '(rocksdb-perfcontext-reset rocksdb-perfcontext-report
420  rocksdb-perfcontext-metric rocksdb-perfcontext-destroy))
421 
422 ;;; Compaction Filter
423 ;; (define-alien-routine rocksdb-compactionfilter-create (* rocksdb-compactionfilter)
424 ;; (state (* void))
425 ;; (destructor (* void))
426 ;; (filter (* unsigned-char))
427 ;; (name (* unsigned-char)))
428 
429 (define-alien-routine rocksdb-compactionfilter-set-ignore-snapshots void
430  (self (* rocksdb-compactionfilter)) (val unsigned-char))
431 
432 (define-alien-routine rocksdb-compactionfilter-destroy void
433  (self (* rocksdb-compactionfilter)))
434 
435 ;;; Compaction Filter Context
436 (define-alien-routine rocksdb-compactionfiltercontext-is-full-compaction unsigned-char
437  (context (* rocksdb-compactionfiltercontext)))
438 
439 (define-alien-routine rocksdb-compactionfiltercontext-is-manual-compaction unsigned-char
440  (context (* rocksdb-compactionfiltercontext)))
441 
442 (export '(rocksdb-compactionfilter-set-ignore-snapshots rocksdb-compactionfilter-destroy
443  rocksdb-compactionfiltercontext-is-full-compaction rocksdb-compactionfiltercontext-is-manual-compaction))
444 
445 ;;; Compaction Filter Factory
446 
447 ;;; Comparator
448 ;; TODO 2023-12-11:
449 ;; (define-alien-routine rocksdb-comparator-create (* rocksdb-comparator)
450 ;; (state (* void))
451 ;; (destructor (* void))
452 ;; (compare (* int))
453 ;; (name (* unsigned-char)))
454 
455 (define-alien-routine rocksdb-comparator-destroy void (self (* rocksdb-comparator)))
456 
457 ;; (define-alien-routine rocksdb-comparator-with-ts-create (* rocksdb-comparator)
458 ;; (state (* void))
459 ;; (destructor (* void))
460 ;; (compare (* int))
461 ;; (compare-ts (* int))
462 ;; (compare-without-ts (* int))
463 ;; (name (* unsigned-char)))
464 
465 (export '(rocksdb-comparator-destroy))
466 
467 ;;; Filter Policy
468 (define-alien-routine rocksdb-filterpolicy-destroy void (self (* rocksdb-filterpolicy)))
469 
470 (define-alien-routine rocksdb-filterpolicy-create-bloom (* rocksdb-filterpolicy)
471  (bits-per-key double))
472 
473 (define-alien-routine rocksdb-filterpolicy-create-bloom-full (* rocksdb-filterpolicy)
474  (bits-per-key double))
475 
476 (define-alien-routine rocksdb-filterpolicy-create-ribbon (* rocksdb-filterpolicy)
477  (bloom-equivalent-bits-per-key double))
478 
479 (define-alien-routine rocksdb-filterpolicy-create-ribbon-hybrid (* rocksdb-filterpolicy)
480  (bloom-equivalent-bits-per-key double)
481  (bloom-before-level int))
482 
483 (export '(rocksdb-filterpolicy-destroy rocksdb-filterpolicy-create-bloom rocksdb-filterpolicy-create-bloom-full
484  rocksdb-filterpolicy-create-ribbon rocksdb-filterpolicy-create-ribbon-hybrid))
485 
486 ;;; Merge Operator
487 ;; TODO 2023-12-11:
488 ;; (define-alien-routine rocksdb-mergeoperator-create (* rocksdb-mergeoperator)
489 ;; (state (* void))
490 ;; (destructor (* void))
491 ;; (full-merge (* char))
492 ;; (partial-merge (* char))
493 ;; (delete-value (* void))
494 ;; (name (* unsigned-char)))
495 
496 (define-alien-routine rocksdb-mergeoperator-destroy void (self (* rocksdb-mergeoperator)))
497 
498 (export '(rocksdb-mergeoperator-destroy))