1.1--- a/lisp/ffi/rocksdb/db.lisp Sat Apr 06 23:30:32 2024 -0400
1.2+++ b/lisp/ffi/rocksdb/db.lisp Sun Apr 07 21:17:30 2024 -0400
1.3@@ -31,6 +31,15 @@
1.4 (keylen size-t)
1.5 (vallen (* size-t)))
1.6
1.7+(def-with-errptr rocksdb-get-with-ts c-string
1.8+ (db (* rocksdb))
1.9+ (opts (* rocksdb-readoptions))
1.10+ (key c-string)
1.11+ (keylen size-t)
1.12+ (vallen (* size-t))
1.13+ (ts (* c-string))
1.14+ (tslen (* size-t)))
1.15+
1.16 (def-with-errptr rocksdb-delete
1.17 void
1.18 (db (* rocksdb))
1.19@@ -72,6 +81,16 @@
1.20 (keylen size-t)
1.21 (vallen (* size-t)))
1.22
1.23+(def-with-errptr rocksdb-get-cf-with-ts c-string
1.24+ (db (* rocksdb))
1.25+ (opts (* rocksdb-readoptions))
1.26+ (cf (* rocksdb-column-family-handle))
1.27+ (key c-string)
1.28+ (keylen size-t)
1.29+ (vallen (* size-t))
1.30+ (ts (* c-string))
1.31+ (tslen (* size-t)))
1.32+
1.33 ;; NOTE 2023-12-19: only the VOID-returning functions in the multi-
1.34 ;; family perform parallel IO:
1.35 ;; https://github.com/facebook/rocksdb/wiki/MultiGet-Performance
1.36@@ -85,6 +104,18 @@
1.37 (values-list-sizes (array size-t))
1.38 (errs (array rocksdb-errptr)))
1.39
1.40+(define-alien-routine rocksdb-multi-get-with-ts void
1.41+ (db (* rocksdb))
1.42+ (opt (* rocksdb-readoptions))
1.43+ (num-keys size-t)
1.44+ (keys-list (array c-string))
1.45+ (keys-list-sizes (array size-t))
1.46+ (values-list (array c-string))
1.47+ (values-list-sizes (array size-t))
1.48+ (ts-list (array c-string))
1.49+ (ts-list-sizes (array size-t))
1.50+ (errs (array rocksdb-errptr)))
1.51+
1.52 (define-alien-routine rocksdb-multi-get-cf void
1.53 (db (* rocksdb))
1.54 (opt (* rocksdb-readoptions))
1.55@@ -96,9 +127,23 @@
1.56 (values-list-sizes (array size-t))
1.57 (errs (array rocksdb-errptr)))
1.58
1.59-(export '(rocksdb-multi-get rocksdb-multi-get-cf))
1.60+(define-alien-routine rocksdb-multi-get-cf-with-ts void
1.61+ (db (* rocksdb))
1.62+ (opt (* rocksdb-readoptions))
1.63+ (cfs (array rocksdb-column-family-handle))
1.64+ (num-keys size-t)
1.65+ (keys-list (array c-string))
1.66+ (keys-list-sizes (array size-t))
1.67+ (values-list (array c-string))
1.68+ (values-list-sizes (array size-t))
1.69+ (ts-list (array c-string))
1.70+ (ts-list-sizes (array size-t))
1.71+ (errs (array rocksdb-errptr)))
1.72
1.73-(define-alien-routine rocksdb-cache-create-lru (* rocksdb) (capacity unsigned-int))
1.74+(export '(rocksdb-multi-get rocksdb-multi-get-cf
1.75+ rocksdb-multi-get-with-ts rocksdb-multi-get-cf-with-ts))
1.76+
1.77+(define-alien-routine rocksdb-cache-create-lru (* rocksdb-cache) (capacity size-t))
1.78
1.79 (export '(rocksdb-cache-create-lru))
1.80
1.81@@ -134,7 +179,7 @@
1.82
1.83 ;; return NULL if prop name is unknown, else return pointer to
1.84 ;; malloc-ed null-term value.
1.85-(define-alien-routine rocksdb-property-value (* t)
1.86+(define-alien-routine rocksdb-property-value c-string
1.87 (db (* rocksdb))
1.88 (propname (* c-string)))
1.89
1.90@@ -143,7 +188,7 @@
1.91 (db (* rocksdb))
1.92 (propname (* c-string)))
1.93
1.94-(define-alien-routine rocksdb-property-value-cf (* t)
1.95+(define-alien-routine rocksdb-property-value-cf c-string
1.96 (db (* rocksdb))
1.97 (cf (* rocksdb-column-family-handle))
1.98 (propname (* c-string)))
1.99@@ -391,21 +436,124 @@
1.100 (define-alien-routine rocksdb-transaction-get-writebach-wi (* rocksdb-writebatch-wi)
1.101 (txn (* rocksdb-transaction)))
1.102
1.103+(def-with-errptr rocksdb-transaction-delete void
1.104+ (txn (* rocksdb-transaction))
1.105+ (key c-string)
1.106+ (klen size-t))
1.107+
1.108+(def-with-errptr rocksdb-transaction-delete-cf void
1.109+ (txn (* rocksdb-transaction))
1.110+ (cf (* rocksdb-column-family-handle))
1.111+ (key c-string)
1.112+ (klen size-t))
1.113+
1.114+(def-with-errptr rocksdb-transactiondb-delete void
1.115+ (txndb (* rocksdb-transactiondb))
1.116+ (opts (* rocksdb-writeoptions))
1.117+ (key c-string)
1.118+ (klen size-t))
1.119+
1.120+(def-with-errptr rocksdb-transaction-delete-cf void
1.121+ (txndb (* rocksdb-transactiondb))
1.122+ (opts (* rocksdb-writeoptions))
1.123+ (cf (* rocksdb-column-family-handle))
1.124+ (key c-string)
1.125+ (klen size-t))
1.126+
1.127+(define-alien-routine rocksdb-transaction-create-iterator (* rocksdb-iterator)
1.128+ (txn (* rocksdb-transaction))
1.129+ (opts (* rocksdb-readoptions)))
1.130+
1.131+(define-alien-routine rocksdb-transaction-create-iterator-cf (* rocksdb-iterator)
1.132+ (txn (* rocksdb-transaction))
1.133+ (opts (* rocksdb-readoptions))
1.134+ (cf (* rocksdb-column-family-handle)))
1.135+
1.136+(define-alien-routine rocksdb-transactiondb-create-iterator (* rocksdb-iterator)
1.137+ (txndb (* rocksdb-transactiondb))
1.138+ (opts (* rocksdb-readoptions)))
1.139+
1.140+(define-alien-routine rocksdb-transactiondb-create-iterator-cf (* rocksdb-iterator)
1.141+ (txndb (* rocksdb-transactiondb))
1.142+ (opts (* rocksdb-readoptions))
1.143+ (cf (* rocksdb-column-family-handle)))
1.144+
1.145 (define-alien-routine rocksdb-transactiondb-close void
1.146 (tdb (* rocksdb-transactiondb)))
1.147
1.148+(def-with-errptr rocksdb-transactiondb-flush void
1.149+ (txndb (* rocksdb-transactiondb))
1.150+ (opts (* rocksdb-flushoptions)))
1.151+
1.152+(def-with-errptr rocksdb-transactiondb-flush-cf void
1.153+ (txndb (* rocksdb-transactiondb))
1.154+ (opts (* rocksdb-flushoptions))
1.155+ (cf (* rocksdb-column-family-handle)))
1.156+
1.157+(def-with-errptr rocksdb-transactiondb-flush-cfs void
1.158+ (txndb (* rocksdb-transactiondb))
1.159+ (opts (* rocksdb-flushoptions))
1.160+ (cfs (array (* rocksdb-column-family-handle)))
1.161+ (ncfs int))
1.162+
1.163+(def-with-errptr rocksdb-transactiondb-flush-cf void
1.164+ (txndb (* rocksdb-transactiondb))
1.165+ (sync unsigned-char))
1.166+
1.167+(def-with-errptr rocksdb-transactiondb-checkpoint-object-create (* rocksdb-checkpoint)
1.168+ (txn-db (* rocksdb-transactiondb)))
1.169+
1.170+(def-with-errptr rocksdb-optimistictransactiondb-open (* rocksdb-optimistictransactiondb)
1.171+ (opts (* rocksdb-options))
1.172+ (name c-string))
1.173+
1.174+(def-with-errptr rocksdb-optimistictransactiondb-open-column-families (* rocksdb-optimistictransactiondb)
1.175+ (opts (* rocksdb-options))
1.176+ (name c-string)
1.177+ (ncfs int)
1.178+ (cf-names (array c-string))
1.179+ (cf-opts (array (* rocksdb-options)))
1.180+ (cf-handles (array (* rocksdb-column-family-handle))))
1.181+
1.182+(define-alien-routine rocksdb-optimistictransactiondb-get-base-db (* rocksdb)
1.183+ (otxn-db (* rocksdb-optimistictransactiondb)))
1.184+
1.185+(define-alien-routine rocksdb-optimistictransactiondb-close-base-db void
1.186+ (base-db (* rocksdb)))
1.187+
1.188+(define-alien-routine rocksdb-optimistictransaction-begin (* rocksdb-transaction)
1.189+ (otxn-db (* rocksdb-optimistictransactiondb))
1.190+ (wopts (* rocksdb-writeoptions))
1.191+ (otxn-opts (* rocksdb-optimistictransaction-options))
1.192+ (old-txn (* rocksdb-transaction)))
1.193+
1.194+(def-with-errptr rocksdb-optimistictransactiondb-write void
1.195+ (otxn-db (* rocksdb-optimistictransactiondb))
1.196+ (wopts (* rocksdb-writeoptions))
1.197+ (batch (* rocksdb-writebatch)))
1.198+
1.199+(define-alien-routine rocksdb-optimistictransactiondb-close void
1.200+ (otxn-db (* rocksdb-optimistictransactiondb)))
1.201+
1.202+(def-with-errptr rocksdb-optimistictransactiondb-checkpoint-object-create (* rocksdb-checkpoint)
1.203+ (otxn-db (* rocksdb-optimistictransactiondb)))
1.204+
1.205 (export '(rocksdb-transaction-begin rocksdb-transaction-close rocksdb-transactiondb-create-snapshot
1.206 rocksdb-transactiondb-release-snapshot rocksdb-transactiondb-property-value
1.207 rocksdb-transactiondb-property-int rocksdb-transactiondb-get-base-db
1.208 rocksdb-transactiondb-get-close-db rocksdb-transaction-get-name
1.209- rocksdb-transaction-set-savepoint rocksdb-transaction-destroy))
1.210+ rocksdb-transaction-set-savepoint rocksdb-transaction-destroy
1.211+ rocksdb-transaction-create-iterator rocksdb-transaction-create-iterator-cf
1.212+ rocksdb-transactiondb-create-iterator rocksdb-transactiondb-create-iterator-cf
1.213+ rocksdb-optimistictransactiondb-get-base-db rocksdb-optimistictransactiondb-close-base-db
1.214+ rocksdb-optimistictransaction-begin rocksdb-optimistictransactiondb-close))
1.215
1.216 ;;; Perfcontext
1.217 (define-alien-routine rocksdb-set-perf-level void (val int))
1.218
1.219 (define-alien-routine rocksdb-perfcontext-create (* rocksdb-perfcontext))
1.220
1.221-(define-alien-routine rocksdb-perfcontext-reset void (* rocksdb-perfcontext))
1.222+(define-alien-routine rocksdb-perfcontext-reset void (ctx (* rocksdb-perfcontext)))
1.223
1.224 (define-alien-routine rocksdb-perfcontext-report (* unsigned-char)
1.225 (context (* rocksdb-perfcontext))
1.226@@ -416,8 +564,8 @@
1.227
1.228 (define-alien-routine rocksdb-perfcontext-destroy void (* rocksdb-perfcontext))
1.229
1.230-(export '(rocksdb-perfcontext-reset rocksdb-perfcontext-report
1.231- rocksdb-perfcontext-metric rocksdb-perfcontext-destroy))
1.232+(export '(rocksdb-perfcontext-reset rocksdb-perfcontext-report
1.233+ rocksdb-perfcontext-metric rocksdb-perfcontext-destroy rocksdb-set-perf-level))
1.234
1.235 ;;; Compaction Filter
1.236 ;; (define-alien-routine rocksdb-compactionfilter-create (* rocksdb-compactionfilter)
1.237@@ -484,14 +632,17 @@
1.238 rocksdb-filterpolicy-create-ribbon rocksdb-filterpolicy-create-ribbon-hybrid))
1.239
1.240 ;;; Merge Operator
1.241+
1.242 ;; TODO 2023-12-11:
1.243-;; (define-alien-routine rocksdb-mergeoperator-create (* rocksdb-mergeoperator)
1.244-;; (state (* void))
1.245-;; (destructor (* void))
1.246-;; (full-merge (* char))
1.247-;; (partial-merge (* char))
1.248-;; (delete-value (* void))
1.249-;; (name (* unsigned-char)))
1.250+(define-alien-routine rocksdb-mergeoperator-create (* rocksdb-mergeoperator)
1.251+ (state (* t))
1.252+ (destructor (* t))
1.253+ (full-merge (* char))
1.254+ (partial-merge (* char))
1.255+ (delete-value (* t))
1.256+ (name (* unsigned-char)))
1.257+
1.258+#| [[file:~/dev/comp/core/c/rocksdb.h::/* Merge Operator */]] |#
1.259
1.260 (define-alien-routine rocksdb-mergeoperator-destroy void (self (* rocksdb-mergeoperator)))
1.261