[elephant-devel] Elephant 0.6.0 SQL fix on OpenMCL 1.0

Ian Eslick eslick at csail.mit.edu
Thu Nov 9 21:25:19 UTC 2006


I've had continuous problems with MCL's type specs.  Do you have any
idea how and why MCL treats them differently?  I never use MCL so don't
have a good sense of what standards to use to generate code that works
under MCL.  This specific problem might be fixed by setting the type to
(or null integer).

I'm back hacking on Elephant for a few days so this is a good time to
chase any remaining issues to ground.  Did you get the 0.6.0, BDB 4.3
and MCL working together?

Ian

George Khouri wrote:
> Friends,
> Testing  Elephant 0.6.0 against a postgres db, in OpenMCL 1.0, I found that the close-cursor method fails since it tries to set the value of the sql-cursor slot "curkey" to NIL, while its type spec in the class declaration is INTEGER.  Perhaps other lisps allow this.  
> If I change close-cursor to set curkey to -1 as below, the tests run fine.  I don't know if there are other routines which check for a null value in that cursor slot, in which case my change wouldn't work. Perhaps the type spec should be removed from the slot declaration instead?
>
> The code is in elephant/src/db-clsql/sql-collections.lisp.
>
> (defclass sql-cursor (cursor)
>   ((keys :accessor :sql-crsr-ks :initarg :sql-cursor-keys :initform '())
>    (curkey :accessor :sql-crsr-ck :initarg :sql-cursor-curkey :initform -1 :type integer))
>   (:documentation "A SQL cursor for traversing (primary) BTrees."))
>
> ...
>
> (defmethod cursor-close ((cursor sql-cursor))
>   #-openmcl
>   (setf (:sql-crsr-ck cursor) nil)
>   #+openmcl 
>   (setf (:sql-crsr-ck cursor) -1)  ; ** GK  
>   (setf (cursor-initialized-p cursor) nil))
>
> Thanks,
> George
> --------
> George Khouri
> gk1 at four-four.com
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel
>   



More information about the elephant-devel mailing list