Update of /project/elephant/cvsroot/elephant/src/db-bdb In directory clnet:/tmp/cvs-serv28850/src/db-bdb
Modified Files: bdb-collections.lisp bdb-controller.lisp package.lisp Log Message: Cleaned up optimize-storage for BDB backends with optimize-layout generic function on stores and btrees
--- /project/elephant/cvsroot/elephant/src/db-bdb/bdb-collections.lisp 2007/02/14 04:36:09 1.18 +++ /project/elephant/cvsroot/elephant/src/db-bdb/bdb-collections.lisp 2007/02/16 07:11:02 1.19 @@ -72,6 +72,13 @@ (db-delete-buffered (controller-btrees sc) key-buf))))
+(defmethod optimize-layout ((bt bdb-btree) &key (freelist-only t) (free-space nil) &allow-other-keys) + (optimize-layout (get-con bt) + :start-key (oid bt) + :end-key (oid bt) + :freelist-only freelist-only + :free-space free-space)) + ;; Secondary indices
(defclass bdb-indexed-btree (indexed-btree bdb-btree) @@ -232,7 +239,7 @@ (buffer-write-oid (oid bt) key-buf) (serialize key key-buf (get-con bt)) (let ((buf (db-get-key-buffered - (controller-indices-assoc (get-con bt)) + (controller-indices-assoc (get-con bt)) key-buf value-buf))) (if buf (values (deserialize buf (get-con bt)) T) (values nil nil))))) --- /project/elephant/cvsroot/elephant/src/db-bdb/bdb-controller.lisp 2007/02/16 03:43:47 1.25 +++ /project/elephant/cvsroot/elephant/src/db-bdb/bdb-controller.lisp 2007/02/16 07:11:02 1.26 @@ -251,23 +251,29 @@ ;; Take advantage of release 4.4's compact storage feature. Feature of BDB only ;;
-(defmethod optimize-storage ((ctrl bdb-store-controller) &key start-key stop-key - (freelist-only nil) (free-space t) - &allow-other-keys) +(defmethod optimize-layout ((ctrl bdb-store-controller) &key start-key stop-key + (freelist-only t) (free-space nil) + &allow-other-keys) "Tell the backend to optimize and reclaim storage between key values" (with-buffer-streams (start stop end) - (if (null start) + (if (null start-key) (progn - (db-compact (controller-db ctrl) nil nil end) - (db-compact (controller-btrees ctrl) nil nil end) (db-compact (controller-indices ctrl) nil nil end) - (db-compact (controller-indices-assoc ctrl) nil nil end) - (db-compact (controller-oid-db ctrl) nil nil end)) + (db-compact (controller-db ctrl) nil nil end) + (db-compact (controller-btrees ctrl) nil nil end)) (progn (serialize start-key start ctrl) - (db-compact (controller-db ctrl) start - (when stop-key (serialize stop-key stop ctrl) stop) - end + (when stop-key (serialize stop-key stop ctrl)) + (db-compact (controller-indices ctrl) start + (when stop-key stop) end + :freelist-only freelist-only + :free-space free-space) + (db-compact (controller-db ctrl) nil + (when stop-key stop) end + :freelist-only freelist-only + :free-space free-space) + (db-compact (controller-btrees ctrl) nil + (when stop-key stop) end :freelist-only freelist-only :free-space free-space))) (values (deserialize end ctrl)))) --- /project/elephant/cvsroot/elephant/src/db-bdb/package.lisp 2007/02/14 04:36:10 1.4 +++ /project/elephant/cvsroot/elephant/src/db-bdb/package.lisp 2007/02/16 07:11:02 1.5 @@ -41,4 +41,4 @@ (:import-from :ccl #:byte-length) (:export - #:optimize-storage)) + #:optimize-layout))