changelog shortlog graph tags branches changeset file revisions annotate raw help

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

revision 269: 87f503c7a365
parent 268: a52d42f30617
child 271: 4a1a21ff46ee
     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