changelog shortlog graph tags branches changeset files revisions annotate raw help

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

changeset 616: c48704d7b06f
parent: 9238c034b97e
author: Richard Westhaver <ellis@rwest.io>
date: Tue, 20 Aug 2024 21:02:58 -0400
permissions: -rw-r--r--
description: writebatch callbacks and fixes
1 ;;; writebatch.lisp --- RocksDB Writebatches
2 
3 ;; RocksDB Writebatch Lisp FFI
4 
5 ;;; Code:
6 (in-package :rocksdb)
7 
8 ;;; Types
9 (define-alien-type rocksdb-put-function
10  (function void
11  (* t)
12  (array unsigned-char)
13  size-t
14  (array unsigned-char)
15  size-t))
16 
17 (define-alien-type rocksdb-deleted-function
18  (function void
19  (* t)
20  (array unsigned-char)
21  size-t))
22 
23 (define-alien-type rocksdb-put-cf-function
24  (function void
25  (* t)
26  (unsigned 32)
27  (array unsigned-char)
28  size-t
29  (array unsigned-char)
30  size-t))
31 
32 (define-alien-type rocksdb-deleted-cf-function
33  (function void
34  (* t)
35  (unsigned 32)
36  (array unsigned-char)
37  size-t))
38 
39 (define-alien-type rocksdb-merge-cf-function
40  (function void
41  (* t)
42  (unsigned 32)
43  (array unsigned-char)
44  size-t
45  (array unsigned-char)
46  size-t))
47 
48 (define-alien-type rocksdb-get-ts-size-function
49  (function size-t
50  (* t)
51  (unsigned 32)))
52 
53 ;;; Alien Functions
54 (define-alien-routine rocksdb-writebatch-create (* rocksdb-writebatch))
55 (define-alien-routine rocksdb-writebatch-create-from (* rocksdb-writebatch)
56  (rep c-string)
57  (size size-t))
58 
59 (define-alien-routine rocksdb-writebatch-create-with-params (* rocksdb-writebatch)
60  (reserved-bytes size-t)
61  (max-bytes size-t)
62  (protection-bytes-per-key size-t)
63  (default-cf-ts-sz size-t))
64 
65 (define-alien-routine rocksdb-writebatch-destroy void (batch (* rocksdb-writebatch)))
66 
67 (define-alien-routine rocksdb-writebatch-clear void (b (* rocksdb-writebatch)))
68 (define-alien-routine rocksdb-writebatch-count int (b (* rocksdb-writebatch)))
69 
70 (define-alien-routine rocksdb-writebatch-put-log-data void
71  (batch (* rocksdb-writebatch))
72  (blob (array unsigned-char))
73  (len size-t))
74 
75 (define-alien-routine rocksdb-writebatch-iterate void
76  (batch (* rocksdb-writebatch))
77  (state (* t))
78  (put (* rocksdb-put-function))
79  (deleted (* rocksdb-deleted-function)))
80 
81 (define-alien-routine rocksdb-writebatch-iterate-cf void
82  (batch (* rocksdb-writebatch))
83  (state (* t))
84  (put-cf (* rocksdb-put-cf-function))
85  (deleted-cf (* rocksdb-deleted-cf-function))
86  (merge-cf (* rocksdb-merge-cf-function)))
87 
88 (define-alien-routine rocksdb-writebatch-data (array unsigned-char)
89  (batch (* rocksdb-writebatch))
90  (size (* size-t)))
91 
92 (define-alien-routine rocksdb-writebatch-set-save-point void
93  (batch (* rocksdb-writebatch)))
94 
95 (def-with-errptr rocksdb-writebatch-rollback-to-save-point void
96  (batch (* rocksdb-writebatch)))
97 
98 (def-with-errptr rocksdb-writebatch-pop-save-point void
99  (batch (* rocksdb-writebatch)))
100 
101 (def-with-errptr rocksdb-writebatch-update-timestamps void
102  (batch (* rocksdb-writebatch))
103  (ts (array unsigned-char))
104  (tslen size-t)
105  (state (* t))
106  (get-ts-size (* rocksdb-get-ts-size-function)))
107 
108 ;; put
109 (define-alien-routine rocksdb-writebatch-put void
110  (batch (* rocksdb-writebatch))
111  (key (array unsigned-char))
112  (klen size-t)
113  (val (array unsigned-char))
114  (vlen size-t))
115 
116 (define-alien-routine rocksdb-writebatch-put-cf void
117  (batch (* rocksdb-writebatch))
118  (cf (* rocksdb-column-family-handle))
119  (key (array unsigned-char))
120  (klen size-t)
121  (val (array unsigned-char))
122  (vlen size-t))
123 
124 (define-alien-routine rocksdb-writebatch-put-cf-with-ts void
125  (batch (* rocksdb-writebatch))
126  (cf (* rocksdb-column-family-handle))
127  (key (array unsigned-char))
128  (klen size-t)
129  (ts (array unsigned-char))
130  (tslen size-t)
131  (val (array unsigned-char))
132  (vlen size-t))
133 
134 (define-alien-routine rocksdb-writebatch-putv void
135  (batch (* rocksdb-writebatch))
136  (num-keys int)
137  (keys-list (array (array unsigned-char)))
138  (keys-sizes (array size-t))
139  (num-values int)
140  (values-list (array (array unsigned-char)))
141  (values-list-sizes (array size-t)))
142 
143 (define-alien-routine rocksdb-writebatch-putv-cf void
144  (batch (* rocksdb-writebatch))
145  (cf (* rocksdb-column-family-handle))
146  (num-keys int)
147  (keys-list (array (array unsigned-char)))
148  (keys-sizes (array size-t))
149  (num-values int)
150  (values-list (array (array unsigned-char)))
151  (values-list-sizes (array size-t)))
152 
153 ;; delete
154 (define-alien-routine rocksdb-writebatch-delete void
155  (batch (* rocksdb-writebatch))
156  (key (array unsigned-char))
157  (klen size-t))
158 
159 (define-alien-routine rocksdb-writebatch-singledelete void
160  (batch (* rocksdb-writebatch))
161  (key (array unsigned-char))
162  (klen size-t))
163 
164 (define-alien-routine rocksdb-writebatch-delete-cf void
165  (batch (* rocksdb-writebatch))
166  (cf (* rocksdb-column-family-handle))
167  (key (array unsigned-char))
168  (klen size-t))
169 
170 (define-alien-routine rocksdb-writebatch-singledelete-cf void
171  (batch (* rocksdb-writebatch))
172  (cf (* rocksdb-column-family-handle))
173  (key (array unsigned-char))
174  (klen size-t))
175 
176 (define-alien-routine rocksdb-writebatch-singledelete-cf-with-ts void
177  (batch (* rocksdb-writebatch))
178  (cf (* rocksdb-column-family-handle))
179  (key (array unsigned-char))
180  (klen size-t)
181  (ts (array unsigned-char))
182  (tslen size-t))
183 
184 (define-alien-routine rocksdb-writebatch-delete-cf-with-ts void
185  (batch (* rocksdb-writebatch))
186  (cf (* rocksdb-column-family-handle))
187  (key (array unsigned-char))
188  (klen size-t)
189  (ts (array unsigned-char))
190  (tslen size-t))
191 
192 (define-alien-routine rocksdb-writebatch-deletev void
193  (batch (* rocksdb-writebatch))
194  (num-keys int)
195  (keys-list (array (array unsigned-char)))
196  (keys-list-sizes (array size-t)))
197 
198 (define-alien-routine rocksdb-writebatch-deletev-cf void
199  (batch (* rocksdb-writebatch))
200  (cf (* rocksdb-column-family-handle))
201  (num-keys int)
202  (keys-list (array (array unsigned-char)))
203  (keys-list-sizes (array size-t)))
204 
205 (define-alien-routine rocksdb-writebatch-delete-range void
206  (batch (* rocksdb-writebatch))
207  (start-key (array unsigned-char))
208  (start-key-len size-t)
209  (end-key (array unsigned-char))
210  (end-key-len size-t))
211 
212 (define-alien-routine rocksdb-writebatch-delete-range-cf void
213  (batch (* rocksdb-writebatch))
214  (cf (* rocksdb-column-family-handle))
215  (start-key (array unsigned-char))
216  (start-key-len size-t)
217  (end-key (array unsigned-char))
218  (end-key-len size-t))
219 
220 (define-alien-routine rocksdb-writebatch-delete-rangev void
221  (batch (* rocksdb-writebatch))
222  (num-keys int)
223  (start-keys-list (array (array unsigned-char)))
224  (start-keys-list-sizes (array size-t))
225  (end-keys-list (array (array unsigned-char)))
226  (end-keys-list-sizes (array size-t)))
227 
228 (define-alien-routine rocksdb-writebatch-delete-rangev-cf void
229  (batch (* rocksdb-writebatch))
230  (cf (* rocksdb-column-family-handle))
231  (num-keys int)
232  (start-keys-list (array (array unsigned-char)))
233  (start-keys-list-sizes (array size-t))
234  (end-keys-list (array (array unsigned-char)))
235  (end-keys-list-sizes (array size-t)))
236 
237 ;; merge
238 (define-alien-routine rocksdb-writebatch-merge void
239  (batch (* rocksdb-writebatch))
240  (key (array unsigned-char))
241  (klen size-t)
242  (val (array unsigned-char))
243  (vlen size-t))
244 
245 (define-alien-routine rocksdb-writebatch-merge-cf void
246  (batch (* rocksdb-writebatch))
247  (cf (* rocksdb-column-family-handle))
248  (key (array unsigned-char))
249  (klen size-t)
250  (val (array unsigned-char))
251  (vlen size-t))
252 
253 (define-alien-routine rocksdb-writebatch-mergev void
254  (batch (* rocksdb-writebatch))
255  (num-keys int)
256  (keys-list (array (array unsigned-char)))
257  (keys-list-sizes (array size-t))
258  (num-values int)
259  (values-list (array (array unsigned-char)))
260  (values-list-sizes (array size-t)))
261 
262 (define-alien-routine rocksdb-writebatch-mergev-cf void
263  (batch (* rocksdb-writebatch))
264  (cf (* rocksdb-column-family-handle))
265  (num-keys int)
266  (keys-list (array (array unsigned-char)))
267  (keys-list-sizes (array size-t))
268  (num-values int)
269  (values-list (array (array unsigned-char)))
270  (values-list-sizes (array size-t)))
271 
272 ;;; with-index (wi)
273 (define-alien-routine rocksdb-writebatch-wi-create (* rocksdb-writebatch-wi)
274  (reserved-bytes size-t)
275  (overwrite-keys unsigned-char))
276 
277 (define-alien-routine rocksdb-writebatch-wi-create-from (* rocksdb-writebatch-wi)
278  (rep (array unsigned-char))
279  (size size-t))
280 
281 (define-alien-routine rocksdb-writebatch-wi-create-with-params (* rocksdb-writebatch-wi)
282  (backup-index-comparator (* rocksdb-comparator))
283  (reserved-bytes size-t)
284  (overwrite-key unsigned-char)
285  (max-bytes size-t)
286  (protection-bytes-per-key size-t))
287 
288 (define-alien-routine rocksdb-writebatch-wi-destroy void
289  (batch (* rocksdb-writebatch-wi)))
290 
291 (define-alien-routine rocksdb-writebatch-wi-clear void
292  (batch (* rocksdb-writebatch-wi)))
293 
294 (define-alien-routine rocksdb-writebatch-wi-count void
295  (batch (* rocksdb-writebatch-wi)))
296 
297 (define-alien-routine rocksdb-writebatch-wi-put-log-data void
298  (batch (* rocksdb-writebatch-wi))
299  (blob (array unsigned-char))
300  (len size-t))
301 
302 (define-alien-routine rocksdb-writebatch-wi-iterate void
303  (batch (* rocksdb-writebatch-wi))
304  (state (* t))
305  (put (* rocksdb-put-function))
306  (deleted (* rocksdb-deleted-function)))
307 
308 (define-alien-routine rocksdb-writebatch-wi-data (array unsigned-char)
309  (batch (* rocksdb-writebatch-wi))
310  (size (* size-t)))
311 
312 (define-alien-routine rocksdb-writebatch-wi-set-save-point void
313  (batch (* rocksdb-writebatch-wi)))
314 
315 (def-with-errptr rocksdb-writebatch-wi-rollback-to-save-point void
316  (batch (* rocksdb-writebatch-wi)))
317 
318 (def-with-errptr rocksdb-writebatch-wi-get-from-batch (array unsigned-char)
319  (batch (* rocksdb-writebatch-wi))
320  (opts (* rocksdb-options))
321  (key (array unsigned-char))
322  (keylen size-t)
323  (vallen (* size-t)))
324 
325 (def-with-errptr rocksdb-writebatch-wi-get-from-batch-cf (array unsigned-char)
326  (batch (* rocksdb-writebatch-wi))
327  (cf (* rocksdb-column-family-handle))
328  (opts (* rocksdb-options))
329  (key (array unsigned-char))
330  (keylen size-t)
331  (vallen (* size-t)))
332 
333 (def-with-errptr rocksdb-writebatch-wi-get-from-batch-and-db (array unsigned-char)
334  (batch (* rocksdb-writebatch-wi))
335  (db (* rocksdb))
336  (readopts (* rocksdb-readoptions))
337  (key (array unsigned-char))
338  (keylen size-t)
339  (vallen (* size-t)))
340 
341 (def-with-errptr rocksdb-writebatch-wi-get-from-batch-and-db-cf (array unsigned-char)
342  (batch (* rocksdb-writebatch-wi))
343  (db (* rocksdb))
344  (readopts (* rocksdb-readoptions))
345  (cf (* rocksdb-column-family-handle))
346  (key (array unsigned-char))
347  (keylen size-t)
348  (vallen (* size-t)))
349 
350 (def-with-errptr rocksdb-write-writebatch-wi void
351  (db (* rocksdb))
352  (wopts (* rocksdb-writeoptions))
353  (wbwi (* rocksdb-writebatch-wi)))
354 
355 (define-alien-routine rocksdb-writebatch-wi-create-iterator-with-base (* rocksdb-iterator)
356  (wbwi (* rocksdb-writebatch-wi))
357  (base-iterator (* rocksdb-iterator)))
358 
359 (define-alien-routine rocksdb-writebatch-wi-create-iterator-with-base-cf (* rocksdb-iterator)
360  (wbwi (* rocksdb-writebatch-wi))
361  (base-iterator (* rocksdb-iterator))
362  (cf (* rocksdb-column-family-handle)))
363 
364 (def-with-errptr rocksdb-writebatch-wi-update-timestamps void
365  (wbwi (* rocksdb-writebatch-wi))
366  (ts (array unsigned-char))
367  (tslen size-t)
368  (state (* t))
369  (get-ts-size (* rocksdb-get-ts-size-function)))
370 
371 (define-alien-routine rocksdb-writebatch-wi-put void
372  (batch (* rocksdb-writebatch-wi))
373  (key (array unsigned-char))
374  (klen size-t)
375  (val (array unsigned-char))
376  (vlen size-t))
377 
378 (define-alien-routine rocksdb-writebatch-wi-put-cf void
379  (batch (* rocksdb-writebatch-wi))
380  (cf (* rocksdb-column-family-handle))
381  (key (array unsigned-char))
382  (klen size-t)
383  (val (array unsigned-char))
384  (vlen size-t))
385 
386 (define-alien-routine rocksdb-writebatch-wi-putv void
387  (batch (* rocksdb-writebatch-wi))
388  (num-keys int)
389  (keys-list (array (array unsigned-char)))
390  (keys-list-sizes (array size-t))
391  (num-values int)
392  (values-list (array (array unsigned-char)))
393  (values-list-sizes (array size-t)))
394 
395 (define-alien-routine rocksdb-writebatch-wi-putv-cf void
396  (batch (* rocksdb-writebatch-wi))
397  (cf (* rocksdb-column-family-handle))
398  (num-keys int)
399  (keys-list (array (array unsigned-char)))
400  (keys-list-sizes (array size-t))
401  (num-values int)
402  (values-list (array (array unsigned-char)))
403  (values-list-sizes (array size-t)))
404 
405 (define-alien-routine rocksdb-writebatch-wi-merge void
406  (batch (* rocksdb-writebatch-wi))
407  (key (array unsigned-char))
408  (klen size-t)
409  (val (array unsigned-char))
410  (vlen size-t))
411 
412 (define-alien-routine rocksdb-writebatch-wi-merge-cf void
413  (batch (* rocksdb-writebatch-wi))
414  (cf (* rocksdb-column-family-handle))
415  (key (array unsigned-char))
416  (klen size-t)
417  (val (array unsigned-char))
418  (vlen size-t))
419 
420 (define-alien-routine rocksdb-writebatch-wi-mergev void
421  (batch (* rocksdb-writebatch-wi))
422  (num-keys int)
423  (keys-list (array (array unsigned-char)))
424  (keys-list-sizes (array size-t))
425  (num-values int)
426  (values-list (array (array unsigned-char)))
427  (values-list-sizes (array size-t)))
428 
429 (define-alien-routine rocksdb-writebatch-wi-mergev-cf void
430  (batch (* rocksdb-writebatch-wi))
431  (cf (* rocksdb-column-family-handle))
432  (num-keys int)
433  (keys-list (array (array unsigned-char)))
434  (keys-list-sizes (array size-t))
435  (num-values int)
436  (values-list (array (array unsigned-char)))
437  (values-list-sizes (array size-t)))
438 
439 (define-alien-routine rocksdb-writebatch-wi-delete void
440  (batch (* rocksdb-writebatch-wi))
441  (key (array unsigned-char))
442  (klen size-t))
443 
444 (define-alien-routine rocksdb-writebatch-wi-singledelete void
445  (batch (* rocksdb-writebatch-wi))
446  (key (array unsigned-char))
447  (klen size-t))
448 
449 (define-alien-routine rocksdb-writebatch-wi-delete-cf void
450  (batch (* rocksdb-writebatch-wi))
451  (cf (* rocksdb-column-family-handle))
452  (key (array unsigned-char))
453  (klen size-t))
454 
455 (define-alien-routine rocksdb-writebatch-wi-singledelete-cf void
456  (batch (* rocksdb-writebatch-wi))
457  (cf (* rocksdb-column-family-handle))
458  (key (array unsigned-char))
459  (klen size-t))
460 
461 (define-alien-routine rocksdb-writebatch-wi-deletev void
462  (batch (* rocksdb-writebatch-wi))
463  (num-keys int)
464  (keys-list (array (array unsigned-char)))
465  (keys-list-sizes (array size-t)))
466 
467 (define-alien-routine rocksdb-writebatch-wi-deletev-cf void
468  (batch (* rocksdb-writebatch-wi))
469  (cf (* rocksdb-column-family-handle))
470  (num-keys int)
471  (keys-list (array (array unsigned-char)))
472  (keys-list-sizes (array size-t)))
473 
474 ;;; DO NOT USE
475 (define-alien-routine rocksdb-writebatch-wi-delete-range void
476  (batch (* rocksdb-writebatch-wi))
477  (start-key (array unsigned-char))
478  (start-key-len size-t)
479  (end-key (array unsigned-char))
480  (end-key-len size-t))
481 
482 (define-alien-routine rocksdb-writebatch-wi-delete-range-cf void
483  (batch (* rocksdb-writebatch-wi))
484  (cf (* rocksdb-column-family-handle))
485  (start-key (array unsigned-char))
486  (start-key-len size-t)
487  (end-key (array unsigned-char))
488  (end-key-len size-t))
489 
490 (define-alien-routine rocksdb-writebatch-wi-delete-rangev void
491  (batch (* rocksdb-writebatch-wi))
492  (start-keys-list (array (array unsigned-char)))
493  (start-keys-list-sizes (array size-t))
494  (end-keys-list (array (array unsigned-char)))
495  (end-keys-list-sizes (array size-t)))
496 
497 (define-alien-routine rocksdb-writebatch-wi-delete-rangev-cf void
498  (batch (* rocksdb-writebatch-wi))
499  (cf (* rocksdb-column-family-handle))
500  (start-keys-list (array (array unsigned-char)))
501  (start-keys-list-sizes (array size-t))
502  (end-keys-list (array (array unsigned-char)))
503  (end-keys-list-sizes (array size-t)))