changelog shortlog graph tags branches changeset file revisions annotate raw help

Mercurial > core / lisp/lib/rdb/raw.lisp

revision 273: 6d56c4950fa2
parent 272: 0a5e37693fdf
child 282: da580c7fe954
     1.1--- a/lisp/lib/rdb/raw.lisp	Tue Apr 09 22:09:52 2024 -0400
     1.2+++ b/lisp/lib/rdb/raw.lisp	Wed Apr 10 22:09:23 2024 -0400
     1.3@@ -17,7 +17,9 @@
     1.4    (lambda (o) (rocksdb-options-set-create-if-missing o 1))))
     1.5 
     1.6 (defun get-stats-raw (opt htype)
     1.7-  (rocksdb-options-statistics-get-histogram-data opt htype (rocksdb-statistics-histogram-data-create)))
     1.8+  (with-alien ((hist (* rocksdb-statistics-histogram-data) (rocksdb-statistics-histogram-data-create)))
     1.9+    (rocksdb-options-statistics-get-histogram-data opt htype hist)
    1.10+    (deref hist)))
    1.11 
    1.12 ;;; DB
    1.13 (defun open-db-raw (db-path &optional (opts (default-rocksdb-options)))
    1.14@@ -35,17 +37,6 @@
    1.15     (rocksdb-destroy-db opt (namestring (uiop:ensure-directory-pathname path)) err)
    1.16     (rocksdb-options-destroy opt)))
    1.17 
    1.18-;; (with-open-db-raw (db "/tmp/tmp-db") (print db))
    1.19-;; (destroy-db-raw "/tmp/with-db-raw")
    1.20-
    1.21-(defmacro with-open-db-raw ((db-var db-path &optional (opt (default-rocksdb-options))) &body body)
    1.22-  `(let ((,db-var (open-db-raw ,db-path ,opt)))
    1.23-     (unwind-protect (progn ,@body)
    1.24-       (rocksdb-close ,db-var)
    1.25-       (with-errptr (err 'rocksdb-error)
    1.26-         ;; (rocksdb-destroy-db ,opt ,db-path err) ;; when :destroy only
    1.27-         (rocksdb-options-destroy ,opt)))))
    1.28-
    1.29 (defun get-property-raw (db str)
    1.30   (rocksdb-property-value db (make-alien-string str)))
    1.31 
    1.32@@ -87,24 +78,24 @@
    1.33 (defun get-kv-raw (db key &optional (opt (rocksdb-readoptions-create)))
    1.34   (let ((klen (length key)))
    1.35     (with-errptr (err 'get-kv-error (list :db db :key key))
    1.36-      (with-alien ((vlen (* size-t) (make-alien size-t 0))
    1.37+      (with-alien ((vlen size-t)
    1.38 		   (k (* unsigned-char) (make-alien unsigned-char klen)))
    1.39         (setfa k key)
    1.40         (let* ((val (rocksdb-get db
    1.41 			         opt
    1.42 			         k klen
    1.43-                                 vlen
    1.44+                                 (addr vlen)
    1.45 			         err)))
    1.46 	  ;; helps if we know the vlen beforehand, would need a custom
    1.47 	  ;; C-side function probably.
    1.48-	  (let ((v (make-array (deref vlen) :element-type 'unsigned-byte)))
    1.49-            (clone-octets-from-alien val v (deref vlen))
    1.50-	    v))))))
    1.51+          (let ((v (make-array vlen :element-type 'octet)))
    1.52+            (clone-octets-from-alien val v vlen)
    1.53+            (coerce v 'octet-vector)))))))
    1.54 
    1.55 (defun get-kv-str-raw (db key &optional (opt (rocksdb-readoptions-create)))
    1.56-  (let ((k (string-to-octets key :null-terminate nil)))
    1.57+  (let ((k (string-to-octets key)))
    1.58     (let ((v (get-kv-raw db k opt)))
    1.59-      (when v (concatenate 'string (map 'vector #'code-char v))))))
    1.60+      (when v (octets-to-string v)))))
    1.61 
    1.62 ;;; Column Family
    1.63 (defun create-cf-raw (db name &optional (opt (rocksdb-options-create)))
    1.64@@ -161,6 +152,9 @@
    1.65 (defun create-iter-raw (db &optional (opt (rocksdb-readoptions-create)))
    1.66   (rocksdb-create-iterator db opt))
    1.67 
    1.68+(defun create-cf-iter-raw (db cf &optional (opt (rocksdb-readoptions-create)))
    1.69+  (rocksdb-create-iterator-cf db opt cf))
    1.70+
    1.71 (defun destroy-iter-raw (iter)
    1.72   (rocksdb-iter-destroy iter))
    1.73 
    1.74@@ -188,11 +182,6 @@
    1.75   (when-let ((v (iter-val-raw iter)))
    1.76     (octets-to-string v)))
    1.77 
    1.78-(defmacro with-iter-raw ((iter-var db &optional (opt (rocksdb-readoptions-create))) &body body)
    1.79-  `(let ((,iter-var (create-iter-raw ,db ,opt)))
    1.80-     (unwind-protect (progn ,@body)
    1.81-       (destroy-iter-raw ,iter-var))))
    1.82-
    1.83 ;;; Backup Engine
    1.84 (defun open-backup-engine-raw (be-path &optional (opts (rocksdb-options-create)))
    1.85   (with-errptr (err 'open-backup-engine-error (list :db be-path))
    1.86@@ -216,12 +205,6 @@
    1.87   (with-errptr (err 'rocksdb-error)
    1.88     (rocksdb-backup-engine-restore-db-from-backup be db-path backup-path opt backup-id err)))
    1.89 
    1.90-(defmacro with-open-backup-engine-raw ((be-var be-path &optional (opt (rocksdb-options-create)))
    1.91-                                       &body body)
    1.92-  `(let ((,be-var (open-backup-engine-raw ,be-path ,opt)))
    1.93-     (unwind-protect (progn ,@body)
    1.94-       (rocksdb-backup-engine-close ,be-var))))
    1.95-
    1.96 ;;; Snapshot
    1.97 (defun create-snapshot-raw (db)
    1.98   (rocksdb-create-snapshot db))