From read at robertlread.net Sun Dec 4 03:19:26 2005 From: read at robertlread.net (Robert L. Read) Date: Sat, 03 Dec 2005 21:19:26 -0600 Subject: [elephant-devel] Possible bug fix for the SBCL unicode problem.. Message-ID: <1133666366.28614.3.camel@localhost.localdomain> Making the following change to the function buffer-read-ucs4-string (and a similar one in ucs1-string makes all the tests green on a unicode-enabled SBCL 9.5. I debugged it right down to this routine so I'm pretty sure I've got it correct; and the tests are exhaustive. But it is fairly mystifying to me how the original code (that I have commented out) got in there in so VASTLY different a form. Can someone tell me that either SBCL really, really change the call interface of that the original code pasted from somewhere erroneously? I would love to have a fix to this problem....but I'm a little befuddled. #+(and sbcl sb-unicode) (defun buffer-read-ucs4-string (bs byte-length) "Read a UCS4 string." (declare (optimize (speed 3) (safety 0)) (type buffer-stream bs) (type fixnum byte-length)) (let ((position (buffer-stream-position bs))) (setf (buffer-stream-position bs) (+ position byte-length)) (let ((res (make-string (/ byte-length 4) :element-type 'character))) ;; (format t "READ UCS4 STRING ABOUT TO do a copy-ub8-from-system- aread ") ;; (format t "Postion: ~A dest off ~A len ~A" position ;; ;; This is a nasty little bit of work; it means ;; ;; that (obviously) depending on what we are writing into we'll get different things... ;; ;; but the str-copy is somehow doing the correct thing... I don't think ;; ;; the statement is matching the "make-string" statement above! ;; sb-vm:vector-data-offset ;; byte-length) ;; #+#.(sleepycat::new-style-copy-p) ;; (sb-kernel:copy-ub8-from-system-area ;; (sb-alien:alien-sap (buffer-stream-buffer bs)) ;; (* position sb-vm:n-byte-bits) ;; res ;; (* sb-vm:vector-data-offset sb-vm:n-word-bits) ;; (* byte-length sb-vm:n-byte-bits)) #+#.(sleepycat::new-style-copy-p) (sb-kernel:copy-ub8-from-system-area (sb-alien:alien-sap (buffer-stream-buffer bs)) position res ;; This changing this to zero solves the problem; the real question ;; must be that the make-string above matches ;; sb-vm:vector-data-offset 0 byte-length) #-#.(sleepycat::new-style-copy-p) (sb-kernel:copy-from-system-area (sb-alien:alien-sap (buffer-stream-buffer bs)) (* position sb-vm:n-byte-bits) res (* sb-vm:vector-data-offset sb-vm:n-word-bits) (* byte-length sb-vm:n-byte-bits)) res))) -------------- next part -------------- An HTML attachment was scrubbed... URL: From waldo at trianet.net Thu Dec 15 19:32:05 2005 From: waldo at trianet.net (Waldo Rubinstein) Date: Thu, 15 Dec 2005 14:32:05 -0500 Subject: [elephant-devel] (no subject) Message-ID: <1D9E17CE-AB48-4B42-ACC4-A1DB3671A7F2@trianet.net> Hi, I'm fairly new to Lisp and very new to Elephant. I'm thinking of developing some apps using UCW and Elephant and was wondering a few things: 1) Is Elephant ready for production code even though it's still on version 0.3.0? 2) How scalable is Elephant? I feel confident that Berkeley DB is very robust even for large data repositories. But, does Elephant scale well working with large repositories? 3) My application generates a lot of records. Some of these objects (records) have complex structures (many levels of inheritance and relations) and some are very flat. The ones that are very flat are normally very large quantities (at least for me). I may be generating about 10000 new simple objects on a daily basis. Does anyone have any suggestion as to the proper storage of these? Would using something like a btree be efficient enough for fast querying? 4) Is there any support for "LIKE" type searches in Elephant? Some of the queries I currently run against MySQL are along the lines of WHERE last_name LIKE 'smit%'. I would assume I could create secondary indices for last_name (as an attribute), but will it allow me to do "LIKE" searches? Thanks for your support, Waldo From read at robertlread.net Thu Dec 15 20:50:28 2005 From: read at robertlread.net (Robert L. Read) Date: Thu, 15 Dec 2005 14:50:28 -0600 Subject: [elephant-devel] (no subject) In-Reply-To: <1D9E17CE-AB48-4B42-ACC4-A1DB3671A7F2@trianet.net> References: <1D9E17CE-AB48-4B42-ACC4-A1DB3671A7F2@trianet.net> Message-ID: <1134679829.8632.373.camel@localhost.localdomain> On Thu, 2005-12-15 at 14:32 -0500, Waldo Rubinstein wrote: > Hi, > > I'm fairly new to Lisp and very new to Elephant. I'm thinking of > developing some apps using UCW and Elephant and was wondering a few > things: Welcome. > > 1) Is Elephant ready for production code even though it's still on > version 0.3.0? I intend to use it for production; I wouldn't let an Astronaut's life depend on it. I think this is a very difficult question to answer. I worked as a Java programmer for 5 years and as a Perl programmer before that; we were always doing things to be more "enterprise ready" and believe me, everything has problems. I personally am much more ready to say something is "production ready" than others, so I might be the wrong person to answer this. As a fan of the extreme programming methodology, I would recommend a "Spike Solution" test --- design a simple test that can be rapidly executed to get the information you need. > 2) How scalable is Elephant? I feel confident that Berkeley DB is > very robust even for large data repositories. But, does Elephant > scale well working with large repositories? I think so. I am the maintainer, not the author of the original code. I wrote the SQL-based stuff; it is slower and possibly has bugs the BerkeleyDB stuff doesn't. It runs my tiny website flawlessly, and comes with a suite of tests. > 3) My application generates a lot of records. Some of these objects > (records) have complex structures (many levels of inheritance and > relations) and some are very flat. The ones that are very flat are > normally very large quantities (at least for me). I may be generating > about 10000 new simple objects on a daily basis. Does anyone have any > suggestion as to the proper storage of these? Would using something > like a btree be efficient enough for fast querying? The BerkeleyDB system uses btrees. Yes, the btrees offered by BerkeleyDB (and extention by Elephant) are very fast, and there is nothing faster except in very specialized circumstances. > 4) Is there any support for "LIKE" type searches in Elephant? Some of > the queries I currently run against MySQL are along the lines of > WHERE last_name LIKE 'smit%'. I would assume I could create secondary > indices for last_name (as an attribute), but will it allow me to do > "LIKE" searches? No, there isn't any support for that (that I'm aware of?). You could keep the field that has 'smit*' in it in a separate table, and perform a pattern match by loading it all into memory, or calling map-btree over it, and then look up the rest of the objects based only on the matches. Personally, I use Elephant in an "Object Prevalence" style --- that is, I keep all the objects in memory by default, and use the Elephant store to recover from bugs and tripping over the power cord. Some people object quite emotionally to that style, and worry about running out of memory. If you keep things in memory, "like" is easily done in lisp. If your object space is very large and you need like, you would probably want to just use CL-SQL directly; it is very nice. Elephant saves you from having to worry about SQL and table structures. > > Thanks for your support, > Waldo > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel -------------- next part -------------- An HTML attachment was scrubbed... URL: From klaus at harbo.net Thu Dec 15 23:53:00 2005 From: klaus at harbo.net (Klaus Harbo) Date: Fri, 16 Dec 2005 00:53:00 +0100 Subject: [elephant-devel] Elephant & Lispworks? Message-ID: <02AC7DC4-0D6D-4445-BF0F-B74760FE3810@harbo.net> I've been taking a closer look at Elephant this evening, but haven't had too much luck getting it work with Lispworks. In src/ sleepycat.lisp, the code (eval-when (:compile-toplevel :load-toplevel) (unless (uffi:load-foreign-library (if (find-package 'asdf) (merge-pathnames #p"libmemutil.so" (asdf:component-pathname (asdf:find-system 'elephant))) (format nil "~A/~A" *elephant-lib-path* "libmemutil.so")) :module "libmemutil") (error "Couldn't load libmemutil.so!")) ;; fini on user editable part (def-type pointer-int (* :int)) (def-type pointer-void :pointer-void) ! (def-foreign-type array-or-pointer-char ! #+allegro (:array :char) ! #+(or cmu sbcl scl openmcl) (* :char)) (def-type array-or-pointer-char array-or-pointer-char) (def-enum DBTYPE ((:BTREE 1) :HASH :QUEUE :RECNO :UNKNOWN)) ) combined with the definition of def-foreign-type in UFFI (I have v1.5.7 downloaded today) (defmacro def-foreign-type (name type) #+lispworks `(fli:define-c-typedef ,name ,(convert-from- uffi-type type :type)) ... ) suggests to me that Lispworks is NOT supported in Elephant(?). I'm not too familiar with FLI, though, so I may be missing something... I'm wondering if anyone on the list could enlighten me? -Klaus. From read at robertlread.net Fri Dec 16 00:41:13 2005 From: read at robertlread.net (Robert L. Read) Date: Thu, 15 Dec 2005 18:41:13 -0600 Subject: [elephant-devel] Elephant & Lispworks? In-Reply-To: <02AC7DC4-0D6D-4445-BF0F-B74760FE3810@harbo.net> References: <02AC7DC4-0D6D-4445-BF0F-B74760FE3810@harbo.net> Message-ID: <1134693674.8632.388.camel@localhost.localdomain> Dear Klaus, I'm the maintainer, and I'm afraid I don't know the answer to this. Perhaps Ben or one of the other original authors on this list can answer? I of course will be happy to investigate, but I don't have a copy of Lispworks. I'm sure the code worked with lispworks at one time; I can't imagine so many directives for it if it didn't, and the explicit mentions in the file NOTES suggest it worked at one time. It is possible that I have broken the Lispworks compatibility in one of the recent versions. If you can make it work there, I will gladly apply your patches. Unquestionably the latest version is best tested under SBCL. On Fri, 2005-12-16 at 00:53 +0100, Klaus Harbo wrote: > I've been taking a closer look at Elephant this evening, but haven't > had too much luck getting it work with Lispworks. In src/ > sleepycat.lisp, the code > > (eval-when (:compile-toplevel :load-toplevel) > (unless > (uffi:load-foreign-library > (if (find-package 'asdf) > (merge-pathnames > #p"libmemutil.so" > (asdf:component-pathname (asdf:find-system > 'elephant))) > (format nil "~A/~A" *elephant-lib-path* > "libmemutil.so")) > :module "libmemutil") > (error "Couldn't load libmemutil.so!")) > ;; fini on user editable part > (def-type pointer-int (* :int)) > (def-type pointer-void :pointer-void) > ! (def-foreign-type array-or-pointer-char > ! #+allegro (:array :char) > ! #+(or cmu sbcl scl openmcl) (* :char)) > (def-type array-or-pointer-char array-or-pointer-char) > (def-enum DBTYPE ((:BTREE 1) :HASH :QUEUE :RECNO :UNKNOWN)) > ) > > combined with the definition of def-foreign-type in UFFI (I have > v1.5.7 downloaded today) > > (defmacro def-foreign-type (name type) > #+lispworks `(fli:define-c-typedef ,name ,(convert-from- > uffi-type type :type)) > ... > ) > > suggests to me that Lispworks is NOT supported in Elephant(?). I'm > not too familiar with FLI, though, so I may be missing something... > I'm wondering if anyone on the list could enlighten me? > > -Klaus. > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel -------------- next part -------------- An HTML attachment was scrubbed... URL: From waldo at trianet.net Fri Dec 16 01:01:55 2005 From: waldo at trianet.net (Waldo Rubinstein) Date: Thu, 15 Dec 2005 20:01:55 -0500 Subject: [elephant-devel] Elephant & Lispworks? In-Reply-To: <1134693674.8632.388.camel@localhost.localdomain> References: <02AC7DC4-0D6D-4445-BF0F-B74760FE3810@harbo.net> <1134693674.8632.388.camel@localhost.localdomain> Message-ID: <58571E83-E108-4947-8A74-CDF7BCBDC110@trianet.net> Robert, Just out of curiosity, it sounds as if the original authors no longer work on this project. Am I wrong? Thanks, Waldo On Dec 15, 2005, at 7:41 PM, Robert L. Read wrote: > Dear Klaus, > I'm the maintainer, and I'm afraid I don't know the answer to > this. Perhaps Ben or > one of the other original authors on this list can answer? > > I of course will be happy to investigate, but I don't have a > copy of Lispworks. > I'm sure the code worked with lispworks at one time; I can't > imagine so many directives for > it if it didn't, and the explicit mentions in the file NOTES > suggest it worked at one time. > It is possible that I have broken the Lispworks compatibility in > one of the recent versions. > > If you can make it work there, I will gladly apply your patches. > > Unquestionably the latest version is best tested under SBCL. > > > On Fri, 2005-12-16 at 00:53 +0100, Klaus Harbo wrote: >> I've been taking a closer look at Elephant this evening, but haven't >> had too much luck getting it work with Lispworks. In src/ >> sleepycat.lisp, the code >> >> (eval-when (:compile-toplevel :load-toplevel) >> (unless >> (uffi:load-foreign-library >> (if (find-package 'asdf) >> (merge-pathnames >> #p"libmemutil.so" >> (asdf:component-pathname (asdf:find-system >> 'elephant))) >> (format nil "~A/~A" *elephant-lib-path* >> "libmemutil.so")) >> :module "libmemutil") >> (error "Couldn't load libmemutil.so!")) >> ;; fini on user editable part >> (def-type pointer-int (* :int)) >> (def-type pointer-void :pointer-void) >> ! (def-foreign-type array-or-pointer-char >> ! #+allegro (:array :char) >> ! #+(or cmu sbcl scl openmcl) (* :char)) >> (def-type array-or-pointer-char array-or-pointer-char) >> (def-enum DBTYPE ((:BTREE >> 1) :HASH :QUEUE :RECNO :UNKNOWN)) >> ) >> >> combined with the definition of def-foreign-type in UFFI (I have >> v1.5.7 downloaded today) >> >> (defmacro def-foreign-type (name type) >> #+lispworks `(fli:define-c-typedef ,name ,(convert-from- >> uffi-type type :type)) >> ... >> ) >> >> suggests to me that Lispworks is NOT supported in Elephant(?). I'm >> not too familiar with FLI, though, so I may be missing something... >> I'm wondering if anyone on the list could enlighten me? >> >> -Klaus. >> _______________________________________________ >> elephant-devel site list >> elephant-devel at common-lisp.net >> http://common-lisp.net/mailman/listinfo/elephant-devel > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel -------------- next part -------------- An HTML attachment was scrubbed... URL: From read at robertlread.net Thu Dec 22 15:15:09 2005 From: read at robertlread.net (Robert L. Read) Date: Thu, 22 Dec 2005 09:15:09 -0600 Subject: [elephant-devel] Re: elephant on ACL 6.2 using BDB In-Reply-To: <200512220144.jBM1i6la027816@blombos.isi.edu> References: <200512220144.jBM1i6la027816@blombos.isi.edu> Message-ID: <1135264509.6343.87.camel@localhost.localdomain> Deare Elephant Users and Developers, Andrew Philpot has discovered a major bug in the 0.3.0 version of Elephant used on Allegro. As his (attached) debugging code shows, there is apparently a difference in the way Allegro and SBCL behave in terms of the MOP. This means that at present, 0.3.0 doesn't work with Allegro and there is no simple workaround. I can't work on this much until after X-mas. Fixing this is the highest priority for the project, in my opinion; I will work on it then. However, I don't have a copy of Allegro and don't have much experience with the MOP. If someone knows why Allegro "unsets" the slot values after they have been set and knows how to fix it, please tell me. I will eventually solve this problem but it would be even better if a user could submit a patch for me. Many thanks to Andrew for solving this problem; I will update the project home page to reflect this today. As far as I know, 0.2.0 continues to work with Allegro. On Wed, 2005-12-21 at 17:44 -0800, Andrew Philpot wrote: > I agree that it seems to be some kind of ACL MOP difference. > > I metered various bits of initialization code I could find to see who > is setting slot DBCONNECTION-SPEC-PST of the persistent object. > > It looks like it gets set by all the specializations and then unset by > STANDARD-OBJECT's INITIALIZE-INSTANCE method. I can't test that > directly, since I can't advice or specialize that CL-provided method. > If this is indeed what is happening, I think you will have an idea of > what to do, or perhaps we can formulate a question to Franz. > > Sorry for the messiness of the transcript, as I've run out of time. > > Thanks for taking a look. > > Andrew -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- (in-package :elephant) (defun %%accessor (instance) (:dbcn-spc-pst instance)) (defun %%sluc (instance) (slot-value-using-class (class-of instance) instance (find 'elephant::dbconnection-spec-pst (class-slots (find-class 'elephant-tests::pfoo)) :key #'clos::slot-definition-name))) (defmethod initialize-instance :before ((instance persistent) &rest initargs &key from-oid spec ;; Putting the default use ;; of the global variable here ;; is very bad for testing and multi-repository ;; use; it is, however, good for making ;; things work exactly the way they originally did! (sc *store-controller*)) "Sets the OID." (declare (ignore initargs)) ;; This lines are fundamentally valuable in making sure that ;; we have completely specified things. ;; (if (null sc) ;; (break)) (if (not from-oid) (setf (oid instance) (next-oid sc)) (setf (oid instance) from-oid)) (if (not spec) (if (not (typep sc 'bdb-store-controller)) (setf (:dbcn-spc-pst instance) (:dbcn-spc sc)) (setf (:dbcn-spc-pst instance) (controller-path sc)) ) (setf (:dbcn-spc-pst instance) spec)) (format *debug-io* "~&* Exiting INITIALIZE-INSTANCE :BEFORE Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance)) (cache-instance sc instance)) (defmethod shared-initialize :around ((instance persistent-object) slot-names &rest initargs &key &allow-other-keys) "Initializes the persistent slots via initargs or forms. This seems to be necessary because it is typical for implementations to optimize setting the slots via initforms and initargs in such a way that slot-value-using-class et al aren't used. Calls the next method for the transient slots." (format *debug-io* "~&* Entering SHARED-INITIALIZE :AROUND. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance)) (let* ((class (class-of instance)) (persistent-slot-names (persistent-slot-names class))) (flet ((persistent-slot-p (item) (member item persistent-slot-names :test #'eq))) (let ((transient-slot-inits (if (eq slot-names t) ; t means all slots (transient-slot-names class) (remove-if #'persistent-slot-p slot-names))) (persistent-slot-inits (if (eq slot-names t) persistent-slot-names (remove-if-not #'persistent-slot-p slot-names)))) ;; initialize the persistent slots (flet ((initialize-from-initarg (slot-def) (loop for initarg in initargs with slot-initargs = (slot-definition-initargs slot-def) when (member initarg slot-initargs :test #'eq) do (setf (slot-value-using-class class instance slot-def) (getf initargs initarg)) (return t)))) (loop for slot-def in (class-slots class) unless (initialize-from-initarg slot-def) when (member (slot-definition-name slot-def) persistent-slot-inits :test #'eq) unless (slot-boundp-using-class class instance slot-def) do (let ((initfun (slot-definition-initfunction slot-def))) (when initfun (setf (slot-value-using-class class instance slot-def) (funcall initfun)))) ) ;; let the implementation initialize the transient slots (format *debug-io* "~&* Exiting SHARED-INITIALIZE :AROUND. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance)) (apply #'call-next-method instance transient-slot-inits initargs)))))) #+HANGS_ACL (excl::defadvice (METHOD INITIALIZE-INSTANCE (standard-object)) :around (when (typep instance 'elephant-tests::pfoo) (format *debug-io* "~&* Entering INITIALIZE-INSTANCE :AROUND for STANDARD-OBJECT. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance))) (multiple-value-prog1 :do-it (when (typep instance 'elephant-tests::pfoo) (format *debug-io* "~&* Exiting INITIALIZE-INSTANCE :AROUND for STANDARD-OBJECT. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance))))) (defmethod initialize-instance :around ((instance persistent) &rest initargs &key from-oid spec ;; Putting the default use ;; of the global variable here ;; is very bad for testing and multi-repository ;; use; it is, however, good for making ;; things work exactly the way they originally did! (sc *store-controller*)) (multiple-value-prog1 (call-next-method) (format *debug-io* "~&* Exiting INITIALIZE-INSTANCE :AROUND. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance)))) -------------- next part -------------- (in-package :elephant) (defun %%accessor (instance) (:dbcn-spc-pst instance)) (defun %%sluc (instance) (slot-value-using-class (class-of instance) instance (find 'elephant::dbconnection-spec-pst (class-slots (find-class 'elephant-tests::pfoo)) :key #'clos::slot-definition-name))) (defmethod initialize-instance :before ((instance persistent) &rest initargs &key from-oid spec ;; Putting the default use ;; of the global variable here ;; is very bad for testing and multi-repository ;; use; it is, however, good for making ;; things work exactly the way they originally did! (sc *store-controller*)) "Sets the OID." (declare (ignore initargs)) ;; This lines are fundamentally valuable in making sure that ;; we have completely specified things. ;; (if (null sc) ;; (break)) (if (not from-oid) (setf (oid instance) (next-oid sc)) (setf (oid instance) from-oid)) (if (not spec) (if (not (typep sc 'bdb-store-controller)) (setf (:dbcn-spc-pst instance) (:dbcn-spc sc)) (setf (:dbcn-spc-pst instance) (controller-path sc)) ) (setf (:dbcn-spc-pst instance) spec)) (format *debug-io* "~&* Exiting INITIALIZE-INSTANCE :BEFORE Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance)) (cache-instance sc instance)) (defmethod shared-initialize :around ((instance persistent-object) slot-names &rest initargs &key &allow-other-keys) "Initializes the persistent slots via initargs or forms. This seems to be necessary because it is typical for implementations to optimize setting the slots via initforms and initargs in such a way that slot-value-using-class et al aren't used. Calls the next method for the transient slots." (format *debug-io* "~&* Entering SHARED-INITIALIZE :AROUND. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance)) (let* ((class (class-of instance)) (persistent-slot-names (persistent-slot-names class))) (flet ((persistent-slot-p (item) (member item persistent-slot-names :test #'eq))) (let ((transient-slot-inits (if (eq slot-names t) ; t means all slots (transient-slot-names class) (remove-if #'persistent-slot-p slot-names))) (persistent-slot-inits (if (eq slot-names t) persistent-slot-names (remove-if-not #'persistent-slot-p slot-names)))) ;; initialize the persistent slots (flet ((initialize-from-initarg (slot-def) (loop for initarg in initargs with slot-initargs = (slot-definition-initargs slot-def) when (member initarg slot-initargs :test #'eq) do (setf (slot-value-using-class class instance slot-def) (getf initargs initarg)) (return t)))) (loop for slot-def in (class-slots class) unless (initialize-from-initarg slot-def) when (member (slot-definition-name slot-def) persistent-slot-inits :test #'eq) unless (slot-boundp-using-class class instance slot-def) do (let ((initfun (slot-definition-initfunction slot-def))) (when initfun (setf (slot-value-using-class class instance slot-def) (funcall initfun)))) ) ;; let the implementation initialize the transient slots (format *debug-io* "~&* Exiting SHARED-INITIALIZE :AROUND. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance)) (apply #'call-next-method instance transient-slot-inits initargs)))))) #+HANGS_ACL (excl::defadvice (METHOD INITIALIZE-INSTANCE (standard-object)) :around (when (typep instance 'elephant-tests::pfoo) (format *debug-io* "~&* Entering INITIALIZE-INSTANCE :AROUND for STANDARD-OBJECT. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance))) (multiple-value-prog1 :do-it (when (typep instance 'elephant-tests::pfoo) (format *debug-io* "~&* Exiting INITIALIZE-INSTANCE :AROUND for STANDARD-OBJECT. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance))))) (defmethod initialize-instance :around ((instance persistent) &rest initargs &key from-oid spec ;; Putting the default use ;; of the global variable here ;; is very bad for testing and multi-repository ;; use; it is, however, good for making ;; things work exactly the way they originally did! (sc *store-controller*)) (multiple-value-prog1 (call-next-method) (format *debug-io* "~&* Exiting INITIALIZE-INSTANCE :AROUND. Using accessor DBCONNECTION-SPEC-PST of instance is ~S Using SLUC DBCONNECTION-SPEC-PST of instance is ~S" (%%accessor instance) (%%sluc instance)))) -------------- next part -------------- ============================================================== Starting image `alisp' with image (dxl) file `/nfs/isd3/sims-bands/linux/acl6.2/std.dxl' with no arguments in directory `/nfs/isd3/philpot/lisp/system/elephant/elephant/src/' on machine `blombos.isi.edu'. International Allegro CL Enterprise Edition 6.2 [Linux (x86)] (Aug 6, 2004 8:03) Copyright (C) 1985-2002, Franz Inc., Berkeley, CA, USA. All Rights Reserved. This development copy of Allegro CL is licensed to: [TC7569] USC-ISI ; Loading /opt/acl62/siteinit.cl ; Loading /nfs/isd3/philpot/lisp/init/clinit.cl ;;; Starting Lisp (PID:27793) ; Loading /nfs/isd3/philpot/lisp/init/lp.lisp ; Loading LH:init;std-config.lisp (/nfs/isd3/philpot/lisp/init/std-config.lisp) ;;; alias :MAKE defined for USER::MAKE ; Fast loading LH:bootstrap;defsystem;patch1.xfasl ; (/nfs/isd3/philpot/lisp/bootstrap/defsystem/patch1.xfasl) ; Fast loading LH:bootstrap;defsystem;patch2.xfasl ; (/nfs/isd3/philpot/lisp/bootstrap/defsystem/patch2.xfasl) Defined MK language # Warning: UPDATE DIR UNKNOWN ; Fast loading /nfs/isd3/philpot/lisp/system/asdf/asdf.xfasl ; Fast loading /nfs/isd3/philpot/lisp/bootstrap/asdf-config.xfasl ; Fast loading /nfs/isd3/philpot/lisp/bootstrap/asdf-require.xfasl ;; Optimization settings: safety 1, space 1, speed 1, debug 2. ;; For a complete description of all compiler switches given the current optimization settings ;; evaluate (EXPLAIN-COMPILER-SETTINGS). CL-USER(1): (build-elephant) ; loading system definition from /nfs/isd3/philpot/lisp/defsys/uffi157.asd into ; # ; Loading /nfs/isd3/philpot/lisp/defsys/uffi157.asd ; registering # as UFFI157 ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/package.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/primitives.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/objects.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/aggregates.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/functions.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/strings.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/libraries.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/os.xfasl ; loading system definition from /nfs/isd3/philpot/lisp/defsys/elephant.asd into ; # ; Loading /nfs/isd3/philpot/lisp/defsys/elephant.asd ; registering # as ELEPHANT ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/sleepycat.xfasl ; Foreign loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/libmemutil.so. ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/elephant.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/utils.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/metaclasses.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/classes.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/controller.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/collections.xfasl Error: No package exists of name CLSQL-SYS. [condition type: PACKAGE-ERROR] Restart actions (select using :continue): 0: retry the load of /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/collections.xfasl 1: skip loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/collections.xfasl 2: recompile /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/collections.lisp 3: Retry performing # on #. 4: Continue, treating # on # as having been successful. 5: Return to Top Level (an "abort" restart). 6: Abort entirely from this process. [changing package from "COMMON-LISP-USER" to "ELEPHANT"] [1] ELE(2): :cont 4 ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/serializer.xfasl ; loading system definition from /nfs/isd3/philpot/lisp/defsys/cl-base64.asd into ; # ; Loading /nfs/isd3/philpot/lisp/defsys/cl-base64.asd ; registering # as CL-BASE64 ; registering # as CL-BASE64-TESTS ; loading system definition from /nfs/isd3/philpot/lisp/defsys/kmrcl.asd into ; # ; Loading /nfs/isd3/philpot/lisp/defsys/kmrcl.asd ; registering # as KMRCL ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/package.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/ifstar.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/byte-stream.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/macros.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/functions.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/lists.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/seqs.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/impl.xfasl ; Autoloading for package "EXCL.OSI": ; Fast loading /opt/acl62/code/osi.016 ;;; Installing osi patch, version 16 ; Fast loading /opt/acl62/code/fileutil.006 ;;; Installing fileutil patch, version 6 ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/io.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/console.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/strings.xfasl Warning: +CHAR-CODE-LOWER-A+ is defined more than once as `variable' in file /nfs/isd3/philpot/lisp/system/kmrcl-1.75/strings.lisp. Warning: +CHAR-CODE-UPPER-A+ is defined more than once as `variable' in file /nfs/isd3/philpot/lisp/system/kmrcl-1.75/strings.lisp. Warning: +CHAR-CODE-0+ is defined more than once as `variable' in file /nfs/isd3/philpot/lisp/system/kmrcl-1.75/strings.lisp. ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/strmatch.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/buff-input.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/random.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/symbols.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/datetime.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/math.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/color.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/mop.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/equal.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/web-utils.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/xml-utils.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/sockets.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/processes.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/listener.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/repl.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/kmrcl-1.75/os.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/cl-base64-3.3.1/package.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/cl-base64-3.3.1/encode.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/cl-base64-3.3.1/decode.xfasl ; loading system definition from /nfs/isd3/philpot/lisp/defsys/ele-bdb.asd into ; # ; Loading /nfs/isd3/philpot/lisp/defsys/ele-bdb.asd ; registering # as ELE-BDB ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/bdb-enable.xfasl ; Foreign loading /lib/libpthread-0.10.so. ; Foreign loading /opt/lib/libdb-4.3.so. ; Foreign loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/libsleepycat.so. ; loading system definition from /nfs/isd3/philpot/lisp/defsys/ele-clsql.asd into ; # ; Loading /nfs/isd3/philpot/lisp/defsys/ele-clsql.asd ; registering # as ELE-CLSQL ; loading system definition from /nfs/isd3/philpot/lisp/defsys/clsql.asd into ; # ; Loading /nfs/isd3/philpot/lisp/defsys/clsql.asd ; registering # as CLSQL ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/cmucl-compat.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/package.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/kmr-mop.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/base-classes.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/conditions.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/db-interface.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/time.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/utils.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/generics.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/initialize.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/database.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/recording.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/pool.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/expressions.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/operations.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/syntax.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/fdml.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/transaction.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/loop-extension.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/fddl.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/metaclasses.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/ooddl.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/oodml.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/generic-postgresql.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/generic-odbc.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/clsql/clsql-3.5.0/sql/sequences.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/sql-controller.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/sql-collections.xfasl Warning: SQL-BTREE-INDEX, :TYPE was defined in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/sql-controller.lisp and is now being defined in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/sql-collections.lisp ; loading system definition from /nfs/isd3/philpot/lisp/defsys/elephant-tests.asd into ; # ; Loading /nfs/isd3/philpot/lisp/defsys/elephant-tests.asd ; registering # as ELEPHANT-TESTS ; loading system definition from /nfs/isd3/philpot/lisp/defsys/rt.asd into ; # ; Loading /nfs/isd3/philpot/lisp/defsys/rt.asd ; registering # as RT ; Fast loading /nfs/isd3/philpot/lisp/system/rt/rt-20040621/rt.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/tests/elephant-tests.xfasl Warning: *TESTDB-PATH* is defined more than once as `variable' in file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/tests/elephant-tests.lisp. ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/tests/testserializer.xfasl Warning: Redefining test MINIPERSISTENT ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/tests/mop-tests.xfasl ; Fast loading ; /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/tests/testcollections.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/tests/testsleepycat.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/tests/testmigration.xfasl (ERROR REGRESSION-TEST:DO-TEST SLEEPYCAT::%DB-TXN-BEGIN SLEEPYCAT:DB-TRANSACTION-BEGIN) CL-USER(3): (asdf:operate 'asdf:load-op :elephant :force t) ;;; Compiling file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/package.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/package.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/package.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/primitives.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/primitives.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/primitives.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/objects.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/objects.xfasl ;;; Fasl write complete ;;; Compiling file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/aggregates.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/aggregates.xfasl ;;; Fasl write complete ;;; Compiling file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/functions.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/functions.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/functions.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/aggregates.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/objects.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/strings.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/strings.xfasl ;;; Fasl write complete ;;; Compiling file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/libraries.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/libraries.xfasl ;;; Fasl write complete ;;; Compiling file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/os.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/os.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/strings.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/libraries.xfasl ; Fast loading /nfs/isd3/philpot/lisp/system/uffi/uffi157/src/os.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/sleepycat.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/sleepycat.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/sleepycat.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.lisp ;;; Writing fasl file ;;; /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/elephant.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/elephant.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/elephant.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/utils.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/utils.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/utils.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/metaclasses.lisp ;;; Writing fasl file ;;; /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/metaclasses.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/metaclasses.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/classes.lisp ;;; Writing fasl file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/classes.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/classes.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/controller.lisp ;;; Writing fasl file ;;; /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/controller.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/controller.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/collections.lisp ;;; Writing fasl file ;;; /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/collections.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/collections.xfasl ;;; Compiling file /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/serializer.lisp ;;; Writing fasl file ;;; /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/serializer.xfasl ;;; Fasl write complete ; Fast loading /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/serializer.xfasl Warning: While compiling these undefined functions were referenced: #:G3716 from position 51906 in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.lisp #:G3643 from position 50872 in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.lisp #:G3560 from position 48926 in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.lisp #:G3546 from position 47942 in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.lisp #:G3286 from position 44384 in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.lisp #:G3256 from position 44114 in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.lisp #:G3196 from position 43507 in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.lisp #:G3025 from position 41263 in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/berkeley-db.lisp #:G2861... ... ... ... ... ... ... ... ... NIL CL-USER(4): (open-store *testdb-path*) Error: attempt to call `OPEN-STORE' which is an undefined function. [condition type: UNDEFINED-FUNCTION] Restart actions (select using :continue): 0: Try calling OPEN-STORE again. 1: Try calling ELEPHANT:OPEN-STORE instead. 2: Return a value instead of calling OPEN-STORE. 3: Try calling a function other than OPEN-STORE. 4: Setf the symbol-function of OPEN-STORE and call it again. 5: Return to Top Level (an "abort" restart). 6: Abort entirely from this process. [1] CL-USER(5): :cont 1 Error: Attempt to take the value of the unbound variable `*TESTDB-PATH*'. [condition type: UNBOUND-VARIABLE] Restart actions (select using :continue): 0: Try evaluating *TESTDB-PATH* again. 1: Use the value of ELEPHANT-TESTS::*TESTDB-PATH* instead. 2: Set the symbol-value of *TESTDB-PATH* and use its value. 3: Use a value without setting *TESTDB-PATH*. 4: Return to Top Level (an "abort" restart). 5: Abort entirely from this process. [1] CL-USER(6): :reset CL-USER(7): :package :elephant ELE(8): (open-store *testdb-path*) Error: Attempt to take the value of the unbound variable `*TESTDB-PATH*'. [condition type: UNBOUND-VARIABLE] Restart actions (select using :continue): 0: Try evaluating *TESTDB-PATH* again. 1: Use the value of ELEPHANT-TESTS::*TESTDB-PATH* instead. 2: Set the symbol-value of *TESTDB-PATH* and use its value. 3: Use a value without setting *TESTDB-PATH*. 4: Return to Top Level (an "abort" restart). 5: Abort entirely from this process. [1] ELE(9): :reset ELE(10): :package :elephant-tests ELE-TESTS(11): (open-store *testdb-path*) # ELE-TESTS(12): :cl /tmp/metering Error: No file found with any of the names "/tmp/metering.cl", "/tmp/metering.lsp", "/tmp/metering.lisp", "/tmp/metering". [condition type: FILE-ERROR] Restart actions (select using :continue): 0: Prompt for a different filename to compile 1: Abort entirely from this process. [1] ELE-TESTS(13): :reset ELE-TESTS(14): :cl /tmp/metered ; Fast loading /tmp/metered.xfasl Warning: (METHOD INITIALIZE-INSTANCE :BEFORE (PERSISTENT)), :OPERATOR was defined in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/classes.lisp and is now being defined in /tmp/metered.lisp Warning: (METHOD SHARED-INITIALIZE :AROUND (PERSISTENT-OBJECT T)), :OPERATOR was defined in /nfs/isd3/philpot/lisp/system/elephant/elephant-0.3.0/src/classes.lisp and is now being defined in /tmp/metered.lisp ELE-TESTS(15): *store-controller* # ELE-TESTS(16): (make-instance 'pfoo :sc *store-controller*) * Exiting INITIALIZE-INSTANCE :BEFORE Using accessor DBCONNECTION-SPEC-PST of instance is "/opt/elephant/tests/testdb" Using SLUC DBCONNECTION-SPEC-PST of instance is "/opt/elephant/tests/testdb" * Entering SHARED-INITIALIZE :AROUND. Using accessor DBCONNECTION-SPEC-PST of instance is "/opt/elephant/tests/testdb" Using SLUC DBCONNECTION-SPEC-PST of instance is "/opt/elephant/tests/testdb" * Exiting SHARED-INITIALIZE :AROUND. Using accessor DBCONNECTION-SPEC-PST of instance is "/opt/elephant/tests/testdb" Using SLUC DBCONNECTION-SPEC-PST of instance is "/opt/elephant/tests/testdb" * Exiting INITIALIZE-INSTANCE :AROUND. Using accessor DBCONNECTION-SPEC-PST of instance is NIL Using SLUC DBCONNECTION-SPEC-PST of instance is NIL # ELE-TESTS(17): From blumberg at math.uchicago.edu Thu Dec 22 21:59:42 2005 From: blumberg at math.uchicago.edu (Andrew Blumberg) Date: Thu, 22 Dec 2005 15:59:42 -0600 (CST) Subject: [elephant-devel] Re: elephant on ACL 6.2 using BDB In-Reply-To: <1135264509.6343.87.camel@localhost.localdomain> References: <200512220144.jBM1i6la027816@blombos.isi.edu> <1135264509.6343.87.camel@localhost.localdomain> Message-ID: hi robert, i wrote most of the MOP code originally, so i'll see if i can debug this. i probably won't start looking at this until the weekend, but i'll write updates as soon as i get going. - andrew On Thu, 22 Dec 2005, Robert L. Read wrote: > Deare Elephant Users and Developers, > Andrew Philpot has discovered a major bug in the 0.3.0 version of > Elephant used on Allegro. > As his (attached) debugging code shows, there is apparently a difference > in the way Allegro and SBCL > behave in terms of the MOP. > > This means that at present, 0.3.0 doesn't work with Allegro and > there is no simple workaround. > I can't work on this much until after X-mas. Fixing this is the highest > priority for the project, > in my opinion; I will work on it then. However, I don't have a copy of > Allegro and don't have > much experience with the MOP. If someone knows why Allegro "unsets" the > slot values after > they have been set and knows how to fix it, please tell me. > > I will eventually solve this problem but it would be even better if > a user could submit a patch > for me. > > Many thanks to Andrew for solving this problem; I will update the > project home page > to reflect this today. > As far as I know, 0.2.0 continues to work with Allegro. > > > > On Wed, 2005-12-21 at 17:44 -0800, Andrew Philpot wrote: > >> I agree that it seems to be some kind of ACL MOP difference. >> >> I metered various bits of initialization code I could find to see who >> is setting slot DBCONNECTION-SPEC-PST of the persistent object. >> >> It looks like it gets set by all the specializations and then unset by >> STANDARD-OBJECT's INITIALIZE-INSTANCE method. I can't test that >> directly, since I can't advice or specialize that CL-provided method. >> If this is indeed what is happening, I think you will have an idea of >> what to do, or perhaps we can formulate a question to Franz. >> >> Sorry for the messiness of the transcript, as I've run out of time. >> >> Thanks for taking a look. >> >> Andrew > > > From read at robertlread.net Fri Dec 23 00:55:41 2005 From: read at robertlread.net (Robert L. Read) Date: Thu, 22 Dec 2005 18:55:41 -0600 Subject: [elephant-devel] Re: elephant on ACL 6.2 using BDB In-Reply-To: References: <200512220144.jBM1i6la027816@blombos.isi.edu> <1135264509.6343.87.camel@localhost.localdomain> Message-ID: <1135299342.6343.93.camel@localhost.localdomain> Thanks! Of course, I modified it to do the SQL back end stuff; it is probably my modification which is non-portable, but perhaps you can very quickly fix the problem. On Thu, 2005-12-22 at 15:59 -0600, Andrew Blumberg wrote: > hi robert, > > i wrote most of the MOP code originally, so i'll see if i can > debug this. i probably won't start looking at this until the weekend, but > i'll write updates as soon as i get going. > > - andrew > > On Thu, 22 Dec 2005, Robert L. Read wrote: > > > Deare Elephant Users and Developers, > > Andrew Philpot has discovered a major bug in the 0.3.0 version of > > Elephant used on Allegro. > > As his (attached) debugging code shows, there is apparently a difference > > in the way Allegro and SBCL > > behave in terms of the MOP. > > > > This means that at present, 0.3.0 doesn't work with Allegro and > > there is no simple workaround. > > I can't work on this much until after X-mas. Fixing this is the highest > > priority for the project, > > in my opinion; I will work on it then. However, I don't have a copy of > > Allegro and don't have > > much experience with the MOP. If someone knows why Allegro "unsets" the > > slot values after > > they have been set and knows how to fix it, please tell me. > > > > I will eventually solve this problem but it would be even better if > > a user could submit a patch > > for me. > > > > Many thanks to Andrew for solving this problem; I will update the > > project home page > > to reflect this today. > > As far as I know, 0.2.0 continues to work with Allegro. > > > > > > > > On Wed, 2005-12-21 at 17:44 -0800, Andrew Philpot wrote: > > > >> I agree that it seems to be some kind of ACL MOP difference. > >> > >> I metered various bits of initialization code I could find to see who > >> is setting slot DBCONNECTION-SPEC-PST of the persistent object. > >> > >> It looks like it gets set by all the specializations and then unset by > >> STANDARD-OBJECT's INITIALIZE-INSTANCE method. I can't test that > >> directly, since I can't advice or specialize that CL-provided method. > >> If this is indeed what is happening, I think you will have an idea of > >> what to do, or perhaps we can formulate a question to Franz. > >> > >> Sorry for the messiness of the transcript, as I've run out of time. > >> > >> Thanks for taking a look. > >> > >> Andrew > > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From waldo at trianet.net Tue Dec 27 14:38:48 2005 From: waldo at trianet.net (Waldo Rubinstein) Date: Tue, 27 Dec 2005 09:38:48 -0500 Subject: [elephant-devel] open-store vs open-controller Message-ID: I was wondering what the difference is between open-store and open- controller. See below: Welcome to OpenMCL Version 1.0 (DarwinPPC32)! ? (in-package :ele) # ? (open-store "dev/testdb") # ? (get-from-root "my key") NIL NIL ? (add-to-root "my key" "my string") "my string" ? (get-from-root "my key") "my string" T ? (close-store) NIL ? (open-store "dev/testdb") # ? (get-from-root "my key") "my string" T ? (close-store) NIL ? (open-controller "dev/testdb") > Error in process listener(1): No applicable method for args: > ("dev/testdb") > to # > While executing: # > Type :POP to abort. Type :? for other options. 1 > :pop Thanks, Waldo From waldo at trianet.net Thu Dec 29 06:47:15 2005 From: waldo at trianet.net (Waldo Rubinstein) Date: Thu, 29 Dec 2005 01:47:15 -0500 Subject: [elephant-devel] Class Evolution Message-ID: Is Elephant friendly with class evolution? For example, if I create a CLOS object with, say 5 fields, and store some instances in an elephant DB and then the CLOS definition of the class changes to add a sixth field. What will happen to the existing five objects when retrieved? Will new objects be stored with the new field definition? Thanks, Waldo From midfield at gmail.com Thu Dec 29 17:52:14 2005 From: midfield at gmail.com (Ben) Date: Thu, 29 Dec 2005 11:52:14 -0600 Subject: [elephant-devel] Class Evolution In-Reply-To: References: Message-ID: <9157df230512290952o467c4243wbacd5da6488ee7e0@mail.gmail.com> it should be relatively class friendly. it should even support fancy stuff like change-class. there's talk about this in the documentation somewhere... B On 12/29/05, Waldo Rubinstein wrote: > Is Elephant friendly with class evolution? For example, if I create a > CLOS object with, say 5 fields, and store some instances in an > elephant DB and then the CLOS definition of the class changes to add > a sixth field. What will happen to the existing five objects when > retrieved? Will new objects be stored with the new field definition? > > Thanks, > Waldo > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel > From read at robertlread.net Fri Dec 30 15:46:42 2005 From: read at robertlread.net (Robert L. Read) Date: Fri, 30 Dec 2005 09:46:42 -0600 Subject: [elephant-devel] Class Evolution In-Reply-To: <9157df230512290952o467c4243wbacd5da6488ee7e0@mail.gmail.com> References: <9157df230512290952o467c4243wbacd5da6488ee7e0@mail.gmail.com> Message-ID: <1135957602.4016.4.camel@localhost.localdomain> The best way to answer this question would be to look at, or write some new, tests. I evolve classes all the time, and have never noticed a problem, at least if you add a slot that is not required at object construction time. Obviously, it is possible to add a slot in fact needed for the object to be wholesome, and elephant can't make something up in such a case. In one case I think I actually wrote a little code to: (map-btree #'(create-and-store a new object of class X) (all-objects of class Y)) That will always work if you have a class evolution that you just can't get around any other way; that is the basic strategy behind inter-store migration. So I agree with Ben: it basically works, probably has glitches if you do something complicated, but there is, by writing enough (relatively simple) code, always a way out. On Thu, 2005-12-29 at 11:52 -0600, Ben wrote: > it should be relatively class friendly. it should even support fancy > stuff like change-class. there's talk about this in the documentation > somewhere... > > B > > On 12/29/05, Waldo Rubinstein wrote: > > Is Elephant friendly with class evolution? For example, if I create a > > CLOS object with, say 5 fields, and store some instances in an > > elephant DB and then the CLOS definition of the class changes to add > > a sixth field. What will happen to the existing five objects when > > retrieved? Will new objects be stored with the new field definition? > > > > Thanks, > > Waldo > > > > _______________________________________________ > > elephant-devel site list > > elephant-devel at common-lisp.net > > http://common-lisp.net/mailman/listinfo/elephant-devel > > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel -------------- next part -------------- An HTML attachment was scrubbed... URL: From dankna at accela.net Thu Dec 29 15:56:02 2005 From: dankna at accela.net (Dan Knapp) Date: Thu, 29 Dec 2005 10:56:02 -0500 Subject: [elephant-devel] Class Evolution In-Reply-To: References: Message-ID: <7C62F5E8-03DF-4847-AA2A-03DCA73568CF@accela.net> Internally, Elephant stores a list of the slots in each object, by their names. So, the new slot will be unbound in the existing objects - you can check using slot-bound-p. If you delete a slot, the old values for objects that had it will still be in the database, but they will be harmless. New objects will always be stored according to the definition that's loaded at the time. If you want to rename a slot, you'll have to write migration code to copy everything from the old slot to the new one. -- Dan Knapp On Dec 29, 2005, at 1:47 AM, Waldo Rubinstein wrote: > Is Elephant friendly with class evolution? For example, if I create > a CLOS object with, say 5 fields, and store some instances in an > elephant DB and then the CLOS definition of the class changes to > add a sixth field. What will happen to the existing five objects > when retrieved? Will new objects be stored with the new field > definition? > > Thanks, > Waldo > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From waldo at trianet.net Sat Dec 31 23:28:06 2005 From: waldo at trianet.net (Waldo Rubinstein) Date: Sat, 31 Dec 2005 18:28:06 -0500 Subject: [elephant-devel] Class Evolution In-Reply-To: <7C62F5E8-03DF-4847-AA2A-03DCA73568CF@accela.net> References: <7C62F5E8-03DF-4847-AA2A-03DCA73568CF@accela.net> Message-ID: <3239BD03-1398-4092-93D7-C865C4B444BB@trianet.net> Thanks. This is helpful. - Waldo On Dec 29, 2005, at 10:56 AM, Dan Knapp wrote: > Internally, Elephant stores a list of the slots in each object, > by their names. So, the new slot will be unbound in the existing > objects - you can check using slot-bound-p. If you delete a slot, > the old values for objects that had it will still be in the > database, but they will be harmless. New objects will always be > stored according to the definition that's loaded at the time. If > you want to rename a slot, you'll have to write migration code to > copy everything from the old slot to the new one. > > -- Dan Knapp > > On Dec 29, 2005, at 1:47 AM, Waldo Rubinstein wrote: > >> Is Elephant friendly with class evolution? For example, if I >> create a CLOS object with, say 5 fields, and store some instances >> in an elephant DB and then the CLOS definition of the class >> changes to add a sixth field. What will happen to the existing >> five objects when retrieved? Will new objects be stored with the >> new field definition? >> >> Thanks, >> Waldo >> >> _______________________________________________ >> elephant-devel site list >> elephant-devel at common-lisp.net >> http://common-lisp.net/mailman/listinfo/elephant-devel >> > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel -------------- next part -------------- An HTML attachment was scrubbed... URL: From waldo at trianet.net Sat Dec 31 23:28:58 2005 From: waldo at trianet.net (Waldo Rubinstein) Date: Sat, 31 Dec 2005 18:28:58 -0500 Subject: [elephant-devel] Class Evolution In-Reply-To: <1135957602.4016.4.camel@localhost.localdomain> References: <9157df230512290952o467c4243wbacd5da6488ee7e0@mail.gmail.com> <1135957602.4016.4.camel@localhost.localdomain> Message-ID: Thanks Robert. I will write some test cases and see how it behaves. I just wanted to know before I spent the time to do it :) Thanks, Waldo On Dec 30, 2005, at 10:46 AM, Robert L. Read wrote: > The best way to answer this question would be to look at, or write > some new, tests. > > I evolve classes all the time, and have never noticed a problem, at > least if you add > a slot that is not required at object construction time. > Obviously, it is possible to add > a slot in fact needed for the object to be wholesome, and elephant > can't make something > up in such a case. > > In one case I think I actually wrote a little code to: > > (map-btree #'(create-and-store a new object of class X) (all- > objects of class Y)) > > That will always work if you have a class evolution that you just > can't get around > any other way; that is the basic strategy behind inter-store > migration. > > So I agree with Ben: it basically works, probably has glitches if > you do something > complicated, but there is, by writing enough (relatively simple) > code, always a way out. > > > > On Thu, 2005-12-29 at 11:52 -0600, Ben wrote: >> it should be relatively class friendly. it should even support fancy >> stuff like change-class. there's talk about this in the >> documentation >> somewhere... >> >> B >> >> On 12/29/05, Waldo Rubinstein wrote: >> > Is Elephant friendly with class evolution? For example, if I >> create a >> > CLOS object with, say 5 fields, and store some instances in an >> > elephant DB and then the CLOS definition of the class changes to >> add >> > a sixth field. What will happen to the existing five objects when >> > retrieved? Will new objects be stored with the new field >> definition? >> > >> > Thanks, >> > Waldo >> > >> > _______________________________________________ >> > elephant-devel site list >> > elephant-devel at common-lisp.net >> > http://common-lisp.net/mailman/listinfo/elephant-devel >> > >> _______________________________________________ >> elephant-devel site list >> elephant-devel at common-lisp.net >> http://common-lisp.net/mailman/listinfo/elephant-devel -------------- next part -------------- An HTML attachment was scrubbed... URL: