+
+;;; 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))))