X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql%2Fpool.cl;h=6468c56047efb68fd7335f679b913fca82065569;hb=865598033baf78cf3ba9da36a031a85eb18849e0;hp=bf790a46c58b6dae9034ef5204c52f44ea572a6f;hpb=1785177d3364ad0ad8917193b5b00310ef88105e;p=clsql.git diff --git a/sql/pool.cl b/sql/pool.cl index bf790a4..6468c56 100644 --- a/sql/pool.cl +++ b/sql/pool.cl @@ -7,7 +7,7 @@ ;;;; Programmers: Kevin M. Rosenberg, Marc Battyani ;;;; Date Started: Apr 2002 ;;;; -;;;; $Id: pool.cl,v 1.3 2002/05/01 20:22:16 marc.battyani Exp $ +;;;; $Id: pool.cl,v 1.5 2002/05/04 16:21:27 marc.battyani Exp $ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -43,7 +43,8 @@ (defun clear-conn-pool (pool) (loop for conn across (all-connections pool) - do (disconnect :database conn)) + do (setf (conn-pool conn) nil) + (disconnect :database conn)) (setf (fill-pointer (free-connections pool)) 0) (setf (fill-pointer (all-connections pool)) 0)) @@ -59,7 +60,8 @@ conn-pool)) (defun acquire-from-pool (connection-spec database-type &optional pool) - (unless pool (setf pool (find-or-create-conn-pool connection-spec database-type))) + (unless (typep pool 'conn-pool) + (setf pool (find-or-create-conn-pool connection-spec database-type))) (acquire-from-conn-pool pool)) (defun release-to-pool (database) @@ -75,16 +77,3 @@ (when clear (clrhash *db-pool*)) t) -;;; with-db-from-pool is the macro you should use if you want to use pooled connections. -;;; You can use it with a connection spec and database type or directly with a conn-pool. -;;; When you give a conn-pool the connection spec and database type are ignored - -(defmacro with-db-from-pool ((db-var connection-spec database-type &optional conn-pool) &body body) - "Evaluate the body in an environment, where `db-var' is bound to a -database connection acquired from the connection pool -The connection is automatically released to the connection pool on exit from the body. -If a pool is given then the connection-spec database-type are ignored." - `(let ((,db-var (acquire-from-pool ,connection-spec ,database-type ,conn-pool))) - (unwind-protect - (let ((,db-var ,db-var)) ,@body) - (release-to-pool ,db-var))))