[elephant-devel] Class indexes dropped after database restart?

Red Daly reddaly at gmail.com
Wed Sep 23 03:41:02 UTC 2009


I should also note that I am using the version of elephant from darcs.  And
I discovered that when the program went down it was due to a segfault (I
believe in emacs).  However, all instances had been created under many
different transactions that did not abort.

Here is some more fiddling around:

CL-USER> (lisp-implementation-version)
"1.0.29.54.rc1"
BOOKS> (ele::get-db-schemas *ele-db* 'material)
NIL
BOOKS> (ele::controller-instance-class-index *ele-db*)
#<BDB-BTREE-INDEX
oid:13701>

BOOKS> (ele:map-btree #'(lambda (key
val)

                          (format t "~S => ~S~%" key
val))

                      (ele::controller-instance-class-index *ele-db*))
307 =>
307

NIL


Red

On Tue, Sep 22, 2009 at 8:08 PM, Red Daly <reddaly at gmail.com> wrote:

> I noticed there was a disparity between get-instances-by-class and
> map-inverted-index.  I will let the code speak for itself:
>
> BOOKS> (length (ele:map-inverted-index #'(lambda (isbn obj) obj) 'material
> 'isbn :collect
> t))
>
> 1945
>
> BOOKS> (length (ele:get-instances-by-class 'material))
> 0
> BOOKS> (defparameter f (make-instance 'material :title "Fake Book"))
> F
>
> BOOKS> (length (ele:get-instances-by-class 'material))
> 1
>
> BOOKS> (length (ele:map-inverted-index #'(lambda (isbn obj) obj) 'material
> 'isbn :collect
> t))
>
> 1946
>
> There is a similar problem with the university class.
>
> BOOKS> (length (ele:get-instances-by-class 'university))
> 0
> BOOKS> *stanford-university*
> #<UNIVERSITY
> oid:204>
>
> BOOKS> (official-name *stanford-university*)
> "Stanford University"
>
> All of the instances in the database were created in a prior session.  Then
> I shut down the DB and restarted Lisp.  Now MAP-CLASS and
> GET-INSTANCES-BY-CLASS return nil for all classes.  It seems like new
> instances get added to the "class index," but older instances are not
> found.  However, these classes persist in the inverted slot indexes.  Can
> anybody diagnose what's going on?
>
> here are the definitions of the classes:
>
> (defclass department ()
>   ((university :initarg :university :initform nil :accessor
> department-university
>                :index t)
>    (official-name :initarg :official-name :initform nil :accessor
> official-name)
>    (common-name :initarg :common-name :initform nil :accessor common-name)
>    (abbreviation :initarg :abbreviation :initform nil :accessor
> abbreviation
>                  :index t))
>   (:metaclass ele:persistent-metaclass)
>   (:documentation "A department has a bunch of course listings."))
>
> (defclass material ()
>   ((title :initarg :title :initform nil :accessor material-title
>           :index t)
>    (authors :initarg :authors :initform nil :accessor material-authors) ;;
> a list of
> authors
>
>    (edition :initarg :edition :initform nil :accessor material-edition)
>    (isbn :initarg :isbn :initform nil :accessor material-isbn
>          :index t)
>    (asin :initarg :asin :initform nil :accessor material-asin
>          :index t
>          :documentation "An Amazon.com identifier that uniquely identifies
> the material")
>    (image-uri :initarg :image-uri :initform nil :accessor
> material-image-uri))
>   (:metaclass ele:persistent-metaclass))
>
> Thanks,
> Red
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/elephant-devel/attachments/20090922/a7b5c0f4/attachment.html>


More information about the elephant-devel mailing list