r1650: *** empty log message ***
[clsql.git] / interfaces / mysql / mysql-sql.cl
index 20cac08cc666076824dfb8522b2fd702cc9cbbcf..804c5dc737dc96036c1df589227ba6a8fa259c50 100644 (file)
@@ -8,7 +8,7 @@
 ;;;;                Original code by Pierre R. Mai 
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: mysql-sql.cl,v 1.1 2002/03/23 14:04:52 kevin Exp $
+;;;; $Id: mysql-sql.cl,v 1.4 2002/03/24 18:08:27 kevin Exp $
 ;;;;
 ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;; and Copyright (c) 1999-2001 by Pierre R. Mai
@@ -31,6 +31,7 @@
 
 (defpackage :clsql-mysql
     (:use :common-lisp :clsql-sys :mysql)
+    (:export #:mysql-database)
     (:documentation "This is the CLSQL interface to MySQL."))
 
 (in-package :clsql-mysql)
                 :connection-spec connection-spec
                 :errno (mysql-errno mysql-ptr)
                 :error (mysql-error-string mysql-ptr))
-       (uffi:with-cstring (host-native host)
-         (uffi:with-cstring (user-native user)
-           (uffi:with-cstring (password-native password)
-             (uffi:with-cstring (db-native db)
-               (uffi:with-cstring (socket-native socket)
-                 (let ((error-occurred nil))
-                   (unwind-protect
-                       (if (uffi:null-pointer-p 
-                            (mysql-real-connect 
-                             mysql-ptr host-native user-native password-native
-                             db-native 0 socket-native 0))
-                           (progn
-                             (setq error-occurred t)
-                             (error 'clsql-connect-error
-                                    :database-type database-type
-                                    :connection-spec connection-spec
-                                    :errno (mysql-errno mysql-ptr)
-                                    :error (mysql-error-string mysql-ptr)))
-                         (make-instance 'mysql-database
-                           :name (database-name-from-spec connection-spec
-                                                          database-type)
-                           :mysql-ptr mysql-ptr))
-                     (when error-occurred (mysql-close mysql-ptr)))))))))))))
+       (uffi:with-cstrings ((host-native host)
+                           (user-native user)
+                           (password-native password)
+                           (db-native db)
+                           (socket-native socket))
+         (let ((error-occurred nil))
+           (unwind-protect
+               (if (uffi:null-pointer-p 
+                    (mysql-real-connect 
+                     mysql-ptr host-native user-native password-native
+                     db-native 0 socket-native 0))
+                   (progn
+                     (setq error-occurred t)
+                     (error 'clsql-connect-error
+                            :database-type database-type
+                            :connection-spec connection-spec
+                            :errno (mysql-errno mysql-ptr)
+                            :error (mysql-error-string mysql-ptr)))
+                 (make-instance 'mysql-database
+                   :name (database-name-from-spec connection-spec
+                                                  database-type)
+                   :mysql-ptr mysql-ptr))
+             (when error-occurred (mysql-close mysql-ptr)))))))))
 
 
 (defmethod database-disconnect ((database mysql-database))
@@ -97,7 +98,8 @@
 (defstruct mysql-result-set
   (res-ptr (uffi:make-null-pointer 'mysql-mysql-res)
           :type mysql-mysql-res-ptr-def)
-  (full-set nil))
+  (field-types nil :type cons)
+  (full-set nil :type boolean))
 
 (defmethod database-dump-result-set (result-set (database mysql-database))
   (mysql-free-result (mysql-result-set-res-ptr result-set))
 
 
 
-(defmethod database-query (query-expression (database mysql-database))
+(defmethod database-query (query-expression (database mysql-database) field-types)
   (with-slots (mysql-ptr) database
     (uffi:with-cstring (query-native query-expression)
        (if (zerop (mysql-query mysql-ptr query-native))
                :error (mysql-error-string mysql-ptr))))))
 
 
-(defmethod database-query-result-set (query-expression 
-                                     (database mysql-database)
-                                     &optional full-set)
+(defmethod database-query-result-set (query-expression (database mysql-database)
+                                     &key full-set field-types)
   (uffi:with-cstring (query-native query-expression)
     (let ((mysql-ptr (database-mysql-ptr database)))
      (declare (type mysql-mysql-ptr-def mysql-ptr))