Fix DO-QUERY to actually return the last value of body
[clsql.git] / db-mysql / mysql-loader.lisp
index b102fcbdade60dc945193ece7b7ca4551d1310fe..afea3e5415359a5dd155b1ff1a86c95c0335d050 100644 (file)
@@ -7,9 +7,7 @@
 ;;;; Author:   Kevin M. Rosenberg
 ;;;; Created:  Feb 2002
 ;;;;
-;;;; $Id$
-;;;;
-;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg
+;;;; This file, part of CLSQL, is Copyright (c) 2002-2010 by Kevin M. Rosenberg
 ;;;;
 ;;;; CLSQL users are granted the rights to distribute and use this software
 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
 
 (in-package #:mysql)
 
-(defparameter *clsql-mysql-library-candidate-names* 
-  (list #+(or 64bit x86-64) "clsql_mysql64"
-        #+(or 64bit x86-64) (make-pathname :name "clsql_mysql64"
-                                           :directory (pathname-directory *load-truename*))
-        "clsql_mysql"
-        (make-pathname :name "clsql_mysql"
-                       :directory (pathname-directory *load-truename*))))
+;; searches clsql_mysql64 to accomodate both 32-bit and 64-bit libraries on same system
+(defparameter *clsql-mysql-library-candidate-names*
+  `(,@(when (> most-positive-fixnum (expt 2 32)) (list "clsql_mysql64"))
+    "clsql_mysql"))
 
 (defvar *mysql-library-candidate-names*
   '("libmysqlclient" "libmysql"))
@@ -39,16 +34,18 @@ set to the right path before compiling or loading the system.")
 
 (defmethod clsql-sys:database-type-library-loaded ((database-type (eql :mysql)))
   *mysql-library-loaded*)
-                                     
+
 (defmethod clsql-sys:database-type-load-foreign ((database-type (eql :mysql)))
-  (clsql-uffi:find-and-load-foreign-library *mysql-library-candidate-names*
-                                            :module "mysql" 
-                                            :supporting-libraries *mysql-supporting-libraries*)
-  (clsql-uffi:find-and-load-foreign-library *clsql-mysql-library-candidate-names*
-                                            :module "clsql-mysql" 
-                                            :supporting-libraries *mysql-supporting-libraries*)
-  (setq *mysql-library-loaded* t))
+  (unless *mysql-library-loaded*
+    (clsql:push-library-path clsql-mysql-system::*library-file-dir*)
 
+    (clsql-uffi:find-and-load-foreign-library *mysql-library-candidate-names*
+                                              :module "mysql"
+                                              :supporting-libraries *mysql-supporting-libraries*)
 
-(clsql-sys:database-type-load-foreign :mysql)
+    (clsql-uffi:find-and-load-foreign-library *clsql-mysql-library-candidate-names*
+                                              :module "clsql-mysql"
+                                              :supporting-libraries *mysql-supporting-libraries*)
+    (setq *mysql-library-loaded* t)))
 
+(clsql-sys:database-type-load-foreign :mysql)