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 | 1 | (in-package :rdb) |
2 | ||
3 | ;;; rdb-opts |
|
94 | 4 | (defvar *rdb-opts-lookup-table* |
5 | (let ((table (make-hash-table :test #'equal))) |
|
6 | (mapc (lambda (x) (setf (gethash (car x) table) (cdr x))) |
|
7 | (loop for y across *rocksdb-options* |
|
225 | 8 | collect (cons y (format nil "~:@(rocksdb-options-set-~x~)" y)))) |
94 | 9 | table)) |
10 | ||
11 | (defun %set-rocksdb-option (opt key val) |
|
12 | (funcall (rdb-opt-setter key) opt val)) |
|
13 | ||
269 | 14 | (defun %get-rocksdb-option (opt key) |
15 | (if-let ((g (rdb-opt-getter key))) |
|
16 | (funcall g opt) |
|
17 | (warn 'opt-handler-missing :message key))) |
|
94 | 18 | |
282 | 19 | (defun opt-no-setter-p (k) |
20 | (let ((k (typecase k |
|
21 | (string (string-downcase k)) |
|
22 | (symbol (string-downcase (symbol-name k))) |
|
23 | (t (string-downcase (format nil "~s" k)))))) |
|
24 | (member t |
|
25 | (mapcar (lambda (x) (equal k x)) (list "parallelism" "enable-statistics"))))) |
|
26 | ||
94 | 27 | (defclass rdb-opts () |
102 | 28 | ((table :initarg :table :type hash-table :accessor rdb-opts-table) |
29 | (sap :initarg :sap :type (or null alien) :accessor rdb-opts-sap))) |
|
93 | 30 | |
112 | 31 | (defmethod initialize-instance ((self rdb-opts) &rest initargs &key &allow-other-keys) |
102 | 32 | (with-slots (sap table) self |
282 | 33 | ;; initialize slots - remember, initargs doesn't refer to slot |
34 | ;; names, they're opt names. |
|
102 | 35 | (unless (getf initargs :table) (setf table (make-hash-table :test #'equal))) |
94 | 36 | (unless (getf initargs :sap) (setf sap (rocksdb-options-create))) |
37 | (loop for (k v) on initargs by #'cddr while v |
|
38 | do (let ((k (typecase k |
|
39 | (string (string-downcase k)) |
|
40 | (symbol (string-downcase (symbol-name k))) |
|
102 | 41 | (t (string-downcase (format nil "~s" k)))))) |
94 | 42 | (set-opt self k v))) |
43 | self)) |
|
44 | ||
99 | 45 | (defun make-rdb-opts (&rest values) |
225 | 46 | (let ((opts (apply #'make-instance 'rdb-opts values))) |
47 | (push-sap* opts) |
|
48 | opts)) |
|
99 | 49 | |
94 | 50 | (defmethod get-opt ((self rdb-opts) key) |
51 | "Return the current value of KEY in SELF if found, else return nil." |
|
52 | (gethash key (rdb-opts-table self))) |
|
53 | ||
54 | (defmethod set-opt ((self rdb-opts) key val &key push) |
|
55 | "Set the VAL of KEY in SELF with '(setf (gethash SELF KEY) VAL)'." |
|
56 | (prog1 |
|
57 | (setf (gethash key (rdb-opts-table self)) val) |
|
58 | (when push (push-sap self key)))) |
|
59 | ||
60 | (defmethod push-sap ((self rdb-opts) key) |
|
61 | "Push KEY from slot :TABLE to the instance :SAP." |
|
102 | 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 | 64 | (defmethod push-sap* ((self rdb-opts)) |
65 | "Initialized the SAP slot with values from TABLE." |
|
66 | (with-slots (table) self |
|
225 | 67 | (loop for k in (hash-table-keys table) |
282 | 68 | ;; note how we don't handle any special cases here - we can |
69 | ;; always set an opt but sometimes we can't get it. |
|
94 | 70 | do (push-sap self k)))) |
71 | ||
269 | 72 | (defmethod pull-sap ((self rdb-opts) key) |
73 | (setf (gethash key (rdb-opts-table self)) (%get-rocksdb-option (rdb-opts-sap self) key))) |
|
74 | ||
75 | (defmethod pull-sap* ((self rdb-opts)) |
|
76 | (with-slots (table) self |
|
77 | (loop for k in (hash-table-keys table) |
|
282 | 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 | 80 | table)) |
81 | ||
82 | (defmethod backfill-opts ((self rdb-opts) &key full) |
|
83 | "Backfill the TABLE slot with values from SAP. |
|
84 | ||
85 | When FULL is non-nil, retrieve the full set of options available, not |
|
86 | just the keys currently present in TABLE." |
|
87 | (if full |
|
88 | (loop for k across *rocksdb-options* |
|
282 | 89 | unless (opt-no-setter-p k) |
269 | 90 | do (pull-sap self k)) |
91 | (pull-sap* self)) |
|
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 | 94 | (defun default-rdb-opts () |
282 | 95 | (make-rdb-opts :create-if-missing t :create-missing-column-families t |
96 | :parallelism (num-cpus))) |
|
93 | 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 | 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 | 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 | 108 | |
273
6d56c4950fa2
rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents:
272
diff
changeset
|
109 | ;;; iterator |
282 | 110 | (defclass rdb-iter (sequence) |
111 | ((sap :initform nil :initarg :sap :type (or null alien) :accessor rdb-iter-sap))) |
|
112 | ||
113 | (defmethod iter-valid-p ((self rdb-iter)) |
|
114 | (rocksdb-iter-valid (rdb-iter-sap self))) |
|
115 | ||
116 | (defmethod iter-seek-to-first ((self rdb-iter)) |
|
117 | (rocksdb-iter-seek-to-first (rdb-iter-sap self))) |
|
118 | ||
119 | (defmethod iter-seek-to-last ((self rdb-iter)) |
|
120 | (rocksdb-iter-seek-to-last (rdb-iter-sap self))) |
|
121 | ||
122 | (defmethod iter-seek-for-prev ((self rdb-iter) (key vector) &key) |
|
123 | (rocksdb-iter-seek-for-prev (rdb-iter-sap self) key (length key))) |
|
124 | ||
125 | (defmethod iter-seek ((self rdb-iter) (key simple-vector) &key) |
|
126 | (rocksdb-iter-seek (rdb-iter-sap self) key (length key))) |
|
127 | ||
128 | (defmethod iter-next ((self rdb-iter)) |
|
310 | 129 | (rocksdb-iter-next (rdb-iter-sap self))) |
282 | 130 | |
131 | (defmethod iter-prev ((self rdb-iter)) |
|
132 | (rocksdb-iter-prev (rdb-iter-sap self))) |
|
133 | ||
134 | (defmethod iter-key ((self rdb-iter)) |
|
135 | (with-alien ((klen size-t)) |
|
136 | (let ((key (rocksdb-iter-key (rdb-iter-sap self) (addr klen)))) |
|
137 | (let ((k (make-array klen :element-type 'octet))) |
|
138 | (clone-octets-from-alien key k klen) |
|
139 | (values |
|
140 | k |
|
141 | klen))))) |
|
142 | ||
143 | (defmethod iter-val ((self rdb-iter)) |
|
144 | (with-alien ((vlen size-t)) |
|
145 | (let ((val (rocksdb-iter-value (rdb-iter-sap self) (addr vlen)))) |
|
146 | (let ((v (make-array vlen :element-type 'octet))) |
|
147 | (clone-octets-from-alien val v vlen) |
|
148 | (values |
|
149 | v |
|
150 | vlen))))) |
|
151 | ||
152 | (defmethod iter-kv ((self rdb-iter)) |
|
153 | (make-kv (iter-key self) (iter-val self))) |
|
154 | ||
155 | (defmethod iter-timestamp ((self rdb-iter)) |
|
156 | (with-alien ((tslen size-t)) |
|
157 | (values |
|
158 | (rocksdb-iter-timestamp (rdb-iter-sap self) (addr tslen)) |
|
159 | tslen))) |
|
273
6d56c4950fa2
rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents:
272
diff
changeset
|
160 | |
226 | 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 | 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 | 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 | 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 | 271 | (name "" :type string) |
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 | 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 | 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 | 334 | "Construct a new RDB instance from NAME. |
335 | ||
336 | OPTS = rdb-opts |
|
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 | 339 | OPEN = boolean |
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 | 346 | (let* ((opts (or opts (default-rdb-opts))) |
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 | 364 | (when open |
273
6d56c4950fa2
rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents:
272
diff
changeset
|
365 | (open-db obj)) |
225 | 366 | obj)) |
99 | 367 | |
282 | 368 | (defmethod backfill-opts ((self rdb) &key full) |
369 | (with-slots (opts) self |
|
370 | (if full |
|
371 | (loop for k across *rocksdb-options* |
|
372 | unless (opt-no-setter-p k) |
|
373 | do (pull-sap opts k)) |
|
374 | (pull-sap* opts)) |
|
375 | (rdb-opts-table opts))) |
|
376 | ||
93 | 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 | 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 | 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 | 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 | 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 | 427 | (defmethod open-db ((self rdb)) |
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 | 480 | (make-instance 'rdb-iter :sap (if cf |
481 | (create-cf-iter-raw db cf opts) |
|
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 | 498 | |
225 | 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 | 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 | 515 | (with-slots (cfs) self |
516 | (declare (type (array rdb-cf) cfs)) |
|
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 | 519 | |
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 | 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 | 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 | 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 | 535 | (put-kv-raw |
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 | 538 | val)) |
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 | 546 | (defmethod put-kv ((self rdb) (kv rdb-kv)) |
547 | (put-kv-raw |
|
548 | (rdb-db self) |
|
549 | (rdb-key kv) |
|
550 | (rdb-val kv))) |
|
551 | ||
94 | 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 | 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 | 574 | (if cf |
282 | 575 | (let ((cf (etypecase cf |
576 | (rdb-cf cf) |
|
577 | (t (find cf (rdb-cfs self) |
|
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 | 580 | (put-cf-raw (rdb-db self) |
581 | (rdb-cf-sap cf) |
|
582 | (rdb-key kv) |
|
583 | (rdb-val kv) |
|
584 | opts)) |
|
226 | 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)))) |