Wed Aug 11 11:47:51 BRT 2010  Gustavo Henrique Milare <gugamilare@gmail.com>
  * Fix elephant to work with cffi

New patches:

[Fix elephant to work with cffi
Gustavo Henrique Milare <gugamilare@gmail.com>**20100811144751
 Ignore-this: bae68e918c0e2aefb37970e08b85bc12
] {
hunk ./elephant.asd 346
  :cl-base64))
 
 
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (when (member (find-system :cffi-uffi-compat)
+                (asdf::component-load-dependencies (find-system :uffi))
+                       :key #'find-system)
+    (pushnew :elephant-cffi cl:*features*)))
+
 (defmethod asdf:perform :after ((op load-op) (system (eql (find-system :elephant))))
   (pushnew :elephant cl:*features*))
 
hunk ./src/memutil/memutil.lisp 151
 
 (defstruct buffer-stream
   "A stream-like interface to foreign (alien) char buffers."
-  (buffer (allocate-foreign-object :unsigned-char 10) :type array-or-pointer-char)
+  (buffer (allocate-foreign-object :unsigned-byte 10) :type array-or-pointer-char)
   (size 0 :type fixnum)
   (position 0 :type fixnum)
   (length 10 :type fixnum))
hunk ./src/memutil/memutil.lisp 190
 ;; non-consing pointer arithmentic though.  Check these
 ;; CMUCL / SBCL things don't cons unless necessary.
 
-;; TODO: #+openmcl versions which do macptr arith.  
+;; TODO: #+openmcl versions which do macptr arith.
 
