I will try to answer this more carefully tomorrow morning.
For now just let me say that I have heard there is a bug about keys not being actually
removed; I will try to think about this when I have time tomorrow morning.
I am not sure what the problem is with the timestamps; but I have done things very similar
to what you are trying, so I assume we will be able to get it to work.
On Sat, 2006-04-08 at 11:26 +0300, Aycan iRiCAN wrote:
Hi, Firstly, I want to thank you again for this great project. Let me ask some questions. What is the difference between using get-instances-by-class and using cursors? When I use get-instances-by-class I get every instance (including deleted keys) of the class. But when I use cursors, I only get existing keys. HEDEE> (get-instances-by-class 'user) (#<USER "test" 3353473039> #<USER "aycan" 3353182543>) HEDEE> (remove-kv 5 *hedee-users*) T HEDEE> (get-instances-by-class 'user) (#<USER "test" 3353473039> #<USER "aycan" 3353182543>) HEDEE> (with-transaction () (with-btree-cursor (c *hedee-users*) (loop for (m k v) = (multiple-value-list (cursor-first c)) then (multiple-value-list (cursor-next c)) while m collect v into users finally (return (nreverse users))))) (#<USER "aycan" 3353182543>) Is it possible to completely remove a key from a btree? Say I have a class named user (used above): (defclass user () ((id :accessor id :initarg :id :type integer :initform (next-id) :index t) (name :accessor name :initarg :name :initform nil :index t) (epitaph :accessor epitaph :initarg :epitaph :initform nil) (image-type :accessor image-type :initarg :image-type :type string :initform nil) (timestamp :accessor timestamp :initarg :timestamp :type integer :index t :initform (get-universal-time))) (:metaclass persistent-metaclass)) and I created secondary indices via: (defun add-indices () (with-transaction () (add-index *hedee-users* :index-name 'id :key-form '(lambda (s key value) (declare (ignore s key)) (values t (id value)))) (add-index *hedee-users* :index-name 'name :key-form '(lambda (s key value) (declare (ignore s key)) (values t (name value)))) (add-index *hedee-users* :index-name 'timestamp :key-form '(lambda (s key value) (declare (ignore s key)) (values t (timestamp value)))))) I tried to get users with a timestamp around some delta (320000 in below) via: (get-instances-by-range 'user (get-index *hedee-users* 'timestamp) (get-universal-time) (- (get-universal-time) 320000)) But I'm getting: The value 3353473355 is not of type FIXNUM. How can I query by range using a timestamp? Best Regards, _______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel
_______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel