X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql.lisp;h=565672ee5810015ff56f94b55eacc5d2b7f3ba7a;hb=f2f3771917e7d8c2999615d3f30641c8ee251872;hp=82af22b282da669dd8a92b4e233060ace99d01b9;hpb=177557bbd7d32edf3bbcc7f141e079cdcf26fe88;p=umlisp.git diff --git a/sql.lisp b/sql.lisp index 82af22b..565672e 100644 --- a/sql.lisp +++ b/sql.lisp @@ -7,10 +7,8 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Created: Apr 2000 ;;;; -;;;; $Id$ -;;;; ;;;; This file, part of UMLisp, is -;;;; Copyright (c) 2000-2006 by Kevin M. Rosenberg, M.D. +;;;; Copyright (c) 2000-2010 by Kevin M. Rosenberg, M.D. ;;;; ;;;; UMLisp users are granted the rights to distribute and use this software ;;;; as governed by the terms of the GNU General Public License. @@ -21,9 +19,9 @@ (defvar +umls-sql-map+ '((:2004aa . "KUMLS2004AA") (:2006ac . "KUMLS2006AC") - (:2006ad . "MTS2006AD"))) -(defvar +default-umls-db+ "MTS2006AD") - + (:2006ad . "MTS2006AD") + (:2009ab . "MTS2009AB"))) +(defvar +default-umls-db+ "MTS2009AB") (defun lookup-db-name (db) (cdr (assoc (ensure-keyword db) +umls-sql-map+))) @@ -32,7 +30,7 @@ (defun umls-sql-db () *umls-sql-db*) -(defun umls-sql-db! (db) +(defun (setf umls-sql-db) (db) (etypecase db (string (setq *umls-sql-db* db)) @@ -42,39 +40,43 @@ (defvar *umls-sql-user* "secret") (defun umls-sql-user () *umls-sql-user*) -(defun umls-sql-user! (u) +(defun (setf umls-sql-user) (u) (sql-disconnect-pooled) (setq *umls-sql-user* u)) (defvar *umls-sql-passwd* "secret") (defun umls-sql-passwd () *umls-sql-passwd*) -(defun umls-sql-passwd! (p) +(defun (setf umls-sql-passwd) (p) (sql-disconnect-pooled) (setq *umls-sql-passwd* p)) (defvar *umls-sql-host* "localhost") (defun umls-sql-host () *umls-sql-host*) -(defun umls-sql-host! (h) +(defun (setf umls-sql-host) (h) (sql-disconnect-pooled) (setq *umls-sql-host* h)) (defvar *umls-sql-type* :mysql) (defun umls-sql-type () *umls-sql-type*) -(defun umls-sql-type! (h) +(defun (setf umls-sql-type) (h) (sql-disconnect-pooled) (setq *umls-sql-type* h)) (defun umls-connection-spec () - (list *umls-sql-host* *umls-sql-db* - *umls-sql-user* *umls-sql-passwd*)) + (if (eql *umls-sql-type* :mysql) + (list *umls-sql-host* *umls-sql-db* + *umls-sql-user* *umls-sql-passwd* + nil '((:local-infile . 1))) + (list *umls-sql-host* *umls-sql-db* + *umls-sql-user* *umls-sql-passwd*))) (defun sql-connect () "Connect to UMLS database, automatically used pooled connections" (clsql:connect (umls-connection-spec) - :database-type *umls-sql-type* :pool t)) + :database-type *umls-sql-type* :pool t)) (defun sql-disconnect (conn) "Disconnect from UMLS database, but put connection back into pool" @@ -86,7 +88,7 @@ (defmacro with-sql-connection ((conn) &body body) `(let ((,conn (sql-connect))) (unwind-protect - (progn ,@body) + (progn ,@body) (when ,conn (clsql:disconnect :database ,conn))))) (defun sql-query (cmd conn &key (result-types :auto)) @@ -110,7 +112,7 @@ (defmacro with-mutex-sql ((conn) &body body) `(let ((,conn (sql-connect))) (unwind-protect - (progn ,@body) + (progn ,@body) (when ,conn (sql-disconnect ,conn))))) (defun mutex-sql-execute (cmd)