r9831: * db-aodbc/aodbc-sql.lisp: Fix storage location
[clsql.git] / sql / metaclasses.lisp
index 5586dab79ef6dfaded6412645bd7bdfb971f8a46..7980e325edcf6737aefb3d2f3ec5b7e93a9db9ea 100644 (file)
@@ -12,7 +12,7 @@
 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
-(in-package #:clsql)
+(in-package #:clsql-sys)
 
 (eval-when (:compile-toplevel :load-toplevel :execute)
   (when (>= (length (generic-function-lambda-list
@@ -52,7 +52,7 @@
     :accessor view-class-qualifier
     :initarg :qualifier
     :initform nil))
-  (:documentation "VIEW-CLASS metaclass."))
+  (:documentation "Metaclass for all CLSQL View Classes."))
 
 ;;; Lispworks 4.2 and before requires special processing of extra slot and class options
 
@@ -281,13 +281,13 @@ column definition in the database.")
     :initarg :db-constraints
     :initform nil
     :documentation
-    "A single constraint or list of constraints for this column")
+    "A keyword symbol representing a single SQL column constraint or list of such symbols.")
    (void-value
     :accessor view-class-slot-void-value
     :initarg :void-value
     :initform nil
     :documentation
-    "Value to store is the SQL value is NULL. Default is NIL.")
+    "Value to store if the SQL value is NULL. Default is NIL.")
    (db-info
     :accessor view-class-slot-db-info
     :initarg :db-info
@@ -362,7 +362,7 @@ column definition in the database.")
    (defun compute-class-precedence-list (class)
      (class-precedence-list class))))
 
-#-(or sbcl cmu18)
+#-mop-slot-order-reversed
 (defmethod compute-slots ((class standard-db-class))
   "Need to sort order of class slots so they are the same across
 implementations."
@@ -392,10 +392,20 @@ which does type checking before storing a value in a slot."
        ((and (symbolp (car specified-type))
             (string-equal (symbol-name (car specified-type)) "string"))
        'string)
+       ((and (symbolp (car specified-type))
+            (string-equal (symbol-name (car specified-type)) "varchar"))
+       'string)
+       ((and (symbolp (car specified-type))
+            (string-equal (symbol-name (car specified-type)) "char"))
+       'string)
        (t
        specified-type)))
     ((eq (ensure-keyword specified-type) :bigint)
      'integer)
+    ((eq (ensure-keyword specified-type) :char)
+     'character)
+    ((eq (ensure-keyword specified-type) :varchar)
+     'string)
     ((and specified-type
          (not (eql :not-null (slot-value slotd 'db-constraints))))
      `(or null ,specified-type))
@@ -497,6 +507,7 @@ which does type checking before storing a value in a slot."
        ;; all other slots
        (t
         (let ((type-predicate #+openmcl (slot-value esd 'ccl::type-predicate)))
+          #-openmcl (declare (ignore type-predicate))
           (change-class esd 'view-class-effective-slot-definition
                         #+allegro :name 
                         #+allegro (slot-definition-name dsd))