changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/rdb/obj.lisp

changeset 678: 2b7d5a8d63ac
parent: 97dd03beda03
child: 12287fab15d0
author: Richard Westhaver <ellis@rwest.io>
date: Wed, 25 Sep 2024 21:39:39 -0400
permissions: -rw-r--r--
description: alien octets fix, workin with org-graph-db
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
1
 (in-package :rdb)
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
2
 
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
3
 ;;; rdb-opts
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
4
 (defvar *rdb-opts-lookup-table*
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
5
   (let ((table (make-hash-table :test #'equal)))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
6
     (mapc (lambda (x) (setf (gethash (car x) table) (cdr x)))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
7
           (loop for y across *rocksdb-options*
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
8
                 collect (cons y (format nil "~:@(rocksdb-options-set-~x~)" y))))
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
9
     table))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
10
 
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
11
 (defun %set-rocksdb-option (opt key val)
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
12
   (funcall (rdb-opt-setter key) opt val))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
13
 
269
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
14
 (defun %get-rocksdb-option (opt key)
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
15
   (if-let ((g (rdb-opt-getter key)))
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
16
     (funcall g opt)
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
17
     (warn 'opt-handler-missing :message key)))
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
18
 
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
19
 (defun opt-no-setter-p (k)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
20
   (let ((k (typecase k
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
21
              (string (string-downcase k))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
22
              (symbol (string-downcase (symbol-name k)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
23
              (t (string-downcase (format nil "~s" k))))))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
24
     (member t
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
25
             (mapcar (lambda (x) (equal k x)) (list "parallelism" "enable-statistics")))))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
26
 
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
27
 (defclass rdb-opts ()
102
db52ddb25d7f progress
ellis <ellis@rwest.io>
parents: 100
diff changeset
28
   ((table :initarg :table :type hash-table :accessor rdb-opts-table)
db52ddb25d7f progress
ellis <ellis@rwest.io>
parents: 100
diff changeset
29
    (sap :initarg :sap :type (or null alien) :accessor rdb-opts-sap)))
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
30
 
112
430e69339ac3 fixed rdb tests
ellis <ellis@rwest.io>
parents: 111
diff changeset
31
 (defmethod initialize-instance ((self rdb-opts) &rest initargs &key &allow-other-keys)
102
db52ddb25d7f progress
ellis <ellis@rwest.io>
parents: 100
diff changeset
32
   (with-slots (sap table) self
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
33
     ;; initialize slots - remember, initargs doesn't refer to slot
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
34
     ;; names, they're opt names.
102
db52ddb25d7f progress
ellis <ellis@rwest.io>
parents: 100
diff changeset
35
     (unless (getf initargs :table) (setf table (make-hash-table :test #'equal)))
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
36
     (unless (getf initargs :sap) (setf sap (rocksdb-options-create)))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
37
     (loop for (k v) on initargs by #'cddr while v
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
38
           do (let ((k (typecase k
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
39
                         (string (string-downcase k))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
40
                         (symbol (string-downcase (symbol-name k)))
102
db52ddb25d7f progress
ellis <ellis@rwest.io>
parents: 100
diff changeset
41
                         (t (string-downcase (format nil "~s" k))))))
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
42
                (set-opt self k v)))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
43
     self))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
44
 
99
40d91ba5a115 rdb stuff
ellis <ellis@rwest.io>
parents: 97
diff changeset
45
 (defun make-rdb-opts (&rest values)
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
46
   (let ((opts (apply #'make-instance 'rdb-opts values)))
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
47
     (push-sap* opts)
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
48
     opts))
99
40d91ba5a115 rdb stuff
ellis <ellis@rwest.io>
parents: 97
diff changeset
49
 
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
50
 (defmethod get-opt ((self rdb-opts) key)
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
51
   "Return the current value of KEY in SELF if found, else return nil."
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
52
   (gethash key (rdb-opts-table self)))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
53
 
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
54
 (defmethod set-opt ((self rdb-opts) key val &key push)
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
55
   "Set the VAL of KEY in SELF with '(setf (gethash SELF KEY) VAL)'."
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
56
   (prog1
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
57
       (setf (gethash key (rdb-opts-table self)) val)
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
58
     (when push (push-sap self key))))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
59
 
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
60
 (defmethod push-sap ((self rdb-opts) key)
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
61
   "Push KEY from slot :TABLE to the instance :SAP."
102
db52ddb25d7f progress
ellis <ellis@rwest.io>
parents: 100
diff changeset
62
   (%set-rocksdb-option (rdb-opts-sap self) key (get-opt self key)))
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
63
 
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
64
 (defmethod push-sap* ((self rdb-opts))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
65
   "Initialized the SAP slot with values from TABLE."
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
66
   (with-slots (table) self
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
67
     (loop for k in (hash-table-keys table)
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
68
           ;; note how we don't handle any special cases here - we can
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
69
           ;; always set an opt but sometimes we can't get it.
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
70
           do (push-sap self k))))
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
71
 
269
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
72
 (defmethod pull-sap ((self rdb-opts) key)
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
73
   (setf (gethash key (rdb-opts-table self)) (%get-rocksdb-option (rdb-opts-sap self) key)))
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
74
 
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
75
 (defmethod pull-sap* ((self rdb-opts))
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
76
   (with-slots (table) self
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
77
     (loop for k in (hash-table-keys table)
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
78
           unless (opt-no-setter-p k)
309
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
79
           do (pull-sap self k))
269
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
80
     table))
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
81
 
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
82
 (defmethod backfill-opts ((self rdb-opts) &key full)
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
83
   "Backfill the TABLE slot with values from SAP.
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
84
 
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
85
 When FULL is non-nil, retrieve the full set of options available, not
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
86
 just the keys currently present in TABLE."
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
87
   (if full
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
88
       (loop for k across *rocksdb-options*
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
89
             unless (opt-no-setter-p k)
269
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
90
             do (pull-sap self k))
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
91
       (pull-sap* self))
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
92
   (rdb-opts-table self))
309
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
93
 
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
94
 (defun default-rdb-opts () 
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
95
   (make-rdb-opts :create-if-missing t :create-missing-column-families t
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
96
                  :parallelism (num-cpus)))
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
97
 
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
98
 (defclass rdb-kv ()
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
99
   ((key :initarg :key :type octet-vector :accessor rdb-key)
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
100
    (val :initarg :val :type octet-vector :accessor rdb-val)))
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
101
 
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
102
 (defmethod make-kv (key val)
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
103
   (make-instance 'rdb-kv 
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
104
     :key (make-key key) 
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
105
     :val (make-val val)))
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
106
 
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
107
 (defvar *default-rdb-kv* (make-kv #() #()))
224
fdea20982c25 deferror
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
108
 
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
109
 ;;; iterator
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
110
 (defclass rdb-iter (sequence)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
111
   ((sap :initform nil :initarg :sap :type (or null alien) :accessor rdb-iter-sap)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
112
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
113
 (defmethod iter-valid-p ((self rdb-iter))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
114
   (rocksdb-iter-valid (rdb-iter-sap self)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
115
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
116
 (defmethod iter-seek-to-first ((self rdb-iter))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
117
   (rocksdb-iter-seek-to-first (rdb-iter-sap self))) 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
118
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
119
 (defmethod iter-seek-to-last ((self rdb-iter))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
120
   (rocksdb-iter-seek-to-last (rdb-iter-sap self)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
121
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
122
 (defmethod iter-seek-for-prev ((self rdb-iter) (key vector) &key)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
123
   (rocksdb-iter-seek-for-prev (rdb-iter-sap self) key (length key)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
124
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
125
 (defmethod iter-seek ((self rdb-iter) (key simple-vector) &key)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
126
   (rocksdb-iter-seek (rdb-iter-sap self) key (length key)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
127
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
128
 (defmethod iter-next ((self rdb-iter))
310
ab9e41953ae2 rdb fuzz
Richard Westhaver <ellis@rwest.io>
parents: 309
diff changeset
129
   (rocksdb-iter-next (rdb-iter-sap self)))
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
130
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
131
 (defmethod iter-prev ((self rdb-iter))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
132
   (rocksdb-iter-prev (rdb-iter-sap self)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
133
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
134
 (defmethod iter-key ((self rdb-iter))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
135
   (with-alien ((klen size-t))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
136
     (let ((key (rocksdb-iter-key (rdb-iter-sap self) (addr klen))))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
137
       (let ((k (make-array klen :element-type 'octet)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
138
         (clone-octets-from-alien key k klen)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
139
         (values
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
140
          k
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
141
          klen)))))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
142
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
143
 (defmethod iter-val ((self rdb-iter))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
144
   (with-alien ((vlen size-t))     
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
145
     (let ((val (rocksdb-iter-value (rdb-iter-sap self) (addr vlen))))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
146
       (let ((v (make-array vlen :element-type 'octet)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
147
         (clone-octets-from-alien val v vlen)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
148
         (values
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
149
          v
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
150
          vlen)))))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
151
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
152
 (defmethod iter-kv ((self rdb-iter))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
153
   (make-kv (iter-key self) (iter-val self)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
154
 
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
155
 (defmethod iter-timestamp ((self rdb-iter))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
156
   (with-alien ((tslen size-t))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
157
     (values
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
158
      (rocksdb-iter-timestamp (rdb-iter-sap self) (addr tslen))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
159
      tslen)))
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
160
 
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
161
 ;;; column family
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
162
 (defstruct (rdb-cf (:constructor make-rdb-cf (name &key key-type val-type sap)))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
163
   "RDB Column Family structure. Contains a name, key-type, val-type,
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
164
 and a system-area-pointer to the underlying rocksdb_cf_t handle.
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
165
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
166
 A NIL key-type or val-type indicates an unitialized value which defaults to
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
167
 'octet-vector. This is needed to distinguish the value 'octet-vector being
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
168
 supplied by the user from the default value."
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
169
   (name "" :type string)
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
170
   (key-type nil :type (or list symbol))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
171
   (val-type nil :type (or list symbol))
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
172
   (sap nil :type (or null alien)))
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
173
       
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
174
 (defmethod close-cf ((self rdb-cf) &optional error)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
175
   (if-let ((sap (rdb-cf-sap self)))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
176
     (setf (rdb-cf-sap self) (rocksdb:rocksdb-column-family-handle-destroy sap))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
177
     (when error (rdb-error "column family is already closed."))))
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
178
 
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
179
 ;;; rdb-stats
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
180
 (defstruct (rdb-stats (:constructor make-rdb-stats (&optional sap)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
181
   (sap nil :type (or null alien)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
182
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
183
 ;;; metadata
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
184
 (defstruct rdb-cf-metadata
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
185
   (name "default" :type string)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
186
   (size 0 :type fixnum)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
187
   (level-count 7 :type fixnum)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
188
   (file-count 0 :type fixnum)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
189
   (sap nil :type (or null alien)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
190
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
191
 (defmethod get-metadata ((self rdb-cf-metadata) &optional (level 0))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
192
   (with-slots (sap) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
193
     (if (null sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
194
         (warn 'metadata-missing :message "ignoring attempt to pull fields from null sap.")
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
195
         (make-rdb-level-metadata :sap (rocksdb-column-family-metadata-get-level-metadata sap level)))))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
196
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
197
 (defmethod print-object ((self rdb-cf-metadata) stream)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
198
   (print-unreadable-object (self stream :type t)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
199
     (with-slots (name size level-count file-count) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
200
       (format stream "~A :size ~A :levels ~A :files ~A" name size level-count file-count))))
309
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
201
 
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
202
 (defmethod pull-sap* ((self rdb-cf-metadata))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
203
   (with-slots (name size level-count file-count sap) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
204
     (if (null sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
205
         (warn 'metadata-missing :message "ignoring attempt to pull fields from null sap.")
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
206
         (setf name (rocksdb-column-family-metadata-get-name sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
207
               size (rocksdb-column-family-metadata-get-size sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
208
               level-count (rocksdb-column-family-metadata-get-level-count sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
209
               file-count (rocksdb-column-family-metadata-get-file-count sap)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
210
     self))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
211
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
212
 (defstruct rdb-level-metadata
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
213
   (level 0 :type fixnum)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
214
   (size 0 :type fixnum)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
215
   (file-count 0 :type fixnum)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
216
   (sap nil :type (or null alien)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
217
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
218
 (defmethod get-metadata ((self rdb-level-metadata) &optional (file 0))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
219
   (with-slots (sap) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
220
     (if (null sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
221
         (warn 'metadata-missing :message "ignoring attempt to pull fields from null sap.")
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
222
         (make-rdb-sst-file-metadata :sap (rocksdb-level-metadata-get-sst-file-metadata sap file)))))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
223
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
224
 (defmethod print-object ((self rdb-level-metadata) stream)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
225
   (print-unreadable-object (self stream :type t)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
226
     (with-slots (level size file-count) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
227
       (format stream "~A :size ~A :files ~A" level size file-count))))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
228
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
229
 (defmethod pull-sap* ((self rdb-level-metadata))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
230
   (with-slots (level size file-count sap) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
231
     (if (null sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
232
         (warn 'metadata-missing :message "ignoring attempt to pull fields from null sap.")
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
233
         (setf level (rocksdb-level-metadata-get-level sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
234
               size (rocksdb-level-metadata-get-size sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
235
               file-count (rocksdb-level-metadata-get-file-count sap)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
236
     self))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
237
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
238
 ;; NOTE: we only store the sizes of largest and smallest key, not the
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
239
 ;; keys themselves. This may change in the future.
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
240
 (defstruct rdb-sst-file-metadata
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
241
   (relative-filename "" :type string)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
242
   (directory "" :type string)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
243
   (size 0 :type fixnum)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
244
   (smallestkey 0 :type fixnum)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
245
   (largestkey 0 :type fixnum)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
246
   (sap nil :type (or null alien)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
247
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
248
 (defmethod print-object ((self rdb-sst-file-metadata) stream)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
249
   (print-unreadable-object (self stream :type t)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
250
     (with-slots (relative-filename directory size smallestkey largestkey) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
251
       (format stream "~A :dir ~A :size ~A :smallest ~A :largest ~A"
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
252
               relative-filename directory size smallestkey largestkey))))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
253
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
254
 (defmethod pull-sap* ((self rdb-sst-file-metadata))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
255
   (with-slots (relative-filename directory size smallestkey largestkey sap) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
256
     (if (null sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
257
         (warn 'metadata-missing :message "ignoring attempt to pull fields from null sap.")
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
258
         (with-alien ((ssize size-t 0)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
259
                      (lsize size-t 0))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
260
           (rocksdb-sst-file-metadata-get-largestkey sap (addr lsize))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
261
           (rocksdb-sst-file-metadata-get-smallestkey sap (addr ssize))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
262
           (setf relative-filename (rocksdb-sst-file-metadata-get-relative-filename sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
263
                 directory (rocksdb-sst-file-metadata-get-directory sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
264
                 size (rocksdb-sst-file-metadata-get-size sap)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
265
                 largestkey lsize
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
266
                 smallestkey ssize)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
267
     self))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
268
 
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
269
 ;;; rdb
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
270
 (defstruct (rdb (:constructor make-rdb (name opts &optional cfs db)))
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
271
   (name "" :type string)
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
272
   (opts (default-rdb-opts) :type rdb-opts)
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
273
   (cfs (make-array 0 :element-type 'rdb-cf :adjustable t :fill-pointer 0) :type (vector rdb-cf))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
274
   (db nil :type (or null alien))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
275
   (backup nil :type (or null alien))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
276
   (snapshots #() :type (array alien)))
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
277
 
277
10faf95f90dd stream and basic type upgrades. fixed some bugs and improved csv parsing
Richard Westhaver <ellis@rwest.io>
parents: 274
diff changeset
278
 (defvar *default-rdb-opts* (default-rdb-opts))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
279
 
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
280
 (defmethod print-object ((self rdb) stream)
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
281
   (print-unreadable-object (self stream :type t :identity t)
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
282
     (format stream ":cfs ~A :open ~A" (length (rdb-cfs self)) (db-open-p self))))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
283
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
284
 (defmethod db ((self rdb))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
285
   (rdb-db self))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
286
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
287
 (defmethod db-open-p ((self rdb))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
288
   (when (db self) t))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
289
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
290
 (defmethod db-closed-p ((self rdb))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
291
   (unless (db self) t))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
292
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
293
 (defun translate-cf-to-field (cf)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
294
   (let ((vt (or (rdb-cf-val-type cf) 'octet-vector))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
295
         (kt (unless (rdb-cf-val-type cf) (or (rdb-cf-key-type cf) 'octet-vector))))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
296
     (make-field :name (rdb-cf-name cf)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
297
                 :type (if kt
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
298
                           (cons kt vt)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
299
                           vt))))
309
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
300
 
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
301
 (defmethod load-field ((self rdb-cf) (field field))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
302
   (let ((type (field-type field)))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
303
   (typecase type
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
304
     ;; note that this means you can't use LOAD-SCHEMA to reset an
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
305
     ;; rdb schema as you may expect.
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
306
     (null nil)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
307
     (atom (setf (rdb-cf-val-type self) type))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
308
     (list (setf (rdb-cf-key-type self) (car type)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
309
                 (rdb-cf-val-type self)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
310
                 (if (and (listp (cdr type))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
311
                          (= 1 (length (cdr type))))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
312
                     (cadr type)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
313
                     (cdr type)))))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
314
     self))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
315
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
316
 (defmethod load-schema ((self rdb) (schema schema))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
317
   "Load SCHEMA into rdb database object SELF. This will add any missing rdb-cfs
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
318
 and update existing key/value types for cfs with the same name. Existing cfs
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
319
 only get their their type slots updated on non-nil values."
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
320
   (loop for field across (fields schema)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
321
         do (if-let ((cf (find-cf (field-name field) self)))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
322
              (load-field cf field)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
323
              (push-cf
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
324
               (load-field (make-rdb-cf (field-name field)) field)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
325
               self)))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
326
   self)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
327
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
328
 (defmethod derive-schema ((self rdb))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
329
   (apply 'make-schema
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
330
          (loop for cf across (rdb-cfs self)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
331
                collect (translate-cf-to-field cf))))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
332
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
333
 (defun create-db (name &key opts cfs schema open)
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
334
   "Construct a new RDB instance from NAME.
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
335
 
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
336
 OPTS = rdb-opts
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
337
 CFS = (sequence rdb-cf)
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
338
 SCHEMA = rdb-schema
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
339
 OPEN = boolean
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
340
 
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
341
 CFS are always added before the SCHEMA which is loaded with LOAD-SCHEMA.
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
342
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
343
 When OPEN is non-nil, the database and all column families are opened and
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
344
 internal sap slots are initialized."
309
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
345
   ;; (when (probe-file name) (log:trace! "db exists: " name))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
346
   (let* ((opts (or opts (default-rdb-opts)))
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
347
          (obj
309
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
348
            (make-rdb
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
349
             (string-right-trim '(#\/)
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
350
                                (typecase name
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
351
                                  (pathname (namestring name))
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
352
                                  (string name)
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
353
                                  (t (error "invalid NAME: ~S" name))))
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
354
             opts
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
355
             (or (when cfs
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
356
                   (typecase cfs
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
357
                     (list (coerce cfs 'vector))
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
358
                     ((array rdb-cf) cfs)
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
359
                     (rdb-cf (vector cfs))
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
360
                     (t (log:warn! "invalid CF passed to create-db"))))
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
361
                 (make-array 0 :element-type 'rdb-cf :fill-pointer 0)))))
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
362
     (when schema
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
363
       (load-schema obj schema))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
364
     (when open
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
365
       (open-db obj))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
366
     obj))
99
40d91ba5a115 rdb stuff
ellis <ellis@rwest.io>
parents: 97
diff changeset
367
 
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
368
 (defmethod backfill-opts ((self rdb) &key full)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
369
   (with-slots (opts) self
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
370
     (if full
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
371
         (loop for k across *rocksdb-options*
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
372
               unless (opt-no-setter-p k)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
373
               do (pull-sap opts k))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
374
         (pull-sap* opts))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
375
     (rdb-opts-table opts)))
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
376
 
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
377
 (defmethod push-cf ((cf rdb-cf) (db rdb))
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
378
   (vector-push-extend cf (rdb-cfs db)))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
379
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
380
 (defmethod create-cf ((db rdb) (cf rdb-cf))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
381
   (create-cf-raw (rdb-db db) (rdb-cf-name cf) (rdb-opts-sap (rdb-opts db))))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
382
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
383
 (defmethod open-cf ((db rdb) (cf rdb-cf) &optional error)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
384
   (unless (null (rdb-cf-sap cf))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
385
     (if error
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
386
         (rdb-error "column family is already open - close before re-opening.")
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
387
         cf)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
388
     (setf (rdb-cf-sap cf) (open-cf-raw (rdb-db db) (default-rocksdb-options) (rdb-cf-name cf)))))
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
389
 
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
390
 (defmethod open-cf ((db rdb) (cf string) &optional (error t))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
391
   (if-let ((cf (find-cf cf db)))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
392
     (or (rdb-cf-sap cf)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
393
         (setf (rdb-cf-sap cf) (create-cf db cf)))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
394
     (when error (rdb-error "unable to find column-family"))))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
395
         
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
396
 (defmethod open-cfs ((self rdb))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
397
   (loop for cf across (rdb-cfs self)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
398
         do (setf (rdb-cf-sap cf)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
399
                  (create-cf self cf))))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
400
 
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
401
 (defmethod close-cfs ((self rdb))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
402
   (loop for cf across (rdb-cfs self)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
403
         do (close-cf cf)))
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
404
 
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
405
 (defmacro unless-null-db (slots self &body body)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
406
   `(with-slots (db ,@slots) ,self
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
407
      (unless (null db)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
408
        ,@body)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
409
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
410
 (defmethod destroy-cf ((cf rdb-cf))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
411
   (with-slots (sap) cf
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
412
     (unless (null sap)
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
413
       (setf sap (destroy-cf-raw sap)))))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
414
 
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
415
 (defmethod set-opt ((self rdb) key val &key push)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
416
   (with-slots (opts) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
417
     (set-opt opts key val :push push)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
418
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
419
 (defmethod get-opt ((self rdb) key)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
420
   (with-slots (opts) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
421
     (get-opt opts key)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
422
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
423
 (defmethod push-opts ((self rdb))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
424
   (with-slots (opts) self
309
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
425
     (push-sap* opts)))
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
426
 
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
427
 (defmethod open-db ((self rdb))
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
428
   (with-slots (name db opts) self
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
429
     (if db
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
430
         (rdb-error "DB already opened - close before re-opening")
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
431
         (setf db (open-db-raw name (rdb-opts-sap opts))))))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
432
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
433
 (defmethod get-prop ((self rdb) (propname string))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
434
   (unless-null-db () self
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
435
     (get-property-raw db propname)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
436
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
437
 (defmethod repair-db ((self rdb) &key)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
438
   (repair-db-raw (rdb-name self)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
439
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
440
 (defmethod open-backup-db ((self rdb) &key path)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
441
   (with-slots (opts) self
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
442
     (setf (rdb-backup self) (open-backup-engine-raw path (rdb-opts-sap opts)))))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
443
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
444
 (defmethod close-backup-db ((self rdb))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
445
   (with-slots (backup) self
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
446
     (unless (null backup)
274
5f782d361e08 threads and db tweaks. fixed a tricky macro error caused by string-case, dat/html now works.
Richard Westhaver <ellis@rwest.io>
parents: 273
diff changeset
447
       (setf backup (close-backup-engine-raw backup)))))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
448
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
449
 (defmethod backup-db ((self rdb) &key path)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
450
   (unless-null-db (opts backup) self
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
451
     (when (null backup)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
452
       (if (null path)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
453
           (error 'open-backup-engine-error :db db)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
454
           (open-backup-db self :path path)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
455
     (create-new-backup-raw backup db)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
456
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
457
 (defmethod restore-db ((self rdb) (from string) &key id opts)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
458
   (unless-null-db (name backup) self
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
459
     (when (null backup)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
460
       (open-backup-db self :path from))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
461
     (restore-from-backup-raw backup name from id opts)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
462
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
463
 (defmethod snapshot-db ((self rdb))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
464
   (unless-null-db (snapshots) self
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
465
     (vector-push-extend (create-snapshot-raw db) snapshots)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
466
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
467
 (defmethod get-metadata ((self rdb) &optional cf)
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
468
   (make-rdb-cf-metadata :sap (get-metadata-raw (rdb-db self) cf)))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
469
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
470
 (defmethod get-stats ((self rdb) &optional (htype (rocksdb-statistics-level "all")))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
471
   (make-rdb-stats (get-stats-raw (rdb-opts-sap (rdb-opts self)) htype)))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
472
 
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
473
 (defmethod create-iter ((self rdb) &optional cf (opts (rocksdb-readoptions-create)))
678
2b7d5a8d63ac alien octets fix, workin with org-graph-db
Richard Westhaver <ellis@rwest.io>
parents: 624
diff changeset
474
   (when cf
2b7d5a8d63ac alien octets fix, workin with org-graph-db
Richard Westhaver <ellis@rwest.io>
parents: 624
diff changeset
475
     (setf cf (etypecase cf
2b7d5a8d63ac alien octets fix, workin with org-graph-db
Richard Westhaver <ellis@rwest.io>
parents: 624
diff changeset
476
                (rdb-cf (rdb-cf-sap cf))
2b7d5a8d63ac alien octets fix, workin with org-graph-db
Richard Westhaver <ellis@rwest.io>
parents: 624
diff changeset
477
                (string (rdb-cf-sap (find-cf cf self)))
2b7d5a8d63ac alien octets fix, workin with org-graph-db
Richard Westhaver <ellis@rwest.io>
parents: 624
diff changeset
478
                (alien cf))))
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
479
   (unless-null-db () self
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
480
     (make-instance 'rdb-iter :sap (if cf
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
481
                                       (create-cf-iter-raw db cf opts)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
482
                                       (create-iter-raw db opts)))))
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
483
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
484
 (defmethod print-stats ((self rdb) &optional stream)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
485
   (print (rocksdb-options-statistics-get-string (rdb-opts-sap (rdb-opts self))) stream))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
486
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
487
 (defmethod flush-db ((self rdb) &key) ;; todo flushopts
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
488
   (flush-db-raw (rdb-db self)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
489
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
490
 (defmethod sync-db ((self rdb) (other null) &key)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
491
   (flush-db self))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
492
 
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
493
 (defmethod shutdown-db ((self rdb) &key wait)
309
94d358919982 refactor rust, fixing cli issues and rdb error handling
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
494
   (log:trace! "shutting down database" (rdb-name self))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
495
   (when-let ((db (rdb-db self)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
496
     (rocksdb-cancel-all-background-work db wait)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
497
     (close-db self)))
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
498
 
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
499
 (defmethod create-cfs ((self rdb) &key &allow-other-keys)
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
500
   (if (null (rdb-db self))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
501
       (warn 'db-missing :message "ignoring attempt to create column-families before opening")
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
502
       (loop for cf across (rdb-cfs self)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
503
             do (create-cf self cf))))
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
504
 
293
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
505
 (defmethod find-cf ((cf string) (self rdb) &key)
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
506
   "Find a CF by name."
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
507
   (find cf (rdb-cfs self) :key 'rdb-cf-name :test 'equal))
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
508
 
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
509
 (defmethod ingest-db ((self rdb) (files list) &key cf (opts (rocksdb-ingestexternalfileoptions-create)))
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
510
   (if cf
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
511
       (ingest-db-cf-raw (rdb-db self) (find-cf cf self) files opts)
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
512
       (ingest-db-raw (rdb-db self) files opts)))
292
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 282
diff changeset
513
 
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
514
 (defmethod destroy-cfs ((self rdb) &key &allow-other-keys)
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
515
   (with-slots (cfs) self
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
516
     (declare (type (array rdb-cf) cfs))
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
517
     (loop for cf across cfs
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
518
           do (setf cf (destroy-cf cf)))))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
519
 
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
520
 (defmethod close-db ((self rdb) &key &allow-other-keys)
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
521
   (with-slots (db cfs backup snapshots) self
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
522
     (close-backup-db self)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
523
     (unless (zerop (length snapshots))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
524
       (loop for s across snapshots do (release-snapshot-raw db s)))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
525
     (destroy-cfs self)
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
526
     (unless (null db)
274
5f782d361e08 threads and db tweaks. fixed a tricky macro error caused by string-case, dat/html now works.
Richard Westhaver <ellis@rwest.io>
parents: 273
diff changeset
527
       (setf db (close-db-raw db)))))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
528
 
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
529
 (defmethod destroy-db ((self rdb))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
530
   ;; close all handles before destruction ensues
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
531
   (close-db self)
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
532
   (destroy-db-raw (rdb-name self)))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
533
 
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
534
 (defmethod put-key ((self rdb) (key t) (val t))
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
535
   (put-kv-raw
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
536
    (rdb-db self)
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
537
    key
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
538
    val))
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
539
 
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
540
 (defmethod put-key ((self rdb) (key string) (val string))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
541
   (put-kv-raw
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
542
    (rdb-db self)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
543
    (sb-ext:string-to-octets key)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
544
    (sb-ext:string-to-octets val)))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
545
 
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
546
 (defmethod put-kv ((self rdb) (kv rdb-kv))
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
547
   (put-kv-raw
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
548
    (rdb-db self)
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
549
    (rdb-key kv)
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
550
    (rdb-val kv)))
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
551
 
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
552
 (defmethod insert-key ((self rdb) key val &key cf)
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
553
   (if-let ((cf (and cf (find-cf cf self))))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
554
     (if-let ((sap (rdb-cf-sap cf)))
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
555
       (put-cf-raw
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
556
        (rdb-db self)
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
557
        sap
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
558
        key
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
559
        val
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
560
        (rocksdb-writeoptions-create))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
561
       (rdb-error "column-family is not open"))
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
562
       (put-key self key val)))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
563
 
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
564
 (defmethod insert-key ((self rdb) (key string) (val string) &key cf)
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
565
   (insert-key self (string-to-octets key) (string-to-octets val) :cf cf))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
566
 
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
567
 (defmethod insert-key ((self rdb) (key string) val &key cf)
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
568
   (insert-key self (string-to-octets key) val :cf cf))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
569
 
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
570
 (defmethod insert-key ((self rdb) key (val string) &key cf)
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
571
   (insert-key self key (string-to-octets val) :cf cf))
225
Richard Westhaver <ellis@rwest.io>
parents: 224
diff changeset
572
 
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
573
 (defmethod insert-kv ((self rdb) (kv rdb-kv) &key cf (opts (rocksdb-writeoptions-create)))
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
574
   (if cf
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
575
       (let ((cf (etypecase cf
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
576
                   (rdb-cf cf)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
577
                   (t (find cf (rdb-cfs self)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
578
                            :key #'rdb-cf-name
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
579
                            :test #'equal)))))
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
580
         (put-cf-raw (rdb-db self)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
581
                     (rdb-cf-sap cf)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
582
                     (rdb-key kv)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
583
                     (rdb-val kv)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 277
diff changeset
584
                     opts))
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 225
diff changeset
585
       (put-kv self kv)))
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
586
 
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
587
 (defmethod get-key ((self rdb) (key string) &key (opts (rocksdb-readoptions-create)) cf)
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 230
diff changeset
588
   (with-slots (db) self
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
589
     (if cf
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
590
         (get-cf-str-raw db (rdb-cf-sap (find-cf cf self)) key opts)
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
591
         (get-kv-str-raw db key opts))))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
592
 
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
593
 (defmethod get-key ((self rdb) key &key (opts (rocksdb-readoptions-create)) cf)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
594
   (with-slots (db) self
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
595
     (if cf
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
596
         (get-cf-raw db (rdb-cf-sap (find-cf cf self)) key opts)
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
597
         (get-kv-raw db key opts))))