changelog shortlog graph tags branches files raw help

Mercurial > core / changeset: more rocksdb work, slice -> slicetransform

changeset 611: 57813b8ee029
parent 610: 3dc5c63cdba7
child 612: 9238c034b97e
author: Richard Westhaver <ellis@rwest.io>
date: Mon, 19 Aug 2024 19:25:55 -0400
files: emacs/lib/publish.el emacs/lib/ulang.el lisp/ffi/rocksdb/compaction.lisp lisp/ffi/rocksdb/macs.lisp lisp/ffi/rocksdb/merge.lisp lisp/ffi/rocksdb/pkg.lisp lisp/ffi/rocksdb/rocksdb.asd lisp/ffi/rocksdb/slice.lisp lisp/ffi/rocksdb/slicetransform.lisp lisp/ffi/rocksdb/tests.lisp lisp/ffi/rocksdb/vars.lisp lisp/ffi/rocksdb/writebatch.lisp
description: more rocksdb work, slice -> slicetransform
     1.1--- a/emacs/lib/publish.el	Sun Aug 18 22:00:23 2024 -0400
     1.2+++ b/emacs/lib/publish.el	Mon Aug 19 19:25:55 2024 -0400
     1.3@@ -185,7 +185,7 @@
     1.4             (inc-suffixf ref)))
     1.5         ref)))
     1.6 
     1.7-(advice-add #'org-export-get-reference :override #'org-export-get-reference-title)
     1.8+;; (advice-add #'org-export-get-reference :override #'org-export-get-reference-title)
     1.9 
    1.10 ;;;###autoload
    1.11 (defun publish (&optional sitemap static force async)
     2.1--- a/emacs/lib/ulang.el	Sun Aug 18 22:00:23 2024 -0400
     2.2+++ b/emacs/lib/ulang.el	Mon Aug 19 19:25:55 2024 -0400
     2.3@@ -54,7 +54,7 @@
     2.4         (sequence "FIND(q!)" "READ(r@!)" "WATCH(W@!)" "|")
     2.5         (sequence "RESEARCH(s!)" "RECORD(e!)" "|")
     2.6         (sequence "OUTLINE(O!)" "RESEARCH(A!)" "DRAFT(M!)" "REVIEW(V!)" "|")
     2.7-        (type "FIXME(i!)" "TEST(t!)" "BENCH(b!)" "DEPLOY(D!)" "RUN(X!)" "LOG(L!)" "|")
     2.8+        (type "FIXME(i!)" "TEST(T!)" "BENCH(b!)" "DEPLOY(D!)" "RUN(X!)" "LOG(L!)" "|")
     2.9         (type "KLUDGE(k@!)" "HACK(h!)" "NOTE(n!)" "CODE(c!)" "LINK(l!)" "|")
    2.10         (type "PROJECT(p!)" "PRODUCT(P!)" "SPRINT(S!)" "RELEASE(R!)" "|")
    2.11         (type "GOTO(g!)" "|")
     3.1--- a/lisp/ffi/rocksdb/compaction.lisp	Sun Aug 18 22:00:23 2024 -0400
     3.2+++ b/lisp/ffi/rocksdb/compaction.lisp	Mon Aug 19 19:25:55 2024 -0400
     3.3@@ -89,8 +89,8 @@
     3.4      (key-length size-t)
     3.5      (existing-val (array unsigned-char))
     3.6      (existing-val-length size-t)
     3.7-     (new-val (array unsigned-char))
     3.8-     (new-val-length size-t)
     3.9+     (new-val (* (array unsigned-char)))
    3.10+     (new-val-length (* size-t))
    3.11      (value-changed (* unsigned-char)))
    3.12   (declare (ignore state level key key-length existing-val existing-val-length new-val new-val-length value-changed))
    3.13   0)
     4.1--- a/lisp/ffi/rocksdb/macs.lisp	Sun Aug 18 22:00:23 2024 -0400
     4.2+++ b/lisp/ffi/rocksdb/macs.lisp	Mon Aug 19 19:25:55 2024 -0400
     4.3@@ -5,6 +5,20 @@
     4.4 ;;; Code:
     4.5 (in-package :rocksdb)
     4.6 
     4.7+(deftype rocksdb-mergeoperator-function ()
     4.8+  '(function (octet-vector (or octet-vector null) &rest t) (or null octet-vector)))
     4.9+
    4.10+(deftype rocksdb-comparator-function ()
    4.11+  '(function (octet-vector octet-vector) (integer -1 1)))
    4.12+
    4.13+(deftype rocksdb-compactionfilter-function ()
    4.14+  ;;           level              key           val           new         changed
    4.15+  '(function ((unsigned-byte 32) octet-vector octet-vector octet-vector) boolean))
    4.16+
    4.17+(deftype rocksdb-logger-function ()
    4.18+  '(function (unsigned-byte string) (values)))
    4.19+
    4.20+;;; Merge Ops
    4.21 (defmacro define-full-merge-op (name &body body)
    4.22   `(define-alien-callable ,name (* t)
    4.23        ,*rocksdb-full-merge-lambda-list*
    4.24@@ -15,9 +29,6 @@
    4.25        ,*rocksdb-partial-merge-lambda-list*
    4.26      ,@body))
    4.27 
    4.28-(defvar *rocksdb-destructor-callback* (alien-callable-function 'rocksdb-destructor))
    4.29-(defvar *rocksdb-delete-callback* (alien-callable-function 'rocksdb-delete-value))
    4.30-
    4.31 (defmacro define-merge-operator (name state &key full
    4.32                                                  partial
    4.33                                                  (destructor 'rocksdb-destructor)
    4.34@@ -38,5 +49,3 @@
    4.35                                          (alien-sap (alien-callable-function ',pmerge))
    4.36                                          (alien-sap (alien-callable-function ',delete))
    4.37                                          (alien-sap (alien-callable-function ',mname)))))))
    4.38-
    4.39-
     5.1--- a/lisp/ffi/rocksdb/merge.lisp	Sun Aug 18 22:00:23 2024 -0400
     5.2+++ b/lisp/ffi/rocksdb/merge.lisp	Mon Aug 19 19:25:55 2024 -0400
     5.3@@ -122,10 +122,6 @@
     5.4 
     5.5 (define-alien-routine rocksdb-mergeoperator-destroy void (self (* rocksdb-mergeoperator)))
     5.6 
     5.7-;; TODO 2023-12-11: 
     5.8-(deftype rocksdb-mergeoperator-function ()
     5.9-  '(function (octet-vector (or octet-vector null) &rest t) (or null octet-vector)))
    5.10-
    5.11 (define-alien-callable rocksdb-destructor void ((self (* t)))
    5.12   (free-alien self)
    5.13   (values))
    5.14@@ -148,7 +144,7 @@
    5.15      (success (array unsigned-char))
    5.16      (new-vlen (* size-t)))
    5.17   (log:debug! (list key klen existing-val existing-vlen ops ops-length num-ops success new-vlen))
    5.18-  1)
    5.19+  t)
    5.20 
    5.21 (define-alien-callable rocksdb-concat-partial-merge boolean
    5.22     ((key (array unsigned-char))
    5.23@@ -159,7 +155,7 @@
    5.24      (success (array unsigned-char))
    5.25      (new-vlen (* size-t)))
    5.26   (log:debug! (list key klen ops ops-length num-ops success new-vlen))
    5.27-  0)
    5.28+  nil)
    5.29 
    5.30 (define-alien-callable rocksdb-delete-value void
    5.31     ((state (* t))
     6.1--- a/lisp/ffi/rocksdb/pkg.lisp	Sun Aug 18 22:00:23 2024 -0400
     6.2+++ b/lisp/ffi/rocksdb/pkg.lisp	Mon Aug 19 19:25:55 2024 -0400
     6.3@@ -307,7 +307,14 @@
     6.4    :rocksdb-writebatch-clear
     6.5    :rocksdb-writebatch-wi-create-with-params
     6.6    :rocksdb-writebatch-wi-create-from
     6.7-   :rocksdb-writebatch-wi-create))
     6.8+   :rocksdb-writebatch-wi-create
     6.9+   :rocksdb-transform-function
    6.10+   :rocksdb-in-domain-function
    6.11+   :rocksdb-in-range-function
    6.12+   :rocksdb-mergeoperator-function
    6.13+   :rocksdb-logger-function
    6.14+   :rocksdb-compactionfilter-function
    6.15+   :rocksdb-comparator-function))
    6.16 
    6.17 (in-package :rocksdb)
    6.18 
     7.1--- a/lisp/ffi/rocksdb/rocksdb.asd	Sun Aug 18 22:00:23 2024 -0400
     7.2+++ b/lisp/ffi/rocksdb/rocksdb.asd	Mon Aug 19 19:25:55 2024 -0400
     7.3@@ -15,7 +15,7 @@
     7.4                (:file "types")
     7.5                (:file "opts")
     7.6                (:file "sst")
     7.7-               (:file "slice")
     7.8+               (:file "slicetransform")
     7.9                (:file "db")
    7.10                (:file "metadata")
    7.11                (:file "merge")
     8.1--- a/lisp/ffi/rocksdb/slice.lisp	Sun Aug 18 22:00:23 2024 -0400
     8.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3@@ -1,27 +0,0 @@
     8.4-;;; rocksdb/slice.lisp --- RocksDB SliceTransform and PinnableSlice
     8.5-
     8.6-;; These are used primarily in transactions
     8.7-
     8.8-;;; Refs:
     8.9-
    8.10-;; https://rocksdb.org/blog/2017/08/24/pinnableslice.html
    8.11-
    8.12-;; https://github.com/facebook/rocksdb/blob/main/include/rocksdb/slice_transform.h
    8.13-
    8.14-;;; Code:
    8.15-(in-package :rocksdb)
    8.16-
    8.17-(define-alien-routine rocksdb-slicetransform-create (* rocksdb-slicetransform)
    8.18-  (state (* t))
    8.19-  (destructor (* t))
    8.20-  (transform (* t))
    8.21-  (in-domain (* t))
    8.22-  (in-range (* t))
    8.23-  (name (* t)))
    8.24-
    8.25-(define-alien-routine rocksdb-slicetransform-create-noop (* rocksdb-slicetransform))
    8.26-
    8.27-(define-alien-routine rocksdb-slicetransform-create-fixed-prefix (* rocksdb-slicetransform)
    8.28-  (n size-t))
    8.29-
    8.30-(define-alien-routine rocksdb-slicetransform-destroy void (st (* rocksdb-slicetransform)))
     9.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2+++ b/lisp/ffi/rocksdb/slicetransform.lisp	Mon Aug 19 19:25:55 2024 -0400
     9.3@@ -0,0 +1,45 @@
     9.4+;;; rocksdb/slicetransform.lisp --- RocksDB SliceTransform
     9.5+
     9.6+;; These are used primarily in transactions
     9.7+
     9.8+;;; Refs:
     9.9+
    9.10+;; https://rocksdb.org/blog/2017/08/24/pinnableslice.html
    9.11+
    9.12+;; https://github.com/facebook/rocksdb/blob/main/include/rocksdb/slice_transform.h
    9.13+
    9.14+;;; Code:
    9.15+(in-package :rocksdb)
    9.16+
    9.17+(define-alien-type rocksdb-transform-function
    9.18+    (function (array unsigned-char)
    9.19+              (array unsigned-char)
    9.20+              size-t
    9.21+              (* size-t)))
    9.22+
    9.23+(define-alien-type rocksdb-in-domain-function
    9.24+  (function unsigned-char
    9.25+            (* t)
    9.26+            (array unsigned-char)
    9.27+            size-t))
    9.28+
    9.29+(define-alien-type rocksdb-in-range-function
    9.30+  (function unsigned-char
    9.31+            (* t)
    9.32+            (array unsigned-char)
    9.33+            size-t))
    9.34+
    9.35+(define-alien-routine rocksdb-slicetransform-create (* rocksdb-slicetransform)
    9.36+  (state (* t))
    9.37+  (destructor (* rocksdb-destructor-function))
    9.38+  (transform (* rocksdb-transform-function))
    9.39+  (in-domain (* rocksdb-in-domain-function))
    9.40+  (in-range (* rocksdb-in-range-function))
    9.41+  (name (* rocksdb-name-function)))
    9.42+
    9.43+(define-alien-routine rocksdb-slicetransform-create-noop (* rocksdb-slicetransform))
    9.44+
    9.45+(define-alien-routine rocksdb-slicetransform-create-fixed-prefix (* rocksdb-slicetransform)
    9.46+  (n size-t))
    9.47+
    9.48+(define-alien-routine rocksdb-slicetransform-destroy void (st (* rocksdb-slicetransform)))
    10.1--- a/lisp/ffi/rocksdb/tests.lisp	Sun Aug 18 22:00:23 2024 -0400
    10.2+++ b/lisp/ffi/rocksdb/tests.lisp	Mon Aug 19 19:25:55 2024 -0400
    10.3@@ -466,3 +466,7 @@
    10.4 (deftest writebatch ()
    10.5   "Test writebatch functionality."
    10.6   nil)
    10.7+
    10.8+(deftest slicetransform ()
    10.9+  "Test slicetransform functionality."
   10.10+  nil)
    11.1--- a/lisp/ffi/rocksdb/vars.lisp	Sun Aug 18 22:00:23 2024 -0400
    11.2+++ b/lisp/ffi/rocksdb/vars.lisp	Mon Aug 19 19:25:55 2024 -0400
    11.3@@ -5,6 +5,13 @@
    11.4 ;;; Code:
    11.5 (in-package :rocksdb)
    11.6 
    11.7+;;; Callbacks
    11.8+(defvar *rocksdb-destructor-callback* (alien-callable-function 'rocksdb-destructor))
    11.9+(defvar *rocksdb-delete-value-callback* (alien-callable-function 'rocksdb-delete-value))
   11.10+(defvar *rocksdb-name-callback* (alien-callable-function 'rocksdb-name))
   11.11+(defvar *rocksdb-log-callback* (alien-callable-function 'rocksdb-log-default))
   11.12+
   11.13+;;; Opts
   11.14 (defvar *rocksdb-compression-backends*
   11.15   (map 'vector (lambda (x) (string-downcase (symbol-name x)))
   11.16        '(none snappy zlib bz2 lz4 lz4hc xpress zstd)))
    12.1--- a/lisp/ffi/rocksdb/writebatch.lisp	Sun Aug 18 22:00:23 2024 -0400
    12.2+++ b/lisp/ffi/rocksdb/writebatch.lisp	Mon Aug 19 19:25:55 2024 -0400
    12.3@@ -21,6 +21,44 @@
    12.4 (define-alien-routine rocksdb-writebatch-clear void (b (* rocksdb-writebatch)))
    12.5 (define-alien-routine rocksdb-writebatch-count int (b (* rocksdb-writebatch)))
    12.6 
    12.7+(define-alien-routine rocksdb-writebatch-put-log-data void
    12.8+  (batch (* rocksdb-writebatch))
    12.9+  (blob (array unsigned-char))
   12.10+  (len size-t))
   12.11+
   12.12+(define-alien-routine rocksdb-writebatch-iterate void
   12.13+  (batch (* rocksdb-writebatch))
   12.14+  (state (* t))
   12.15+  (put (* t)) ;; function
   12.16+  (deleted (* t))) ;; function
   12.17+
   12.18+(define-alien-routine rocksdb-writebatch-iterate-cf void
   12.19+  (batch (* rocksdb-writebatch))
   12.20+  (state (* t))
   12.21+  (put-cf (* t)) ;; function
   12.22+  (deleted-cf (* t)) ;; function
   12.23+  (merge-cf (* t))) ;; function
   12.24+
   12.25+(define-alien-routine rocksdb-writebatch-data (array unsigned-char)
   12.26+  (batch (* rocksdb-writebatch))
   12.27+  (size (* size-t)))
   12.28+
   12.29+(define-alien-routine rocksdb-writebatch-set-save-point void
   12.30+  (batch (* rocksdb-writebatch)))
   12.31+
   12.32+(def-with-errptr rocksdb-writebatch-rollback-to-save-point void
   12.33+  (batch (* rocksdb-writebatch)))
   12.34+
   12.35+(def-with-errptr rocksdb-writebatch-pop-save-point void
   12.36+  (batch (* rocksdb-writebatch)))
   12.37+
   12.38+(def-with-errptr rocksdb-writebatch-update-timestamps void
   12.39+  (batch (* rocksdb-writebatch))
   12.40+  (ts (array unsigned-char))
   12.41+  (tslen size-t)
   12.42+  (state (* t))
   12.43+  (get-ts-size (* t))) ;; function
   12.44+
   12.45 ;; put
   12.46 (define-alien-routine rocksdb-writebatch-put void
   12.47   (batch (* rocksdb-writebatch))
   12.48@@ -72,12 +110,31 @@
   12.49   (key (array unsigned-char))
   12.50   (klen size-t))
   12.51 
   12.52+(define-alien-routine rocksdb-writebatch-singledelete void
   12.53+  (batch (* rocksdb-writebatch))
   12.54+  (key (array unsigned-char))
   12.55+  (klen size-t))
   12.56+
   12.57 (define-alien-routine rocksdb-writebatch-delete-cf void
   12.58   (batch (* rocksdb-writebatch))
   12.59   (cf (* rocksdb-column-family-handle))
   12.60   (key (array unsigned-char))
   12.61   (klen size-t))
   12.62 
   12.63+(define-alien-routine rocksdb-writebatch-singledelete-cf void
   12.64+  (batch (* rocksdb-writebatch))
   12.65+  (cf (* rocksdb-column-family-handle))
   12.66+  (key (array unsigned-char))
   12.67+  (klen size-t))
   12.68+
   12.69+(define-alien-routine rocksdb-writebatch-singledelete-cf-with-ts void
   12.70+  (batch (* rocksdb-writebatch))
   12.71+  (cf (* rocksdb-column-family-handle))
   12.72+  (key (array unsigned-char))
   12.73+  (klen size-t)
   12.74+  (ts (array unsigned-char))
   12.75+  (tslen size-t))
   12.76+
   12.77 (define-alien-routine rocksdb-writebatch-delete-cf-with-ts void
   12.78   (batch (* rocksdb-writebatch))
   12.79   (cf (* rocksdb-column-family-handle))
   12.80@@ -86,12 +143,87 @@
   12.81   (ts (array unsigned-char))
   12.82   (tslen size-t))
   12.83 
   12.84-;; merge
   12.85+(define-alien-routine rocksdb-writebatch-deletev void
   12.86+  (batch (* rocksdb-writebatch))
   12.87+  (num-keys int)
   12.88+  (keys-list (array (array unsigned-char)))
   12.89+  (keys-list-sizes (array size-t)))
   12.90+
   12.91+(define-alien-routine rocksdb-writebatch-deletev-cf void
   12.92+  (batch (* rocksdb-writebatch))
   12.93+  (cf (* rocksdb-column-family-handle))
   12.94+  (num-keys int)
   12.95+  (keys-list (array (array unsigned-char)))
   12.96+  (keys-list-sizes (array size-t)))
   12.97+
   12.98+(define-alien-routine rocksdb-writebatch-delete-range void
   12.99+  (batch (* rocksdb-writebatch))
  12.100+  (start-key (array unsigned-char))
  12.101+  (start-key-len size-t)
  12.102+  (end-key (array unsigned-char))
  12.103+  (end-key-len size-t))
  12.104+
  12.105+(define-alien-routine rocksdb-writebatch-delete-range-cf void
  12.106+  (batch (* rocksdb-writebatch))
  12.107+  (cf (* rocksdb-column-family-handle))
  12.108+  (start-key (array unsigned-char))
  12.109+  (start-key-len size-t)
  12.110+  (end-key (array unsigned-char))
  12.111+  (end-key-len size-t))
  12.112+
  12.113+(define-alien-routine rocksdb-writebatch-delete-rangev void
  12.114+  (batch (* rocksdb-writebatch))
  12.115+  (num-keys int)
  12.116+  (start-keys-list (array (array unsigned-char)))
  12.117+  (start-keys-list-sizes (array size-t))
  12.118+  (end-keys-list (array (array unsigned-char)))
  12.119+  (end-keys-list-sizes (array size-t)))
  12.120 
  12.121-;; savepoints
  12.122+(define-alien-routine rocksdb-writebatch-delete-rangev-cf void
  12.123+  (batch (* rocksdb-writebatch))
  12.124+  (cf (* rocksdb-column-family-handle))
  12.125+  (num-keys int)
  12.126+  (start-keys-list (array (array unsigned-char)))
  12.127+  (start-keys-list-sizes (array size-t))
  12.128+  (end-keys-list (array (array unsigned-char)))
  12.129+  (end-keys-list-sizes (array size-t)))
  12.130+
  12.131+;; merge
  12.132+(define-alien-routine rocksdb-writebatch-merge void
  12.133+  (batch (* rocksdb-writebatch))
  12.134+  (key (array unsigned-char))
  12.135+  (klen size-t)
  12.136+  (val (array unsigned-char))
  12.137+  (vlen size-t))
  12.138 
  12.139-;; with-index (wi)
  12.140+(define-alien-routine rocksdb-writebatch-merge-cf void
  12.141+  (batch (* rocksdb-writebatch))
  12.142+  (cf (* rocksdb-column-family-handle))
  12.143+  (key (array unsigned-char))
  12.144+  (klen size-t)
  12.145+  (val (array unsigned-char))
  12.146+  (vlen size-t))
  12.147 
  12.148+(define-alien-routine rocksdb-writebatch-mergev void
  12.149+  (batch (* rocksdb-writebatch))
  12.150+  (num-keys int)
  12.151+  (keys-list (array (array unsigned-char)))
  12.152+  (keys-list-sizes (array size-t))
  12.153+  (num-values int)
  12.154+  (values-list (array (array unsigned-char)))
  12.155+  (values-list-sizes (array size-t)))
  12.156+
  12.157+(define-alien-routine rocksdb-writebatch-mergev-cf void
  12.158+  (batch (* rocksdb-writebatch))
  12.159+  (cf (* rocksdb-column-family-handle))
  12.160+  (num-keys int)
  12.161+  (keys-list (array (array unsigned-char)))
  12.162+  (keys-list-sizes (array size-t))
  12.163+  (num-values int)
  12.164+  (values-list (array (array unsigned-char)))
  12.165+  (values-list-sizes (array size-t)))
  12.166+  
  12.167+;;; with-index (wi)
  12.168 (define-alien-routine rocksdb-writebatch-wi-create (* rocksdb-writebatch-wi)
  12.169   (reserved-bytes size-t)
  12.170   (overwrite-keys unsigned-char))
  12.171@@ -106,3 +238,63 @@
  12.172   (overwrite-key unsigned-char)
  12.173   (max-bytes size-t)
  12.174   (protection-bytes-per-key size-t))
  12.175+
  12.176+(define-alien-routine rocksdb-writebatch-wi-destroy void
  12.177+  (batch (* rocksdb-writebatch-wi)))
  12.178+
  12.179+(define-alien-routine rocksdb-writebatch-wi-clear void
  12.180+  (batch (* rocksdb-writebatch-wi)))
  12.181+
  12.182+(define-alien-routine rocksdb-writebatch-wi-count void
  12.183+  (batch (* rocksdb-writebatch-wi)))
  12.184+
  12.185+(define-alien-routine rocksdb-writebatch-wi-put void
  12.186+  (batch (* rocksdb-writebatch-wi))
  12.187+  (key (array unsigned-char))
  12.188+  (klen size-t)
  12.189+  (val (array unsigned-char))
  12.190+  (vlen size-t))
  12.191+
  12.192+(define-alien-routine rocksdb-writebatch-wi-put-cf void
  12.193+  (batch (* rocksdb-writebatch-wi))
  12.194+  (cf (* rocksdb-column-family-handle))
  12.195+  (key (array unsigned-char))
  12.196+  (klen size-t)
  12.197+  (val (array unsigned-char))
  12.198+  (vlen size-t))
  12.199+
  12.200+(define-alien-routine rocksdb-writebatch-wi-putv void
  12.201+  (batch (* rocksdb-writebatch-wi))
  12.202+  (num-keys int)
  12.203+  (keys-list (array (array unsigned-char)))
  12.204+  (keys-list-sizes (array size-t))
  12.205+  (num-values int)
  12.206+  (values-list (array (array unsigned-char)))
  12.207+  (values-list-sizes (array size-t)))
  12.208+
  12.209+(define-alien-routine rocksdb-writebatch-wi-putv-cf void
  12.210+  (batch (* rocksdb-writebatch-wi))
  12.211+  (cf (* rocksdb-column-family-handle))
  12.212+  (num-keys int)
  12.213+  (keys-list (array (array unsigned-char)))
  12.214+  (keys-list-sizes (array size-t))
  12.215+  (num-values int)
  12.216+  (values-list (array (array unsigned-char)))
  12.217+  (values-list-sizes (array size-t)))
  12.218+
  12.219+(define-alien-routine rocksdb-writebatch-wi-merge void
  12.220+  (batch (* rocksdb-writebatch))
  12.221+  (key (array unsigned-char))
  12.222+  (klen size-t)
  12.223+  (val (array unsigned-char))
  12.224+  (vlen size-t))
  12.225+
  12.226+(define-alien-routine rocksdb-writebatch-wi-merge-cf void
  12.227+  (batch (* rocksdb-writebatch))
  12.228+  (cf (* rocksdb-column-family-handle))
  12.229+  (key (array unsigned-char))
  12.230+  (klen size-t)
  12.231+  (val (array unsigned-char))
  12.232+  (vlen size-t))
  12.233+
  12.234+;; TODO 2024-08-19: