r2261: *** empty log message ***
[clsql.git] / interfaces / mysql / mysql-sql.cl
index 2623aed20f2944a0bc089a14a4912a66367bdf05..652fb33e9f7e841a4c1e8f2bc6e2d5351c10c634 100644 (file)
@@ -8,7 +8,7 @@
 ;;;;                Original code by Pierre R. Mai 
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: mysql-sql.cl,v 1.15 2002/03/27 12:09:39 kevin Exp $
+;;;; $Id: mysql-sql.cl,v 1.22 2002/05/27 17:19:30 kevin Exp $
 ;;;;
 ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;; and Copyright (c) 1999-2001 by Pierre R. Mai
@@ -33,7 +33,7 @@
 ;;;; Added field types
 
 (defpackage :clsql-mysql
-    (:use :common-lisp :clsql-sys :mysql :clsql-uffi)
+    (:use :common-lisp :clsql-base-sys :mysql :clsql-uffi)
     (:export #:mysql-database)
     (:documentation "This is the CLSQL interface to MySQL."))
 
     (nreverse new-types)))
 
 (defun canonicalize-types (types num-fields res-ptr)
-  (let ((auto-list (make-type-list-for-auto num-fields res-ptr)))
-    (cond
-      ((listp types)
-       (canonicalize-type-list types auto-list))
-      ((eq types :auto)
-       auto-list)
-      (t
-       nil))))
+  (if (null types)
+      nil
+      (let ((auto-list (make-type-list-for-auto num-fields res-ptr)))
+       (cond
+         ((listp types)
+          (canonicalize-type-list types auto-list))
+         ((eq types :auto)
+          auto-list)
+         (t
+          nil)))))
 
 (defmethod database-initialize-database-type ((database-type (eql :mysql)))
   t)
   ((mysql-ptr :accessor database-mysql-ptr :initarg :mysql-ptr
              :type mysql-mysql-ptr-def)))
 
+(defmethod database-type ((database mysql-database))
+  :mysql)
+
 (defmethod database-name-from-spec (connection-spec (database-type (eql :mysql)))
   (check-connection-spec connection-spec database-type (host db user password))
   (destructuring-bind (host db user password) connection-spec
     (declare (ignore password))
     (concatenate 'string host "/" db "/" user)))
 
-
 (defmethod database-connect (connection-spec (database-type (eql :mysql)))
   (check-connection-spec connection-spec database-type (host db user password))
   (destructuring-bind (host db user password) connection-spec
                  (make-instance 'mysql-database
                    :name (database-name-from-spec connection-spec
                                                   database-type)
+                   :connection-spec connection-spec
                    :mysql-ptr mysql-ptr))
              (when error-occurred (mysql-close mysql-ptr)))))))))
 
       list)))
 
 
+(when (clsql-base-sys:database-type-library-loaded :mysql)
+  (clsql-base-sys:initialize-database-type :database-type :mysql)
+  (pushnew :mysql cl:*features*))