X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=interfaces%2Fmysql%2Fmysql-sql.cl;h=804c5dc737dc96036c1df589227ba6a8fa259c50;hb=01e78fad2d9c4c18f11ec032c80afa59212ba109;hp=20cac08cc666076824dfb8522b2fd702cc9cbbcf;hpb=8213ff48f5362c3d4792444c929f50bd128bd044;p=clsql.git diff --git a/interfaces/mysql/mysql-sql.cl b/interfaces/mysql/mysql-sql.cl index 20cac08..804c5dc 100644 --- a/interfaces/mysql/mysql-sql.cl +++ b/interfaces/mysql/mysql-sql.cl @@ -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) @@ -63,29 +64,29 @@ :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)) @@ -132,7 +134,7 @@ -(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)) @@ -159,9 +161,8 @@ :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))