:accessor specified-type
:initarg specified-type
:initform nil
- :documentation "Internal slot storing the :type specified by user.")))
+ :documentation "Internal slot storing the :type specified by user.")
+ (autoincrement-sequence
+ :accessor view-class-slot-autoincrement-sequence
+ :initarg :autoincrement-sequence
+ :initform nil
+ :documentation "A string naming the (possibly automatically generated) sequence
+for a slot with an :auto-increment constraint.")))
(defparameter *db-info-lambda-list*
'(&key join-class
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
(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)
(setf (specified-type esd)
(delistify-dsd (specified-type dsd)))
+ ;; In older SBCL's the type-check-function is computed at
+ ;; defclass expansion, which is too early for the CLSQL type
+ ;; conversion to take place. This gets rid of it. It's ugly
+ ;; but it's better than nothing -wcp10/4/10.
+ #+(and sbcl #.(cl:if (cl:find-symbol "%TYPE-CHECK-FUNCTION" :sb-pcl) '(and) '(or)))
+ (setf (slot-value esd 'sb-pcl::%type-check-function) nil)
)
;; all other slots