hunk ./src/memutil/memutil.lisp 192
-#+(or cmu sbcl)
+#+elephant-cffi
+(macrolet ((def (cffi-type reader writer &optional (rettype t))
+             `(progn
+                (defun ,reader (buf offset)
+                  (the ,rettype (cffi:mem-ref buf ,cffi-type offset)))
+                (defun ,writer (buf num offset)
+                  (setf (cffi:mem-ref buf ,cffi-type offset)
+                        (the ,rettype num))))))
+  (def :int32 read-int32 write-int32)
+  (def :int32 read-fixnum32 write-fixnum32 fixnum)
+  (def :int64 read-int64 write-int64)
+  (def :uint32 read-uint32 write-uint32)
+  (def :uint64 read-uint64 write-uint64)
+  (def :float read-float write-float)
+  (def :double read-double write-double))
+
+#+elephant-cffi
+(defun offset-char-pointer (p o)
+  "Pointer arithmetic."
+  (cffi:inc-pointer p o))
+
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun read-int32 (buf offset)
   "Read a 32-bit signed integer from a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 222
     (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		 (* (signed 32))))))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun read-fixnum32 (buf offset)
   "Read a 32-bit signed integer from a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 231
     (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		 (* (signed 32))))))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun read-int64 (buf offset)
   "Read a 64-bit signed integer from a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 240
     (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		 (* (signed 64))))))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun read-uint32 (buf offset)
   "Read a 32-bit unsigned integer from a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 250
 		 (* (unsigned 32))))))
 
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun read-uint64 (buf offset)
   "Read a 64-bit unsigned integer from a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 259
     (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		 (* (signed 64))))))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun read-float (buf offset)
   "Read a single-float from a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 268
     (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		 (* single-float)))))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun read-double (buf offset)
   "Read a double-float from a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 277
     (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		 (* double-float)))))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun write-int32 (buf num offset)
   "Write a 32-bit signed integer to a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 286
   (setf (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		     (* (signed 32)))) num))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun write-fixnum32 (buf num offset)
   "Write a 32-bit signed integer to a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 295
   (setf (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		     (* (signed 32)))) num))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun write-int64 (buf num offset)
   "Write a 64-bit signed integer to a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 304
   (setf (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		     (* (signed 64)))) num))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun write-uint32 (buf num offset)
   "Write a 32-bit unsigned integer to a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 313
   (setf (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		     (* (unsigned 32)))) num))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun write-uint64 (buf num offset)
   "Write a 64-bit unsigned integer to a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 321
 	   (type fixnum offset))
   (setf (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		     (* (unsigned 64)))) num))
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun write-float (buf num offset)
   "Write a single-float to a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 330
   (setf (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		     (* single-float))) num))
 
-#+(or cmu sbcl)
+#+(and (not elephant-cffi) (or cmu sbcl))
 (defun write-double (buf num offset)
   "Write a double-float to a foreign char buffer."
   (declare (type (alien (* unsigned-char)) buf)
hunk ./src/memutil/memutil.lisp 339
   (setf (deref (cast (sap-alien (sap+ (alien-sap buf) offset) (* unsigned-char))
 		     (* double-float))) num))
 
-#+(or cmu sbcl)
-(defun offset-char-pointer (p offset)
+#+(and (not elephant-cffi) (or cmu sbcl))
+(defun offset-char-pointer (p o)
   "Pointer arithmetic."
   (declare (type (alien (* unsigned-char)) p)
 	   (type fixnum offset))
hunk ./src/memutil/memutil.lisp 346
   (sap-alien (sap+ (alien-sap p) offset) (* unsigned-char)))
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("read_int32" read-int32)
     ((buf array-or-pointer-char)
      (offset :int))
hunk ./src/memutil/memutil.lisp 352
   :returning :int)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("read_int32" read-fixnum32)
     ((buf array-or-pointer-char)
      (offset :int))
hunk ./src/memutil/memutil.lisp 358
   :returning :int)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("read_uint32" read-uint32)
     ((buf array-or-pointer-char)
      (offset :int))
hunk ./src/memutil/memutil.lisp 364
   :returning :unsigned-int)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("read_int64" read-int64)
     ((buf array-or-pointer-char)
      (offset :int))
hunk ./src/memutil/memutil.lisp 370
   :returning :long)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("read_uint64" read-uint64)
     ((buf array-or-pointer-char)
      (offset :int))
hunk ./src/memutil/memutil.lisp 376
   :returning :unsigned-long)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("read_float" read-float)
     ((buf array-or-pointer-char)
      (offset :int))
hunk ./src/memutil/memutil.lisp 382
   :returning :float)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("read_double" read-double)
     ((buf array-or-pointer-char)
      (offset :int))
hunk ./src/memutil/memutil.lisp 388
   :returning :double)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("write_int32" write-int32)
     ((buf array-or-pointer-char)
      (num :int)
hunk ./src/memutil/memutil.lisp 395
      (offset :int))
   :returning :void)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("write_int32" write-fixnum32)
     ((buf array-or-pointer-char)
      (num :int)
hunk ./src/memutil/memutil.lisp 402
      (offset :int))
   :returning :void)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("write_uint32" write-uint32)
     ((buf array-or-pointer-char)
      (num :unsigned-int)
hunk ./src/memutil/memutil.lisp 409
      (offset :int))
   :returning :void)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("write_int64" write-int64)
     ((buf array-or-pointer-char)
      (num :long)
hunk ./src/memutil/memutil.lisp 416
      (offset :int))
   :returning :void)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("write_uint64" write-uint64)
     ((buf array-or-pointer-char)
      (num :unsigned-long)
hunk ./src/memutil/memutil.lisp 423
      (offset :int))
   :returning :void)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("write_float" write-float)
     ((buf array-or-pointer-char)
      (num :float)
hunk ./src/memutil/memutil.lisp 430
      (offset :int))
   :returning :void)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("write_double" write-double)
     ((buf array-or-pointer-char)
      (num :double)
hunk ./src/memutil/memutil.lisp 437
      (offset :int))
   :returning :void)
 
-#-(or cmu sbcl)
+#-(or elephant-cffi cmu sbcl)
 (def-function ("offset_charp" offset-char-pointer)
     ((p array-or-pointer-char)
      (offset :int))
hunk ./src/memutil/memutil.lisp 475
      (length :int))
   :returning :void)
 
-#+(or cmu sbcl scl)
+#+(and (or cmu sbcl scl))
 (def-function ("copy_buf" %copy-str-to-buf)
     ((dest array-or-pointer-char)
      (dest-offset :int)
hunk ./src/memutil/memutil.lisp 484
      (length :int))
   :returning :void)
 
-#+(or cmu sbcl scl)
+#+(and (or cmu sbcl scl))
 (defun copy-str-to-buf (d do s so l)
    (declare (type array-or-pointer-char d)
 	    (type fixnum do so l)
hunk ./src/memutil/memutil.lisp 533
     (simple-string
      (loop for i fixnum from 0 below length
 	   do
-	   (setf (deref-array dest '(:array :unsigned-char) (+ i dest-offset)) 
+	   (setf (deref-array dest '(:array :unsigned-byte) (+ i dest-offset)) 
 		 (char-code (schar src (+ i src-offset))))))
     (string
      (loop for i fixnum from 0 below length
hunk ./src/memutil/memutil.lisp 538
 	   do
-	   (setf (deref-array dest '(:array :unsigned-char) (+ i dest-offset)) 
+	   (setf (deref-array dest '(:array :unsigned-byte) (+ i dest-offset)) 
 		 (char-code (char src (+ i src-offset))))))))
 
 
hunk ./src/memutil/memutil.lisp 564
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (when (> length len)
       (let ((newlen (max length (* len 2))))
 	(declare (type fixnum newlen))
hunk ./src/memutil/memutil.lisp 568
-	(let ((newbuf (allocate-foreign-object :unsigned-char newlen)))
+	(let ((newbuf (allocate-foreign-object :unsigned-byte newlen)))
 	  ;; technically we just need to copy from position to size.....
 	  (when (null-pointer-p newbuf)
 	    (error "Failed to allocate buffer stream of length ~A.  allocate-foreign-object returned a null pointer" newlen))
hunk ./src/memutil/memutil.lisp 587
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (when (> length len)
       (let ((newlen (max length (* len 2))))
 	(declare (type fixnum newlen))
hunk ./src/memutil/memutil.lisp 591
-	(let ((newbuf (allocate-foreign-object :unsigned-char newlen)))
+	(let ((newbuf (allocate-foreign-object :unsigned-byte newlen)))
 	  (when (null-pointer-p newbuf)
 	    (error "Failed to allocate buffer stream of length ~A.  allocate-foreign-object returned a null pointer" newlen))
 	  (free-foreign-object buf)
hunk ./src/memutil/memutil.lisp 614
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (let ((needed (the fixnum (+ size 1))))
       (declare (type fixnum needed))
       (when (> needed len)
hunk ./src/memutil/memutil.lisp 619
 	(resize-buffer-stream bs needed))
-      (setf (deref-array buf '(:array :unsigned-char) size) b)
+      (setf (deref-array buf '(:array :unsigned-byte) size) b)
       (setf size needed))))
 
 (defun buffer-write-int32 (i bs)
hunk ./src/memutil/memutil.lisp 647
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))	     
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (let ((needed (the fixnum (+ size 4))))
       (declare (type fixnum needed))
       (when (> needed len)
hunk ./src/memutil/memutil.lisp 665
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))	     
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (let ((needed (the fixnum (+ size 4))))
       (declare (type fixnum needed))
       (when (> needed len)
hunk ./src/memutil/memutil.lisp 683
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))	     
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (let ((needed (the fixnum (+ size 8))))
       (declare (type fixnum needed))
       (when (> needed len)
hunk ./src/memutil/memutil.lisp 701
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))	     
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (let ((needed (the fixnum (+ size 8))))
       (declare (type fixnum needed))
       (when (> needed len)
hunk ./src/memutil/memutil.lisp 719
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))	     
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (let ((needed (the fixnum (+ size 4))))
       (declare (type fixnum needed))
       (when (> needed len)
hunk ./src/memutil/memutil.lisp 737
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))	     
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (let ((needed (the fixnum (+ size 8))))
       (declare (type fixnum needed))
       (when (> needed len)
hunk ./src/memutil/memutil.lisp 756
 		      (len buffer-stream-length))
     bs		      
     (declare (type fixnum size len)
-	     #-ccl (type (alien (* unsigned-char)) buf))	     
+	     #-(or elephant-cffi ccl) (type (alien (* unsigned-char)) buf))
     (let* ((str-bytes (byte-length s))
 	   (needed (the fixnum (+ size str-bytes))))
       (declare (type fixnum str-bytes needed)
hunk ./src/memutil/memutil.lisp 783
   (let ((position (buffer-stream-position bs)))
     (declare (type fixnum position))
     (incf (buffer-stream-position bs))
-    (deref-array (buffer-stream-buffer bs) '(:array :unsigned-char) position)))
+    (deref-array (buffer-stream-buffer bs) '(:array :unsigned-byte) position)))
 
 
 (defun buffer-read-byte-vector (bs)
}

Context:

[Fix ccl decls, missing non-sbcl functions
eslick@common-lisp.net**20090105200224] 
[Move persistent-collection up in load order
ieslick@common-lisp.net**20090104202533] 
[Fix pm-btree bug and tighten up instance deserialization protocols
ieslick@common-lisp.net**20090104201622] 
[Enable mvcc / snapshot isolation and global flag for BDB store
ieslick@common-lisp.net**20090103213220] 
[Documentation tweaks to improve build
ieslick@common-lisp.net**20090103203053] 
[Build fixes for SQL stores
eslick@common-lisp.net**20090103184548] 
[Fix upgrade issue from 0.9.1
Quan Hu <ihuquan@gmail.com>**20090102130252] 
[Add a migrate method specialized on pathname. Without it, migrate pathname will fail
Quan Hu <ihuquan@gmail.com>**20090101065923] 
[Fix migration test return value when not run
eslick@common-lisp.net**20081230215206] 
[Fix nested migration bug
eslick@common-lisp.net**20081230214426] 
[Fixup missing references
eslick@common-lisp.net**20081230195602] 
[Additional declarations in memutils and unicode
eslick@common-lisp.net**20081230194656] 
[Fix serializer optimization bugs; fix class initialization bug; minor perf. enhancements
eslick@common-lisp.net**20081230193013] 
[Performance optimizations; additional query system edits; changes to support oid-only reads
eslick@common-lisp.net**20081229232931] 
[Query interpreter v0.2 (query planner sketch)
eslick@common-lisp.net**20081224153238] 
[Add checkout caching and related tests
eslick@common-lisp.net**20081229194013] 
[Fix DROP-INSTANCES called with an atom. Add tests for it.
polzer@stardawn.org**20081130163314] 
[Integration patch
read@robertlread.net**20081119193511
 Ignore-this: 4b406a4f5f4987dc4b523a386147ffbd
] 
[Fix bignum comparisons, numeric classifications, add some test harness to serializer2
eslick@common-lisp.net**20081119195038] 
[Bypass test errors; improve error handling in bdb controller
eslick@common-lisp.net**20081119190327] 
[Add slot index rebuild fn to package
eslick@common-lisp.net**20081024093512] 
[merge integration; bdb-controller.lisp and testindexing.lisp
eslick@common-lisp.net**20081023141318] 
[bug fix; change-class didn't update target index in last patch
eslick@common-lisp.net**20081023103647] 
[Support change-class for heirarchical indexed slots
eslick@common-lisp.net**20081023094757] 
[Merge-in fixes from elephant branches
eslick@common-lisp.net**20081022180020] 
[Patch import fixes; expand drop-instances to support non-lists
eslick@common-lisp.net**20081020084923] 
[Fix map-btree failure to check if first value in a range map is out of range
Ryszard Szopa <ryszard.szopa@gmail.com>**20080513140503] 
[LesliePolzerNilOIDpatch
Robert L. Read**20080506032238] 
[Get rid of db_deadlock and offer two sane built-in deadlock detection strategies. Make DEADLOCK-DETECT=T the default.
polzer@stardawn.org**20080923193309] 
[Basic support for (:prebuilt-libraries nil) under win32/SBCL.
Elliott Slaughter <elliottslaughter@gmail.com>**20081020220233] 
[Minimal support for SBCL/win32.
Elliott Slaughter <elliottslaughter@gmail.com>**20080924184910] 
[Fix broken foreign reference.
Elliott Slaughter <elliottslaughter@gmail.com>**20080924183740] 
[Correct a typo in instructions for manually building dlls.
Elliott Slaughter <elliottslaughter@gmail.com>**20080924183641] 
[add a note in the docs regarding unclosed cursors.
polzer@stardawn.org**20080927100255] 
[add a note regarding half-open BDB controllers.
polzer@stardawn.org**20080927100212] 
[Get rid of db_deadlock and offer two sane built-in deadlock detection strategies. Make DEADLOCK-DETECT=T the default.
polzer@stardawn.org**20080927100142] 
[Allow the user to specify the REGISTER arg with the BDB controller.
polzer@stardawn.org**20080925114456] 
[Teensy non-code changes.
polzer@stardawn.org**20080922115058] 
[Added BORDEAUX-THREADS to ele-postmodern deps.
polzer@stardawn.org**20080922114957] 
[Fix more class redefinition cases (test REDEFINITION-INITFORM across Lisp image sessions).
polzer@stardawn.org**20080922100651] 
[Ensure that derived index updates are combined with slot write transaction
eslick@common-lisp.net**20080923172810] 
[Fix base class discovery during eeff slot def o with inherited indexed slots
eslick@common-lisp.net**20080916141417] 
[Add an option to bypass 'create proxy instance'; added rebuild-slot-index fn
eslick@common-lisp.net**20080911135310] 
[Ensure db schema is recorded on FINALIZE-INHERITANCE
Leslie Polzer <polzer@gnu.org>**20080907131658] 
[Support for db4.7
polzer@stardawn.org**20080908074122] 
[Fix for lost association indices
eslick@common-lisp.net**20080721084549] 
[Fixed a set of typos that were generating warnings; catch errors when a schema was already uncached due to new shutdown protocol
eslick@common-lisp.net**20080628001232] 
[Adding sql-dup-btree support
read@robertlread.net**20080621213302] 
[Fix set slot init bug; remove old pset when assigning pset to set slot
eslick@common-lisp.net**20080619222436] 
[set-valued-slot update; add macros
eslick@common-lisp.net**20080619185546] 
[Export association functions, some better error messages
eslick@common-lisp.net**20080618204731] 
[Schema evolution bug fix
eslick@common-lisp.net**20080618013744
 
 Ensure that all cached controller schemas in class objects are reclaimed at close-store time 
 
] 
[Association patches
eslick@common-lisp.net**20080618013235
 
 Added initarg support for :ref type association slots
 Fixed setf slot-value bug where old values were not overridden on M:1 slots
 Significant bug fixing for adding/removing association pairs
 Explicit association API addition
 Allow association indices to be used by get-instances via map-inverted-index
 
 Misc:
 Fix a test that fails on postmodern due to assumptions about dup-btree value ordering
 
 
] 
[Fix spurious conflict comment
eslick@common-lisp.net**20080615203903] 
[CL-SQL changes unrecorded in main repository
read@robertlread.net*-20080517232122] 
[one more race condition in serializer2
alex.mizrahi@gmail.com**20080604142449] 
[Fix MAKE-LOCAL-NAME so it produces keywords instead of randomly package-scoped reader-interned symbols.
polzer@gnu.org**20080430121024] 
[race condition in memutil
alex.mizrahi@gmail.com**20080530141323] 
[postmodern: new stuff support
alex.mizrahi@gmail.com**20080604114551] 
[postmodern: dup-btree
alex.mizrahi@gmail.com**20080604114415] 
[Fix btree/dup-btree as nil creation problem
eslick@common-lisp.net**20080602200807] 
[Changed drop-pobject API to drop-instances.  Removed old files.
eslick@common-lisp.net**20080601233329] 
[Fix config restart typo, add type specifiers to collection test, remove metaclass specification from dup-btree in bdb-collections
eslick@common-lisp.net**20080601212641] 
[Initial support for BDB 4.7 / some allegro unicode performance sketches / a few optimization related tweaks
eslick@common-lisp.net**20080601111117] 
[Add restart to create a default my-config.sexp
eslick@common-lisp.net**20080601111042] 
[Alex's serializer patch; unicode performance improvements; serializer hash optimization
eslick@common-lisp.net**20080528124832] 
[Some changes to rucksack experimental backend
eslick@common-lisp.net**20080517161742] 
[finalize-inheritance-sbcl-fix
gtarcea@umich.edu**20080518211854
 sbcl 1.0.16 fails when doing mop introspection on some classes, with the error
 The slot SB-PCL::%CLASS-PRECEDENCE-LIST is unbound in the object #<STANDARD-CLASS ELEPHANT:SLOT-SET>
 
 The function texinfo-inferred-body was modified to include a call to finalize-inheritance.
] 
[CL-SQL changes unrecorded in main repository
read@robertlread.net**20080517232122] 
[Object level management of cached slots (green on Allegro/BDB)
eslick@common-lisp.net**20080517210939] 
[Remove type check in serializer; fix typo in BDB patch
eslick@common-lisp.net**20080517005738] 
[Fix for non-acl lisps on class creation checkpoint
eslick@common-lisp.net**20080516200249] 
[Class creation from schemas snapshot
eslick@common-lisp.net**20080516194129] 
[Fixup indexed-slots.lisp
read@robertlread.net**20080516194030] 
[Issue with repository sync
eslick@common-lisp.net**20080516192306] 
[Added per-store options for locks & cache sizes
eslick@common-lisp.net**20080516191747] 
[Add max lock configuration to BDB
eslick@common-lisp.net**20080516185155] 
[cleaned up merge junk; some query sketching; make indexed-p universal
eslick@common-lisp.net**20080514214227] 
[open controller for bdb accepts a pathname spec
Ryszard Szopa <ryszard.szopa@gmail.com>*-20080513133356] 
[open controller for bdb accepts a pathname spec
Ryszard Szopa <ryszard.szopa@gmail.com>**20080513133356] 
[elephant-db-path-test
Ryszard Szopa <ryszard.szopa@gmail.com>**20080513213222] 
[MakingCLBUILDReady
read at robertlread.net**20080514043740
 This is an attempt to make Elephant ready for CLBUILD
] 
[MakingCLBuildReady
read at robertlread.net**20080514043654] 
[MakingElephantCLBUILDReady
read at robertlread.net*-20080514031922] 
[SubmittedPatchForABug
read at robertlread.net**20080514032031
 Sorry, I forgot who submitted this bug fix.
] 
[MakingElephantCLBUILDReady
read at robertlread.net**20080514031922] 
[Fixed bug in persistent class verification, abstracted verification
eslick@common-lisp.net**20080513152913] 
[Pathname argument to db-bdb open-controller patch
eslick@common-lisp.net**20080513135855] 
[Add *default-retries* to elephant transaction model; wrap delete pobj in txn
eslick@common-lisp.net**20080513110539] 
[Fix map-btree failure to check iif first value in a range map is out of range
eslick@common-lisp.net**20080512182955] 
[Default to non-inherited index, added :inherit slot option - push :elephant onto *featuress**
eslick@common-lisp.net**20080510224745] 
[cl-sql implementing Ian's major features
read at robertlread.net**20080504230520
 Although this is all green, it is certainly not perfect.
 I am checking in it in hopes it will help the postmodern
 guys, though in hindsight I doubt it will, much. I'm also
 starting to think the cl-sql backend should be deprecated.
 
] 
[Move dependencies on bordeaux threads to elephant-tests
eslick@common-lisp.net**20080503140450] 
[Code reorg, warning remove, bug fix in change-class
eslick@common-lisp.net**20080503140234] 
[Add support for bulk reads; fix a few small bugs; transient to persistent change cclass support
eslick@common-lisp.net**20080503122110] 
[un-disabled tests for SBCL
alex.mizrahi@gmail.com**20080410070805] 
[db-postmodern: sync-cache type handling fix
alex.mizrahi@gmail.com**20080326222018] 
[test concurrency extended
alex.mizrahi@gmail.com**20080326203147] 
[transaction restart support plus extended features
alex.mizrahi@gmail.com**20080326203005] 
[db-postmodern: transaction retry handling, serializable isolation
alex.mizrahi@gmail.com**20080318155444] 
[db-postmodern: small sync cache fix
alex.mizrahi@gmail.com**20080318155129
 cache was discarded in empty txn
] 
[Disabling threading tests for SBCL
Robert L. Read**20080410015544] 
[Chun Tian's conditional for lispworks slot-definition-allocation
sross@common-lisp.net**20080416161010] 
[spelling errors
Robert L. Read**20080408140049] 
[DB-POSTMODERN: remove DBPM-ERROR; don't attempt to remove an already prepared statement (pointless since the txn is aborted at the time); defer all errors to txn handler (but warn and print the offending statement)
polzer@gnu.org**20080317171254] 
[Changed erroneous statement in tutorial that index comparison uses EQUALP.
polzer@gnu.org**20080226123252] 
[DB-POSTMODERN: support transaction retries; handle deadlock; add savepoint utility functions; add warnings to help debugging problematic conditions.
polzer@gnu.org**20080306124528] 
[added BORDEAUX-THREADS dependency and changed PM controller to use it instead of SB-THREAD stuff.
polzer@gnu.org**20080306124512] 
[added concurrency test cases.
polzer@gnu.org**20080306124407] 
[DB-POSTMODERN: reap old connections when a new one is requested.
polzer@gnu.org**20080227150322] 
[Remove old files
eslick@common-lisp.net**20080325150618] 
[add slot-unbound test
eslick@common-lisp.net**20080325120520] 
[Add schema-evolution.lisp
eslick@common-lisp.net**20080325025517] 
[SBCL compatibility fixes; migration fixes; small bug fixes
eslick@common-lisp.net**20080323143427] 
[Derived index slots; support migrate/upgrade; fix schema evolution bugs
eslick@common-lisp.net**20080322205953] 
[Better explicit vs. slot association test
eslick@common-lisp.net**20080321104648] 
[Fix bug in map oids
eslick@common-lisp.net**20080321104611] 
[Add to load system
eslick@common-lisp.net**20080320181119] 
[Add association test file; fix association bugs
eslick@common-lisp.net**20080320180929] 
[API proposal for association slots
eslick@common-lisp.net**20080320022141] 
[Implement associations; fix some indexing-related bugs; 2 failing tests left
eslick@common-lisp.net**20080320010955] 
[Fix metaprotocol errors, some code reorg and fixing the change-class test to match MOP spec
eslick@common-lisp.net**20080318041749] 
[Finish and add simple query interpreter
eslick@common-lisp.net**20080311155419] 
[Patch serializer for unbound slot error for now; add :index as valid initarg
eslick@common-lisp.net**20080311155156] 
[Fixed a myriad of problems in schema evolution
eslick@common-lisp.net**20080311050915
 
 Schema chains are properly maintained
 Schema ids properly updated in instance-table
 Indexed slots populated on upgrade (indexes are incoherent if lazy updating!)
 map-class adjusted to work with and upgrade prior instances
 ensure proper initialization of values
 speed up transactions for persistent instance creation 
 
] 
[Massive upgrade of new schema-evolution functionality; bug fixes
eslick@common-lisp.net**20080311034317
 
 Features:
 Partially working support for change-class, redefine-class, update-instance-*
 Support for store synchronization and evolution of db instances and storage
 Lots of little integration issues and refactoring
 
 Bugs:
 Added unbound slot edits
 Fixed little bugs hiding in serializer, btree implementation, btree mapping functions, 
 Fixed some little bugs hiding in bdb
 Added tests for dup-btrees and to test for btree bugs from before
 
 
] 
[More efficient get-con functionality; ensure finalized class when registering a schema
eslick@common-lisp.net**20080307070348] 
[Various fixes to indexing, set-valued slots, etc and fixes to indexing tests
eslick@common-lisp.net**20080307061330] 
[Implement cached slots; basic indexed slots; some work on indexed tests
eslick@common-lisp.net**20080307053429] 
[Fix serializer bugs for lexical eq; bdb default cid bug
eslick@common-lisp.net**20080307053109] 
[Fix bugs related to indexed classes; drop-instances
eslick@common-lisp.net**20080306213952] 
[Fix delete in dup btree
eslick@common-lisp.net**20080306191427] 
[Fix bdb-controller initialization for indexed btrees
eslick@common-lisp.net**20080306185601] 
[Association edits, dup btree fixes, remove test harness stuff
eslick@common-lisp.net**20080306160214] 
[Fix BDB comparison fn and add key vs value comparisons
eslick@common-lisp.net**20080306155932] 
[Added set-valued slots, fixed bug in map-class, handle set-valued slot inits
eslick@common-lisp.net**20080305212109] 
[Initial reorg to support 0.9.2 feature set; some working features
eslick@common-lisp.net**20080304223501
 
 Hierarchical class indexing
 Class schemas
 Duplicate btrees
 Lazy deserialization support
 
 
] 
[Check for unbound slot; potential fix for a compiler error
eslick@common-lisp.net**20080226195839] 
[Fix test dependence for ff-index-test
eslick@common-lisp.net**20080226151654] 
[Improve berkeley DB version agnostic code
eslick@common-lisp.net**20080226151453
 
 Added an error message to configure my-config.sexp and made sure we load
 it directly from my-config.sexp so that we get it right at load time.
 Prior patch didn't override default until after load time.
 
] 
[Support for multiple BDB versions
eslick@common-lisp.net**20080226150114] 
[db-bdb updated to BerkeleyDB 4.6
kazennikov@gmail.com**20071230140731
 Changed only BDB constants as upgrade 4.5 -> 4.6 they were
 changed.
 A kind of hack perhaps. But it works. The testing was not excessive,
 but it works well for my project.
] 
[add test for STRING types (as opposed to SIMPLE-STRING types)
polzer@gnu.org**20080222081256] 
[Refactor UTF{16,32}LE serializers.
polzer@gnu.org**20080222084824] 
[Enable multiple process connections to a BDB data-store via DB_REGISTER option
eslick@common-lisp.net**20080225222713] 
[Enable multi-store indexed classes
eslick@common-lisp.net**20080223184504] 
[Change semantics of transaction :retry-count from tries to retries
eslick@common-lisp.net**20080221031015] 
[Minor edits, fixed a comment, fixed a db-lisp out of date error
eslick@common-lisp.net**20080221024151] 
[Alex's patch for 8.3
read@robertlread.net**20080217223512
 I entered here the patch from Alex of 2088/02/16
 which apparently makes this compatible with Postgres 8.3.
 It is green for me on all tests on Posgres 8.1, so 
 I am committing it.
] 
[mtype change in dcm
read@robertlread.net**20080215135054] 
[moved cache-instance into initial-persistent-setup
alex.mizrahi@gmail.com**20080120142436
 because it was bypassed by recreate-instance otherwise
] 
[accessor name in tests change
alex.mizrahi@gmail.com**20080116222405] 
[db-postmodern: pm-btree initialization fixed
alex.mizrahi@gmail.com**20080116222316] 
[recreate-instance stuff improved
alex.mizrahi@gmail.com**20080116220138] 
[db-postmodern: removed specialized map-index
alex.mizrahi@gmail.com**20080107134012
 because pure cursor version works fine and is more robust
] 
[cursor-duplicate removed from db-postmodern
Henrik Hjelte<henrik@evahjelte.com>*-20071124163701] 
[db-postmodern fix map-index optimization bug
Henrik Hjelte <henrik.hjelte@stix.to>**20080104151644] 
[db-postmodern: cursors re-implemented
alex.mizrahi@gmail.com**20071215191805] 
[controller-doc-improvement
read@robertlread.net**20080210155716] 
[tutorial
read@robertlread.net**20080203161532] 
[non-keyword-accessors
sross@common-lisp.net**20080113173616
 allows lispworks to run tests.
] 
[function-call-key-form
sross@common-lisp.net**20080113173547] 
[documentation type fix
read@robertlread.net**20080111151124] 
[Fix the use of internal symbol of sb-kernel in memutils
Leonardo Varuzza <varuzza@gmail.com>**20071230000120
 
 memutil.lisp use the functions sb-kernel::copy-*-from-system-area, which
 aren't exported in the latest version of sbcl.
 
 Fix it adding the :: when appropriate
 
] 
[db-bdb bugfix: when bdb key comparison compared only the first half of utf16 strings
kazennikov@gmail.com**20071230141055] 
[Fix instance deserialization to bypass initialization protocol
sross@common-lisp.net*-20071214141938] 
[db-postmodern: optimized map-index for -by-value case
alex.mizrahi@gmail.com**20071207195402] 
[db-postmodern: optimized form-slot-key for persistent-slot-reader
alex.mizrahi@gmail.com**20071207200835
 it uses SBCL internal function now, for other implementation it's less optimized.
] 
[db-postmodern: small example update
alex.mizrahi@gmail.com**20071207200630] 
[added sh script for flushing logs sample
alex.mizrahi@gmail.com**20070920095806] 
[db-postmodern removed possiblity of using NIL as a key in btrees
Henrik Hjelte<henrik@evahjelte.com>**20071124163828] 
[cursor-duplicate removed from db-postmodern
Henrik Hjelte<henrik@evahjelte.com>**20071124163701] 
[removed a little compiler warning (typo)
Henrik Hjelte<henrik@evahjelte.com>**20071122151929] 
[remove kind-hints parameter from add-index
Henrik Hjelte<henrik@evahjelte.com>**20071122151046
 Probably a coming feature from Ian, but
 right now it breaks the generic function add-index
 and thus postmodern, so I removed it for now.
] 
[Ensure set-db-synch is defined before pset is loaded
sross@common-lisp.net**20071214145041] 
[Fix instance deserialization to bypass initialization protocol
sross@common-lisp.net**20071214141938] 
[Fix to from-end traversal of new map-index
eslick@common-lisp.net**20071130223524] 
[New map-index implementation
eslick@common-lisp.net**20071130222620] 
[Cheaper get-instance-by-value
eslick@common-lisp.net**20071130222520] 
[TAG ELEPHANT-0-9-1
ieslick@common-lisp.net**20071116153634] 
Patch bundle hash:
d9c4dededf8e8696db9cffeb68389d4275e287b0
