Version 4.0.6
[clsql.git] / db-mysql / mysql-sql.lisp
index eee57c4e40e32f6d16c773bff6aa8b8fe9b6c304..7c332cf5f7c8a03d0adfb01f18f1d1e505813e8b 100644 (file)
                              :connection-spec connection-spec
                              :error-id (mysql-errno mysql-ptr)
                              :message (mysql-error-string mysql-ptr)))
-                    (let ((db
-                           (make-instance 'mysql-database
-                                          :name (database-name-from-spec connection-spec
-                                                                         database-type)
-                                          :database-type :mysql
-                                          :connection-spec connection-spec
+                    (let* ((db
+                            (make-instance 'mysql-database
+                                           :name (database-name-from-spec connection-spec
+                                                                          database-type)
+                                           :database-type :mysql
+                                           :connection-spec connection-spec
                                            :server-info (uffi:convert-from-cstring
                                                          (mysql:mysql-get-server-info mysql-ptr))
                                            :mysql-ptr mysql-ptr))
-                          (cmd "SET SESSION sql_mode='ANSI'"))
-                      (if (zerop (mysql-real-query mysql-ptr cmd (expression-length cmd)))
-                          db
-                          (progn
-                            (warn "Error setting ANSI mode for MySQL.")
-                            db))))
+                           (cmd "SET SESSION sql_mode='ANSI'"))
+                      (uffi:with-cstring (cmd-cs cmd)
+                        (if (zerop (mysql-real-query mysql-ptr cmd-cs (expression-length cmd)))
+                            db
+                            (progn
+                              (warn "Error setting ANSI mode for MySQL.")
+                              db)))))
               (when error-occurred (mysql-close mysql-ptr)))))))))
 
 
 
 (defmethod database-list (connection-spec (type (eql :mysql)))
   (destructuring-bind (host name user password &optional port) connection-spec
-    (declare (ignore name))
-    (let ((database (database-connect (list host "mysql" user password port) type)))
+    (let ((database (database-connect (list host (or name "mysql")
+                                            user password port) type)))
       (unwind-protect
            (progn
              (setf (slot-value database 'clsql-sys::state) :open)