If running on a threaded lisp try loading libmysqlclient_r
[clsql.git] / db-mysql / mysql-loader.lisp
index 0267343684e20c0e441ce595b0b01ac6eb776472..cb75e5e5b3959db88f637aa4a94a2dcf499ce256 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
     "clsql_mysql"))
 
 (defvar *mysql-library-candidate-names*
-  '("libmysqlclient" "libmysql"))
+  '(
+    #+(or allegro cmu lispworks openmcl sb-thread scl) "libmysqlclient_r"
+    "libmysqlclient"
+    "libmysql"))
+
+
 
 (defvar *mysql-supporting-libraries* '("c")
   "Used only by CMU. List of library flags needed to be passed to ld to
@@ -38,21 +41,16 @@ set to the right path before compiling or loading the system.")
   *mysql-library-loaded*)
 
 (defmethod clsql-sys:database-type-load-foreign ((database-type (eql :mysql)))
-  (clsql:push-library-path
-   (make-pathname :directory clsql-mysql-system::*library-file-dir*))
+  (unless *mysql-library-loaded*
+    (clsql:push-library-path clsql-mysql-system::*library-file-dir*)
 
-  ;; since clsql-mysql is dynamically linked to libmysqlclient, do not need to
-  ;; load libmysqlclient directly
-  ;;
-  ;;(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))
+    (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)))
 
 (clsql-sys:database-type-load-foreign :mysql)
-