CONNECT. Meaningful values are :new, :warn-new, :error, :warn-old
and :old.")
+;;TODO: this variable appears to be global, not thread specific and is
+;; not protected when modifying the list.
(defvar *connected-databases* nil
"List of active database objects.")
:verbose nil))
(if pool
- (let ((conn (acquire-from-pool connection-spec database-type pool)))
+ (let ((conn (acquire-from-pool connection-spec database-type pool encoding)))
(when make-default (setq *default-database* conn))
conn)
(let* ((db-name (database-name-from-spec connection-spec database-type))
(setf *default-database* (car *connected-databases*)))
t))
(when (database-disconnect database)
+ ;;TODO: RACE COND: 2 threads disconnecting could stomp on *connected-databases*
(setf *connected-databases* (delete database *connected-databases*))
(when (eq database *default-database*)
(setf *default-database* (car *connected-databases*)))
(ignore-errors (disconnect :database db))
(disconnect :database db :error nil)))
- (connect (connection-spec db))))
+ (connect (connection-spec db) :encoding (encoding db))))
(defun status (&optional full)