X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql%2Fmetaclasses.lisp;h=530c674c55f6f7da589180bc618d731b0aa283bb;hb=7b96c12a4e3f3d005d4b01f0a543578333e71ecb;hp=72a3388db78d93823cff55b1bb65376f21392e92;hpb=730b9c2ed37582c51a1c02fcdaee63686bb80beb;p=clsql.git diff --git a/sql/metaclasses.lisp b/sql/metaclasses.lisp index 72a3388..530c674 100644 --- a/sql/metaclasses.lisp +++ b/sql/metaclasses.lisp @@ -112,6 +112,7 @@ base-table)) (class-name class))))) +(defgeneric ordered-class-direct-slots (class)) (defmethod ordered-class-direct-slots ((self standard-db-class)) (let ((direct-slot-names (mapcar #'slot-definition-name (class-direct-slots self))) @@ -424,7 +425,7 @@ implementations." specified-type)))) (if (and type (not (member :not-null (listify db-constraints)))) `(or null ,type) - type))) + (or type t)))) ;; Compute the slot definition for slots in a view-class. Figures out ;; what kind of database value (if any) is stored there, generates and @@ -452,8 +453,10 @@ implementations." (slot-definition-name obj))) (apply #'call-next-method obj 'specified-type type - :type (compute-lisp-type-from-specified-type - type db-constraints) + :type (if (and (eql db-kind :virtual) (null type)) + t + (compute-lisp-type-from-specified-type + type db-constraints)) initargs)) (defmethod compute-effective-slot-definition ((class standard-db-class)