changelog shortlog graph tags branches changeset files revisions annotate raw help

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

changeset 272: 0a5e37693fdf
parent: 4a1a21ff46ee
child: 6d56c4950fa2
author: Richard Westhaver <ellis@rwest.io>
date: Tue, 09 Apr 2024 22:09:52 -0400
permissions: -rw-r--r--
description: db protocol stuff, prep for tao, tests, with-temp-db
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-get-with-ts c-string
35  (db (* rocksdb))
36  (opts (* rocksdb-readoptions))
37  (key c-string)
38  (keylen size-t)
39  (vallen (* size-t))
40  (ts (* c-string))
41  (tslen (* size-t)))
42 
43 (def-with-errptr rocksdb-delete
44  void
45  (db (* rocksdb))
46  (options (* rocksdb-writeoptions))
47  (key (* unsigned-char))
48  (keylen size-t))
49 
50 (def-with-errptr rocksdb-merge
51  void
52  (db (* rocksdb))
53  (opt (* rocksdb-writeoptions))
54  (key (* unsigned-char))
55  (keylen size-t)
56  (val (* unsigned-char))
57  (vallen size-t))
58 
59 (def-with-errptr rocksdb-merge-cf
60  void
61  (db (* rocksdb))
62  (opt (* rocksdb-writeoptions))
63  (cf (* rocksdb-column-family-handle))
64  (key (* unsigned-char))
65  (keylen size-t)
66  (val (* unsigned-char))
67  (vallen size-t))
68 
69 (def-with-errptr rocksdb-write
70  void
71  (db (* rocksdb))
72  (opt (* rocksdb-writeoptions))
73  (batch (* rocksdb-writebatch)))
74 
75 (def-with-errptr rocksdb-get-cf
76  (* unsigned-char)
77  (db (* rocksdb))
78  (opt (* rocksdb-readoptions))
79  (cf (* rocksdb-column-family-handle))
80  (key (* unsigned-char))
81  (keylen size-t)
82  (vallen (* size-t)))
83 
84 (def-with-errptr rocksdb-get-cf-with-ts c-string
85  (db (* rocksdb))
86  (opts (* rocksdb-readoptions))
87  (cf (* rocksdb-column-family-handle))
88  (key c-string)
89  (keylen size-t)
90  (vallen (* size-t))
91  (ts (* c-string))
92  (tslen (* size-t)))
93 
94 ;; NOTE 2023-12-19: only the VOID-returning functions in the multi-
95 ;; family perform parallel IO:
96 ;; https://github.com/facebook/rocksdb/wiki/MultiGet-Performance
97 (define-alien-routine rocksdb-multi-get void
98  (db (* rocksdb))
99  (opt (* rocksdb-readoptions))
100  (num-keys size-t)
101  (keys-list (array c-string))
102  (keys-list-sizes (array size-t))
103  (values-list (array c-string))
104  (values-list-sizes (array size-t))
105  (errs (array rocksdb-errptr)))
106 
107 (define-alien-routine rocksdb-multi-get-with-ts void
108  (db (* rocksdb))
109  (opt (* rocksdb-readoptions))
110  (num-keys size-t)
111  (keys-list (array c-string))
112  (keys-list-sizes (array size-t))
113  (values-list (array c-string))
114  (values-list-sizes (array size-t))
115  (ts-list (array c-string))
116  (ts-list-sizes (array size-t))
117  (errs (array rocksdb-errptr)))
118 
119 (define-alien-routine rocksdb-multi-get-cf void
120  (db (* rocksdb))
121  (opt (* rocksdb-readoptions))
122  (cfs (array rocksdb-column-family-handle))
123  (num-keys size-t)
124  (keys-list (array c-string))
125  (keys-list-sizes (array size-t))
126  (values-list (array c-string))
127  (values-list-sizes (array size-t))
128  (errs (array rocksdb-errptr)))
129 
130 (define-alien-routine rocksdb-multi-get-cf-with-ts void
131  (db (* rocksdb))
132  (opt (* rocksdb-readoptions))
133  (cfs (array rocksdb-column-family-handle))
134  (num-keys size-t)
135  (keys-list (array c-string))
136  (keys-list-sizes (array size-t))
137  (values-list (array c-string))
138  (values-list-sizes (array size-t))
139  (ts-list (array c-string))
140  (ts-list-sizes (array size-t))
141  (errs (array rocksdb-errptr)))
142 
143 (export '(rocksdb-multi-get rocksdb-multi-get-cf
144  rocksdb-multi-get-with-ts rocksdb-multi-get-cf-with-ts))
145 
146 (define-alien-routine rocksdb-cache-create-lru (* rocksdb-cache) (capacity size-t))
147 
148 (export '(rocksdb-cache-create-lru))
149 
150 (def-with-errptr rocksdb-flush void
151  (db (* rocksdb))
152  (options (* rocksdb-flushoptions)))
153 
154 (def-with-errptr rocksdb-flush-cf void
155  (db (* rocksdb))
156  (opts (* rocksdb-flushoptions))
157  (cf (* rocksdb-column-family-handle))
158  (num-cf int))
159 
160 (def-with-errptr rocksdb-flush-cfs void
161  (db (* rocksdb))
162  (opts (* rocksdb-flushoptions))
163  (cf (* (* rocksdb-column-family-handle)))
164  (num-cf int))
165 
166 (def-with-errptr rocksdb-flush-wal void
167  (db (* rocksdb))
168  (sync unsigned-char))
169 
170 (define-alien-routine rocksdb-delete-file void
171  (db (* rocksdb))
172  (name c-string))
173 
174 (define-alien-routine rocksdb-livefile (* rocksdb-livefiles)
175  (db (* rocksdb))
176  (name c-string))
177 
178 (export '(rocksdb-delete-file rocksdb-livefile))
179 
180 ;; return NULL if prop name is unknown, else return pointer to
181 ;; malloc-ed null-term value.
182 (define-alien-routine rocksdb-property-value c-string
183  (db (* rocksdb))
184  (propname c-string))
185 
186 ;; return 0 on success, else -1
187 (define-alien-routine rocksdb-property-int int
188  (db (* rocksdb))
189  (propname c-string))
190 
191 (define-alien-routine rocksdb-property-value-cf c-string
192  (db (* rocksdb))
193  (cf (* rocksdb-column-family-handle))
194  (propname c-string))
195 
196 (define-alien-routine rocksdb-property-int-cf int
197  (db (* rocksdb))
198  (cf (* rocksdb-column-family-handle))
199  (propname c-string))
200 
201 (export '(rocksdb-property-value rocksdb-property-value-cf rocksdb-property-int rocksdb-property-int-cf))
202 
203 ;;; CF
204 (def-with-errptr rocksdb-create-column-family
205  (* rocksdb-column-family-handle)
206  (db (* rocksdb))
207  (column-family-options (* rocksdb-options))
208  (column-family-name c-string))
209 
210 (def-with-errptr rocksdb-create-column-families
211  (array rocksdb-column-family-handle)
212  (db (* rocksdb))
213  (column-family-options (* rocksdb-options))
214  (num-column-familes int)
215  (column-family-names (array c-string))
216  (lencfs (* size-t)))
217 
218 (define-alien-routine rocksdb-create-column-families-destroy void
219  (list (array rocksdb-column-family-handle)))
220 
221 (define-alien-routine rocksdb-column-family-handle-destroy void
222  (cf (* rocksdb-column-family-handle)))
223 
224 (define-alien-routine rocksdb-column-family-handle-get-id unsigned-int
225  (cf (* rocksdb-column-family-handle)))
226 
227 (define-alien-routine rocksdb-column-family-handle-get-name c-string
228  (handle (* rocksdb-column-family-handle))
229  (name-len (* size-t)))
230 
231 (export '(rocksdb-create-column-families-destroy rocksdb-column-family-handle-destroy
232  rocksdb-column-family-handle-get-id rocksdb-column-family-handle-get-name))
233 
234 (def-with-errptr rocksdb-drop-column-family
235  void
236  (db (* rocksdb))
237  (handle (* rocksdb-column-family-handle)))
238 
239 (def-with-errptr rocksdb-open-column-families
240  (* rocksdb)
241  (options (* rocksdb-options))
242  (name c-string)
243  (num-column-families int)
244  (column-family-names (array c-string))
245  (column-family-options (array rocksdb-options))
246  (column-family-handles (array rocksdb-column-family-handle)))
247 
248 (def-with-errptr rocksdb-list-column-families
249  (array c-string)
250  (opt (* rocksdb-options))
251  (name c-string)
252  (lencf (* size-t)))
253 
254 (define-alien-routine rocksdb-list-column-families-destroy void
255  (list (array c-string))
256  (len size-t))
257 
258 (export '(rocksdb-list-column-families-destroy))
259 
260 (def-with-errptr rocksdb-put-cf
261  void
262  (db (* rocksdb))
263  (opt (* rocksdb-writeoptions))
264  (cf (* rocksdb-column-family-handle))
265  (key (* unsigned-char))
266  (keylen size-t)
267  (val (* unsigned-char))
268  (vallen size-t))
269 
270 (def-with-errptr rocksdb-delete-cf
271  void
272  (db (* rocksdb))
273  (options (* rocksdb-writeoptions))
274  (cf (* rocksdb-column-family-handle))
275  (key (* unsigned-char))
276  (keylen size-t))
277 
278 (def-with-errptr rocksdb-delete-range-cf
279  void
280  (db (* rocksdb))
281  (options (* rocksdb-writeoptions))
282  (cf (* rocksdb-column-family-handle))
283  (start-key (* unsigned-char))
284  (start-key-len size-t)
285  (end-key (* unsigned-char))
286  (end-key-len size-t))
287 
288 (def-with-errptr rocksdb-disable-file-deletions void
289  (db (* rocksdb)))
290 
291 (def-with-errptr rocksdb-enable-file-deletions void
292  (db (* rocksdb)))
293 
294 (def-with-errptr rocksdb-destroy-db void
295  (opts (* rocksdb-options))
296  (name c-string))
297 
298 (def-with-errptr rocksdb-repair-db void
299  (opts (* rocksdb-options))
300  (name c-string))
301 
302 ;;; Iterators
303 (define-alien-routine rocksdb-create-iterator (* rocksdb-iterator)
304  (db (* rocksdb))
305  (opt (* rocksdb-readoptions)))
306 (define-alien-routine rocksdb-iter-destroy void
307  (iter (* rocksdb-iterator)))
308 (define-alien-routine rocksdb-iter-seek-to-first void
309  (iter (* rocksdb-iterator)))
310 (define-alien-routine rocksdb-iter-valid boolean
311  (iter (* rocksdb-iterator)))
312 (define-alien-routine rocksdb-iter-next void
313  (iter (* rocksdb-iterator)))
314 (define-alien-routine rocksdb-iter-prev void
315  (iter (* rocksdb-iterator)))
316 (define-alien-routine rocksdb-iter-key (* unsigned-char)
317  (iter (* rocksdb-iterator))
318  (klen-ptr (* size-t)))
319 (define-alien-routine rocksdb-iter-value (* unsigned-char)
320  (iter (* rocksdb-iterator))
321  (vlen-ptr (* size-t)))
322 
323 (export '(rocksdb-create-iterator rocksdb-iter-destroy rocksdb-iter-seek-to-first rocksdb-iter-valid
324  rocksdb-iter-next rocksdb-iter-prev rocksdb-iter-key rocksdb-iter-value))
325 
326 ;;; Backup
327 (def-with-errptr rocksdb-backup-engine-open
328  (* rocksdb-backup-engine)
329  (opts (* rocksdb-options))
330  (path c-string))
331 
332 (def-with-errptr rocksdb-backup-engine-create-new-backup
333  void
334  (be (* rocksdb-backup-engine))
335  (db (* rocksdb)))
336 
337 (def-with-errptr rocksdb-backup-engine-restore-db-from-latest-backup
338  void
339  (be (* rocksdb-backup-engine))
340  (db-dir c-string)
341  (wal-dir c-string)
342  (res-opts (* rocksdb-restore-options)))
343 
344 (def-with-errptr rocksdb-backup-engine-restore-db-from-backup
345  void
346  (be (* rocksdb-backup-engine))
347  (db-dir c-string)
348  (wal-dir c-string)
349  (res-opts (* rocksdb-restore-options))
350  (backup-id unsigned-int))
351 
352 (define-alien-routine rocksdb-backup-engine-close void
353  (be (* rocksdb-backup-engine)))
354 
355 (export '(rocksdb-backup-engine-close))
356 
357 ;;; Transactions
358 (def-with-errptr rocksdb-transactiondb-create-column-family (* rocksdb-column-family-handle)
359  (txn-db (* rocksdb-transactiondb))
360  (cf-options (* rocksdb-options))
361  (cf-name c-string))
362 
363 (def-with-errptr rocksdb-transactiondb-open (* rocksdb-transactiondb)
364  (opts (* rocksdb-options))
365  (topts (* rocksdb-transactiondb-options))
366  (name c-string))
367 
368 (def-with-errptr rocksdb-transactiondb-open-column-families (* rocksdb-transactiondb)
369  (opts (* rocksdb-options))
370  (txn-db-opts (* rocksdb-transactiondb-options))
371  (name c-string)
372  (num-cfs int)
373  (cf-names (array c-string))
374  (cf-opfs (* rocksdb-options))
375  (cf-handles (array (* rocksdb-column-family-handle))))
376 
377 (define-alien-routine rocksdb-transactiondb-create-snapshot (* rocksdb-snapshot)
378  (txn-db (* rocksdb-transactiondb))
379  (snapshot (* rocksdb-snapshot)))
380 
381 (define-alien-routine rocksdb-transactiondb-release-snapshot void
382  (txn-db (* rocksdb-transactiondb))
383  (snapshot (* rocksdb-snapshot)))
384 
385 (define-alien-routine rocksdb-transactiondb-property-value c-string
386  (db (* rocksdb-transactiondb))
387  (propname c-string))
388 
389 (define-alien-routine rocksdb-transactiondb-property-int int
390  (db (* rocksdb-transactiondb))
391  (propname c-string)
392  (out-val (unsigned 64)))
393 
394 (define-alien-routine rocksdb-transactiondb-get-base-db (* rocksdb)
395  (txn-db (* rocksdb-transactiondb)))
396 
397 (define-alien-routine rocksdb-transactiondb-get-close-db void
398  (base-db (* rocksdb)))
399 
400 (define-alien-routine rocksdb-transaction-begin (* rocksdb-transaction)
401  (wopts (* rocksdb-writeoptions))
402  (topts (* rocksdb-transaction-options))
403  (told (* rocksdb-transaction)))
404 
405 (define-alien-routine rocksdb-transactiondb-get-prepared-transactions (array (* rocksdb-transaction))
406  (txn-db (* rocksdb-transactiondb))
407  (cnt (* size-t)))
408 
409 (def-with-errptr rocksdb-transaction-set-name void
410  (txn (* rocksdb-transaction))
411  (name c-string)
412  (name-len size-t))
413 
414 (define-alien-routine rocksdb-transaction-get-name c-string
415  (txn (* rocksdb-transaction))
416  (name-len (* size-t)))
417 
418 (def-with-errptr rocksdb-transaction-prepare void
419  (txn (* rocksdb-transaction)))
420 
421 (def-with-errptr rocksdb-transaction-commit void
422  (txn (* rocksdb-transaction)))
423 
424 (def-with-errptr rocksdb-transaction-rollback void
425  (txn (* rocksdb-transaction)))
426 
427 (define-alien-routine rocksdb-transaction-set-savepoint void
428  (txn (* rocksdb-transaction)))
429 
430 (def-with-errptr rocksdb-transaction-rollback-to-savepoint void
431  (txn (* rocksdb-transaction)))
432 
433 (define-alien-routine rocksdb-transaction-destroy void
434  (txn (* rocksdb-transaction)))
435 
436 (define-alien-routine rocksdb-transaction-get-writebach-wi (* rocksdb-writebatch-wi)
437  (txn (* rocksdb-transaction)))
438 
439 (def-with-errptr rocksdb-transaction-delete void
440  (txn (* rocksdb-transaction))
441  (key c-string)
442  (klen size-t))
443 
444 (def-with-errptr rocksdb-transaction-delete-cf void
445  (txn (* rocksdb-transaction))
446  (cf (* rocksdb-column-family-handle))
447  (key c-string)
448  (klen size-t))
449 
450 (def-with-errptr rocksdb-transactiondb-delete void
451  (txndb (* rocksdb-transactiondb))
452  (opts (* rocksdb-writeoptions))
453  (key c-string)
454  (klen size-t))
455 
456 (def-with-errptr rocksdb-transaction-delete-cf void
457  (txndb (* rocksdb-transactiondb))
458  (opts (* rocksdb-writeoptions))
459  (cf (* rocksdb-column-family-handle))
460  (key c-string)
461  (klen size-t))
462 
463 (define-alien-routine rocksdb-transaction-create-iterator (* rocksdb-iterator)
464  (txn (* rocksdb-transaction))
465  (opts (* rocksdb-readoptions)))
466 
467 (define-alien-routine rocksdb-transaction-create-iterator-cf (* rocksdb-iterator)
468  (txn (* rocksdb-transaction))
469  (opts (* rocksdb-readoptions))
470  (cf (* rocksdb-column-family-handle)))
471 
472 (define-alien-routine rocksdb-transactiondb-create-iterator (* rocksdb-iterator)
473  (txndb (* rocksdb-transactiondb))
474  (opts (* rocksdb-readoptions)))
475 
476 (define-alien-routine rocksdb-transactiondb-create-iterator-cf (* rocksdb-iterator)
477  (txndb (* rocksdb-transactiondb))
478  (opts (* rocksdb-readoptions))
479  (cf (* rocksdb-column-family-handle)))
480 
481 (define-alien-routine rocksdb-transactiondb-close void
482  (tdb (* rocksdb-transactiondb)))
483 
484 (def-with-errptr rocksdb-transactiondb-flush void
485  (txndb (* rocksdb-transactiondb))
486  (opts (* rocksdb-flushoptions)))
487 
488 (def-with-errptr rocksdb-transactiondb-flush-cf void
489  (txndb (* rocksdb-transactiondb))
490  (opts (* rocksdb-flushoptions))
491  (cf (* rocksdb-column-family-handle)))
492 
493 (def-with-errptr rocksdb-transactiondb-flush-cfs void
494  (txndb (* rocksdb-transactiondb))
495  (opts (* rocksdb-flushoptions))
496  (cfs (array (* rocksdb-column-family-handle)))
497  (ncfs int))
498 
499 (def-with-errptr rocksdb-transactiondb-flush-cf void
500  (txndb (* rocksdb-transactiondb))
501  (sync unsigned-char))
502 
503 (def-with-errptr rocksdb-transactiondb-checkpoint-object-create (* rocksdb-checkpoint)
504  (txn-db (* rocksdb-transactiondb)))
505 
506 (def-with-errptr rocksdb-optimistictransactiondb-open (* rocksdb-optimistictransactiondb)
507  (opts (* rocksdb-options))
508  (name c-string))
509 
510 (def-with-errptr rocksdb-optimistictransactiondb-open-column-families (* rocksdb-optimistictransactiondb)
511  (opts (* rocksdb-options))
512  (name c-string)
513  (ncfs int)
514  (cf-names (array c-string))
515  (cf-opts (array (* rocksdb-options)))
516  (cf-handles (array (* rocksdb-column-family-handle))))
517 
518 (define-alien-routine rocksdb-optimistictransactiondb-get-base-db (* rocksdb)
519  (otxn-db (* rocksdb-optimistictransactiondb)))
520 
521 (define-alien-routine rocksdb-optimistictransactiondb-close-base-db void
522  (base-db (* rocksdb)))
523 
524 (define-alien-routine rocksdb-optimistictransaction-begin (* rocksdb-transaction)
525  (otxn-db (* rocksdb-optimistictransactiondb))
526  (wopts (* rocksdb-writeoptions))
527  (otxn-opts (* rocksdb-optimistictransaction-options))
528  (old-txn (* rocksdb-transaction)))
529 
530 (def-with-errptr rocksdb-optimistictransactiondb-write void
531  (otxn-db (* rocksdb-optimistictransactiondb))
532  (wopts (* rocksdb-writeoptions))
533  (batch (* rocksdb-writebatch)))
534 
535 (define-alien-routine rocksdb-optimistictransactiondb-close void
536  (otxn-db (* rocksdb-optimistictransactiondb)))
537 
538 (def-with-errptr rocksdb-optimistictransactiondb-checkpoint-object-create (* rocksdb-checkpoint)
539  (otxn-db (* rocksdb-optimistictransactiondb)))
540 
541 (export '(rocksdb-transaction-begin rocksdb-transaction-close rocksdb-transactiondb-create-snapshot
542  rocksdb-transactiondb-release-snapshot rocksdb-transactiondb-property-value
543  rocksdb-transactiondb-property-int rocksdb-transactiondb-get-base-db
544  rocksdb-transactiondb-get-close-db rocksdb-transaction-get-name
545  rocksdb-transaction-set-savepoint rocksdb-transaction-destroy
546  rocksdb-transaction-create-iterator rocksdb-transaction-create-iterator-cf
547  rocksdb-transactiondb-create-iterator rocksdb-transactiondb-create-iterator-cf
548  rocksdb-optimistictransactiondb-get-base-db rocksdb-optimistictransactiondb-close-base-db
549  rocksdb-optimistictransaction-begin rocksdb-optimistictransactiondb-close))
550 
551 ;;; Perfcontext
552 (define-alien-routine rocksdb-set-perf-level void (val int))
553 
554 (define-alien-routine rocksdb-perfcontext-create (* rocksdb-perfcontext))
555 
556 (define-alien-routine rocksdb-perfcontext-reset void (ctx (* rocksdb-perfcontext)))
557 
558 (define-alien-routine rocksdb-perfcontext-report (* unsigned-char)
559  (context (* rocksdb-perfcontext))
560  (exclude-zero-counters unsigned-char))
561 
562 (define-alien-routine rocksdb-perfcontext-metric unsigned-long
563  (context (* rocksdb-perfcontext)) (metric int))
564 
565 (define-alien-routine rocksdb-perfcontext-destroy void (* rocksdb-perfcontext))
566 
567 (export '(rocksdb-perfcontext-reset rocksdb-perfcontext-report
568  rocksdb-perfcontext-metric rocksdb-perfcontext-destroy rocksdb-set-perf-level))
569 
570 ;;; Filter Policy
571 (define-alien-routine rocksdb-filterpolicy-destroy void (self (* rocksdb-filterpolicy)))
572 
573 (define-alien-routine rocksdb-filterpolicy-create-bloom (* rocksdb-filterpolicy)
574  (bits-per-key double))
575 
576 (define-alien-routine rocksdb-filterpolicy-create-bloom-full (* rocksdb-filterpolicy)
577  (bits-per-key double))
578 
579 (define-alien-routine rocksdb-filterpolicy-create-ribbon (* rocksdb-filterpolicy)
580  (bloom-equivalent-bits-per-key double))
581 
582 (define-alien-routine rocksdb-filterpolicy-create-ribbon-hybrid (* rocksdb-filterpolicy)
583  (bloom-equivalent-bits-per-key double)
584  (bloom-before-level int))
585 
586 (export '(rocksdb-filterpolicy-destroy rocksdb-filterpolicy-create-bloom rocksdb-filterpolicy-create-bloom-full
587  rocksdb-filterpolicy-create-ribbon rocksdb-filterpolicy-create-ribbon-hybrid))
588 
589 ;;; Snapshot
590 (define-alien-routine rocksdb-create-snapshot (* rocksdb-snapshot)
591  (db (* rocksdb)))
592 
593 (define-alien-routine rocksdb-release-snapshot void
594  (db (* rocksdb))
595  (snapshot (* rocksdb-snapshot)))
596 
597 (export '(rocksdb-create-snapshot rocksdb-release-snapshot))