Coverage report: /home/ellis/comp/core/ffi/rocksdb/pkg.lisp
Kind | Covered | All | % |
expression | 7 | 11 | 63.6 |
branch | 0 | 0 | nil |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; rocksdb.lisp --- low-level bindings to the RocksDB C API
7
;; if ur on archlinux and installed rocksdb via AUR you may receive an error from
8
;; jemalloc: cannot allocate memory in static TLS block:
10
;; https://github.com/veer66/cl-rocksdb/issues/1
12
;; for best results, you should compile rocksdb from source - use j0ni's snippet as a
15
;; make shared_lib DISABLE_JEMALLOC=1 &&
16
;; sudo cp librocksdb.so.* /usr/local/lib/ &&
17
;; sudo cp -rf include/* /usr/local/include/
19
;; https://github.com/facebook/rocksdb/blob/main/Makefile
21
;; check /usr/local/include/rocksdb/c.h for the C API header, the source is under
24
;; here are some important notes to keepin mind (from the API header):
27
C bindings for rocksdb. May be useful as a stable ABI that can be
28
used by programs that keep rocksdb in a shared library, or for
32
. getters for the option types
33
. custom comparators that implement key shortening
34
. capturing post-write-snapshot
35
. custom iter, db, env, cache implementations using just the C bindings
39
(1) We expose just opaque struct pointers and functions to clients.
40
This allows us to change internal representations without having to
43
(2) For simplicity, there is no equivalent to the Slice type. Instead,
44
the caller has to pass the pointer and length as separate
47
(3) Errors are represented by a null-terminated c string. NULL
48
means no error. All operations that can raise an error are passed
49
a "char** errptr" as the last argument. One of the following must
52
*errptr points to a malloc()ed null-terminated error message
53
On success, a leveldb routine leaves *errptr unchanged.
54
On failure, leveldb frees the old value of *errptr and
55
set *errptr to a malloc()ed error message.
57
(4) Bools have the type unsigned char (0 == false; rest == true)
59
(5) All of the pointer arguments must be non-NULL.|#
63
(:use :cl :std/alien :std/sym :std/macs :sb-alien)
68
:*rocksdb-compaction-levels*
69
:*rocksdb-compression-backends*
70
:rocksdb-compression-backend
71
:*rocksdb-perf-metrics*
72
:*rocksdb-perf-levels*
73
:*rocksdb-statistics-levels*
74
:rocksdb-statistics-level
76
:*rocksdb-column-family-metadata*
77
:*rocksdb-level-metadata*
78
:*rocksdb-sst-file-metadata*
80
:rocksdb-num-files-at-level
81
:rocksdb-compression-ratio-at-level
82
:rocksdb-aggregated-table-properties-at-level
83
:rocksdb-concat-partial-merge
84
:rocksdb-concat-full-merge
86
:rocksdb-concat-delete-value
88
:rocksdb-slicetransform-create
89
:rocksdb-slicetransform-create-noop
90
:rocksdb-slicetransform-destroy
91
:rocksdb-slicetransform-create-fixed-prefix
92
:rocksdb-ingestexternalfileoptions-set-move-files
93
:rocksdb-ingestexternalfileoptions-set-snapshot-consistency
94
:rocksdb-ingestexternalfileoptions-set-allow-global-seqno
95
:rocksdb-ingestexternalfileoptions-set-allow-blocking-flush
96
:rocksdb-ingestexternalfileoptions-set-ingest-behind
97
:rocksdb-ingestexternalfileoptions-set-fail-if-not-bottommost-level
98
:rocksdb-backup-engine-options-set-backup-dir
99
:rocksdb-restore-options-set-keep-log-files
100
:rocksdb-hyper-clock-cache-options-set-estimated-entry-charge
101
:rocksdb-backup-engine-options-set-env
102
:rocksdb-hyper-clock-cache-options-set-capacity
103
:rocksdb-hyper-clock-cache-options-set-num-shard-bits
104
:rocksdb-hyper-clock-cache-options-set-memory-allocator
105
:rocksdb-wal-readoptions
106
:rocksdb-block-based-options-create
107
:rocksdb-block-based-options-set-top-level-index-pinning-tier
108
:rocksdb-block-based-options-set-partition-pinning-tier
109
:rocksdb-block-based-options-set-unpartition-pinning-tier
110
:rocksdb-block-based-options-destroy
111
:rocksdb-options-increase-parallelism
112
:rocksdb-options-set-uint64add-merge-operator
113
:rocksdb-options-enable-statistics
114
:rocksdb-options-set-db-paths
115
:rocksdb-options-set-env
116
:rocksdb-options-statistics-get-ticker-count
117
:rocksdb-options-set-plain-table-factory
118
:rocksdb-options-prepare-for-bulk-load
119
:rocksdb-options-set-ratelimiter
120
:rocksdb-options-optimize-level-style-compaction
121
:rocksdb-options-set-compression-per-level
122
:rocksdb-options-statistics-get-string
123
:rocksdb-options-set-cf-paths
124
:rocksdb-options-set-info-log
125
:rocksdb-options-statistics-get-histogram-data
126
:rocksdb-options-set-min-level-to-compress
127
:rocksdb-options-set-universal-compaction-options
128
:rocksdb-options-set-row-cache
129
:rocksdb-load-latest-options-destroy
130
:rocksdb-options-create-copy
131
:rocksdb-options-set-parallelism
132
:rocksdb-options-set-prepare-for-bulk-load
133
:rocksdb-options-set-enable-statistics
135
:rocksdb-enable-manual-compaction
136
:rocksdb-cancel-all-background-work
137
:rocksdb-disable-manual-compaction
139
:rocksdb-multi-get-with-ts
140
:rocksdb-multi-get-cf
141
:rocksdb-multi-get-cf-with-ts
142
:rocksdb-cache-create-lru
145
:rocksdb-property-value
146
:rocksdb-property-value-cf
147
:rocksdb-property-int
148
:rocksdb-property-int-cf
149
:rocksdb-create-column-families-destroy
150
:rocksdb-column-family-handle-get-id
151
:rocksdb-column-family-handle-destroy
152
:rocksdb-column-family-handle-get-name
153
:rocksdb-list-column-families-destroy
154
:rocksdb-create-iterator
155
:rocksdb-iter-seek-to-last
157
:rocksdb-iter-timestamp
158
:rocksdb-wal-iter-get-batch
159
:rocksdb-iter-destroy
162
:rocksdb-iter-get-error
163
:rocksdb-get-latest-sequence-number
164
:rocksdb-iter-seek-to-first
165
:rocksdb-iter-seek-for-prev
167
:rocksdb-wal-iter-next
168
:rocksdb-wal-iter-destroy
170
:rocksdb-create-iterator-cf
171
:rocksdb-wal-iter-valid
172
:rocksdb-backup-engine-close
173
:rocksdb-transaction-begin
174
:rocksdb-transactiondb-release-snapshot
175
:rocksdb-transactiondb-property-int
176
:rocksdb-transaction-set-savepoint
177
:rocksdb-transaction-create-iterator
178
:rocksdb-transactiondb-create-iterator
179
:rocksdb-optimistictransactiondb-get-base-db
180
:rocksdb-optimistictransaction-begin
181
:rocksdb-transactiondb-flush-wal
182
:rocksdb-transaction-close
183
:rocksdb-transactiondb-property-value
184
:rocksdb-transactiondb-get-base-db
185
:rocksdb-transaction-get-name
186
:rocksdb-transaction-destroy
187
:rocksdb-transaction-create-iterator-cf
188
:rocksdb-transactiondb-create-iterator-cf
189
:rocksdb-optimistictransactiondb-close-base-db
190
:rocksdb-optimistictransactiondb-close
191
:rocksdb-transactiondb-create-snapshot
192
:rocksdb-perfcontext-reset
193
:rocksdb-perfcontext-metric
194
:rocksdb-perfcontext-report
195
:rocksdb-perfcontext-destroy
196
:rocksdb-set-perf-level
197
:rocksdb-filterpolicy-destroy
198
:rocksdb-filterpolicy-create-ribbon
199
:rocksdb-filterpolicy-create-bloom
200
:rocksdb-filterpolicy-create-ribbon-hybrid
201
:rocksdb-filterpolicy-create-bloom-full
202
:rocksdb-create-snapshot
203
:rocksdb-snapshot-get-sequence-number
204
:rocksdb-release-snapshot
206
:rocksdb-sstfilewriter-create
207
:rocksdb-sstfilewriter-destroy
208
:rocksdb-sstfilewriter-create-with-comparator
209
:rocksdb-statistics-histogram-data-create
210
:rocksdb-statistics-histogram-data-get-median
211
:rocksdb-statistics-histogram-data-get-p99
212
:rocksdb-statistics-histogram-data-get-std-dev
213
:rocksdb-statistics-histogram-data-get-count
214
:rocksdb-statistics-histogram-data-get-min
215
:rocksdb-statistics-histogram-data-destroy
216
:rocksdb-statistics-histogram-data-get-p95
217
:rocksdb-statistics-histogram-data-get-average
218
:rocksdb-statistics-histogram-data-get-max
219
:rocksdb-statistics-histogram-data-get-sum
220
:rocksdb-mergeoperator-create
221
:rocksdb-full-merge-function
222
:rocksdb-delete-value-function
223
:rocksdb-mergeoperator-destroy
224
:rocksdb-partial-merge-function
225
:rocksdb-destructor-function
226
:rocksdb-get-column-family-metadata
227
:rocksdb-column-family-metadata-destroy
228
:rocksdb-column-family-metadata-get-file-count
229
:rocksdb-column-family-metadata-get-level-count
230
:rocksdb-level-metadata-destroy
231
:rocksdb-level-metadata-get-size
232
:rocksdb-level-metadata-get-sst-file-metadata
233
:rocksdb-sst-file-metadata-get-relative-filename
234
:rocksdb-sst-file-metadata-get-size
235
:rocksdb-sst-file-metadata-get-largestkey
236
:rocksdb-get-column-family-metadata-cf
237
:rocksdb-column-family-metadata-get-size
238
:rocksdb-column-family-metadata-get-name
239
:rocksdb-column-family-metadata-get-level-metadata
240
:rocksdb-level-metadata-get-level
241
:rocksdb-level-metadata-get-file-count
242
:rocksdb-sst-file-metadata-destroy
243
:rocksdb-sst-file-metadata-get-directory
244
:rocksdb-sst-file-metadata-get-smallestkey
245
:rocksdb-compactionfilter-set-ignore-snapshots
246
:rocksdb-compactionfiltercontext-is-full-compaction
247
:rocksdb-compactionfilter-destroy
248
:rocksdb-compactionfiltercontext-is-manual-compaction
249
:rocksdb-compactionfilter-create
250
:rocksdb-comparator-destroy
251
:rocksdb-comparator-create
252
:rocksdb-comparator-with-ts-create
253
:rocksdb-checkpoint-object-destroy
254
:rocksdb-name-function
255
:rocksdb-concat-merge-name
256
:rocksdb-compare-never-without-ts
257
:rocksdb-compare-never-with-ts
258
:rocksdb-compare-never-name
259
:rocksdb-compare-never
260
:rocksdb-compare-without-ts-function
261
:rocksdb-compare-function
262
:rocksdb-create-compaction-filter
263
:rocksdb-create-compaction-filter-function
264
:rocksdb-get-default-column-family-handle
265
:rocksdb-get-db-identity
266
:rocksdb-batched-multi-get-cf
267
:rocksdb-key-may-exist
268
:rocksdb-key-may-exist-cf
269
:rocksdb-backup-engine-get-backup-info
270
:rocksdb-backup-engine-info-count
271
:rocksdb-backup-engine-info-timestamp
272
:rocksdb-backup-engine-info-backup-id
273
:rocksdb-backup-engine-info-size
274
:rocksdb-backup-engine-info-num-files
275
:rocksdb-backup-engine-info-destroy
277
:rocksdb-get-updates-since
278
:rocksdb-create-iterators
279
:rocksdb-create-compaction-filter-never
280
:rocksdb-compacitonfilterfactory-destroy
281
:rocksdb-compactionfilterfactory-create
282
:rocksdb-filter-never
283
:rocksdb-delete-value
284
:define-merge-operator
285
:*rocksdb-partial-merge-lambda-list*
286
:*rocksdb-full-merge-lambda-list*
287
:define-partial-merge-op
288
:define-full-merge-op
289
:rocksdb-logger-destroy
290
:rocksdb-log-function
291
:rocksdb-logger-create-callback-logger
293
:rocksdb-logger-create-stderr-logger
294
:rocksdb-writebatch-create
295
:rocksdb-writebatch-create-from
296
:rocksdb-writebatch-create-with-params
297
:rocksdb-writebatch-destroy
298
:rocksdb-writebatch-delete-cf-with-ts
299
:rocksdb-writebatch-delete-cf
300
:rocksdb-writebatch-delete
301
:rocksdb-writebatch-putv-cf
302
:rocksdb-writebatch-putv
303
:rocksdb-writebatch-put-cf-with-ts
304
:rocksdb-writebatch-put-cf
305
:rocksdb-writebatch-put
306
:rocksdb-writebatch-count
307
:rocksdb-writebatch-clear
308
:rocksdb-writebatch-wi-create-with-params
309
:rocksdb-writebatch-wi-create-from
310
:rocksdb-writebatch-wi-create
311
:rocksdb-transform-function
312
:rocksdb-in-domain-function
313
:rocksdb-in-range-function
314
:rocksdb-mergeoperator-function
315
:rocksdb-logger-function
316
:rocksdb-compactionfilter-function
317
:rocksdb-comparator-function
318
:rocksdb-get-ts-size-function
319
:rocksdb-merge-cf-function
320
:rocksdb-delete-cf-function
321
:rocksdb-put-cf-function
322
:rocksdb-delete-function
323
:rocksdb-put-function
324
:rocksdb-open-column-families
325
:rocksdb-create-default-env
326
:rocksdb-create-mem-env
327
:rocksdb-env-set-background-threads
328
:rocksdb-env-get-background-threads
330
:rocksdb-create-dir-if-missing
331
:rocksdb-options-set-wal-dir
334
:rocksdb-backup-engine
335
:rocksdb-backup-engine-info
336
:rocksdb-memory-allocator
338
:rocksdb-compactionfilter
339
:rocksdb-compactionfiltercontext
340
:rocksdb-compactionfilterfactory
345
:rocksdb-filterpolicy
347
:rocksdb-mergeoperator
350
:rocksdb-slicetransform
352
:rocksdb-writeablefile
354
:rocksdb-writebatch-wi
356
:rocksdb-column-family-handle
357
:rocksdb-column-family-metadata
358
:rocksdb-level-metadata
359
:rocksdb-sst-file-metadata
360
:rocksdb-sstfilewriter
363
:rocksdb-pinnableslice
364
:rocksdb-transactiondb
365
:rocksdb-optimistictransactiondb
368
:rocksdb-wal-iterator
369
:rocksdb-memory-comsumers
370
:rocksdb-memory-usage
371
:rocksdb-statistics-histogram-data
372
:rocksdb-block-based-table-options
373
:rocksdb-cuckoo-table-options
374
:rocksdb-in-range-default
375
:rocksdb-in-domain-default
376
:rocksdb-transform-default
378
:define-slicetransform
379
:rocksdb-index-full-merge
380
:rocksdb-index-partial-merge
381
:rocksdb-index-merge-name
382
:rocksdb-options-set-merge-operator
383
:rocksdb-readoptions-set-auto-readahead-size
384
:rocksdb-readoptions-set-iter-start-ts
385
:rocksdb-readoptions-set-timestamp
386
:rocksdb-readoptions-set-ignore-range-deletions
387
:rocksdb-readoptions-set-prefix-same-as-start
388
:rocksdb-readoptions-set-readahead-size
389
:rocksdb-readoptions-set-iterate-lower-bound
390
:rocksdb-readoptions-set-iterate-upper-bound
391
:rocksdb-readoptions-set-snapshot
395
:*rocksdb-transform-lambda-list*
396
:*rocksdb-in-domain-lambda-list*
397
:*rocksdb-in-range-lambda-list*
398
:define-in-range-function
399
:define-in-domain-function
400
:define-transform-function
401
:define-compaction-filter
402
:define-comparator-with-ts
404
:rocksdb-compare-ts-function
405
:rocksdb-transactiondb-close-base-db
406
:rocksdb-transactiondb-get-prepared-transactions
407
:rocksdb-transactiondb-close
408
:*rocksdb-destructor-callback*
409
:*rocksdb-delete-value-callback*
410
:*rocksdb-name-callback*
411
:*rocksdb-log-callback*
412
:rocksdb-compaction-level
413
:*rocksdb-readoptions*
414
:*rocksdb-writeoptions*
415
:*rocksdb-flushoptions*
416
:*rocksdb-lru-cache-options*
417
:*rocksdb-compactoptions*
418
:*rocksdb-backup-engine-options*
419
:*rocksdb-set-only-backup-engine-options*
420
:*rocksdb-set-only-readoptions*
421
:*rocksdb-set-only-options*
424
:rocksdb-transactiondb-get-pinned-cf
425
:rocksdb-options-set-prefix-extractor
426
:rocksdb-compression-type
427
:rocksdb-compaction-pri
428
:rocksdb-compaction-type
429
:rocksdb-writebatch-iterate
430
:rocksdb-writebatch-put-log-data
431
:rocksdb-writebatch-iterate-cf
432
:rocksdb-writebatch-data
433
:rocksdb-writebatch-set-savepoint
434
:rocksdb-writebatch-rollback-to-savepoint
435
:rocksdb-writebatch-pop-savepoint
436
:rocksdb-writebatch-update-timestamps
437
:rocksdb-writebatch-singledelete
438
:rocksdb-writebatch-singledelete-cf
439
:rocksdb-writebatch-singledelete-cf-with-ts
440
:rocksdb-writebatch-deletev
441
:rocksdb-writebatch-deletev-cf
442
:rocksdb-writebatch-delete-range
443
:rocksdb-writebatch-delete-range-cf
444
:rocksdb-writebatch-delete-rangev
445
:rocksdb-writebatch-delete-rangev-cf
446
:rocksdb-writebatch-merge
447
:rocksdb-writebatch-merge-cf
448
:rocksdb-writebatch-mergev
449
:rocksdb-writebatch-mergev-cf
450
:rocksdb-writebatch-wi-destroy
451
:rocksdb-writebatch-wi-clear
452
:rocksdb-writebatch-wi-count
453
:rocksdb-writebatch-wi-put-log-data
454
:rocksdb-writebatch-wi-iterate
455
:rocksdb-writebatch-wi-data
456
:rocksdb-writebatch-wi-get-from-batch
457
:rocksdb-writebatch-wi-get-from-batch-cf
458
:rocksdb-writebatch-wi-get-from-batch-and-db
459
:rocksdb-writebatch-wi-get-from-batch-and-db-cf
460
:rocksdb-write-writebatch-wi
461
:rocksdb-writebatch-wi-create-iterator-with-base
462
:rocksdb-writebatch-wi-create-iterator-with-base-cf
463
:rocksdb-writebatch-wi-update-timestamps
464
:rocksdb-writebatch-wi-put
465
:rocksdb-writebatch-wi-put-cf
466
:rocksdb-writebatch-wi-putv
467
:rocksdb-writebatch-wi-putv-cf
468
:rocksdb-writebatch-wi-merge
469
:rocksdb-writebatch-wi-merge-cf
470
:rocksdb-writebatch-wi-mergev
471
:rocksdb-writebatch-wi-mergev-cf
472
:rocksdb-writebatch-wi-delete
473
:rocksdb-writebatch-wi-singledelete
474
:rocksdb-writebatch-wi-delete-cf
475
:rocksdb-writebatch-wi-singledelete-cf
476
:rocksdb-writebatch-wi-deletev
477
:rocksdb-writebatch-wi-deletev-cf
478
:rocksdb-writebatch-wi-delete-range
479
:rocksdb-writebatch-wi-delete-range-cf
480
:rocksdb-writebatch-wi-delete-rangev
481
:rocksdb-writebatch-wi-delete-rangev-cf
482
:rocksdb-writebatch-wi-set-save-point
483
:rocksdb-writebatch-wi-rollback-to-save-point
484
:rocksdb-transaction-get-writebach-wi
485
:rocksdb-transaction-rollback-to-savepoint
486
:rocksdb-transaction-rollback
487
:rocksdb-transaction-commit
488
:rocksdb-transaction-prepare
489
:rocksdb-transaction-set-name
490
:rocksdb-transaction-delete
491
:rocksdb-transaction-delete-cf
492
:rocksdb-dbpath-create
493
:rocksdb-dbpath-destroy
494
:rocksdb-sst-file-manager
495
:*rocksdb-ingestexternalfileoptions*
496
:rocksdb-writebatch-wi-create-iterator-with-base-readopts
497
:rocksdb-writebatch-wi-create-iterator-with-base-cf-readopts))
499
(in-package :rocksdb)
501
(define-alien-loader rocksdb)
503
(define-condition rocksdb-condition () ())
505
(define-condition rocksdb-c-error (rocksdb-condition std:std-error) ())
507
(defun rocksdb-c-error (errptr)
508
(error 'rocksdb-c-error :message (deref (sap-alien errptr (* c-string)))))