;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
-(in-package #:clsql-base-sys)
+(in-package #:clsql-base)
(defvar *loaded-database-types* nil
"Contains a list of database types which have been defined/loaded.")
(defun initialize-database-type (&key (database-type *default-database-type*))
"Initialize the given database-type, if it is not already
initialized, as indicated by `*initialized-database-types*'."
- (if (member database-type *initialized-database-types*)
- database-type
- (when (database-initialize-database-type database-type)
- (push database-type *initialized-database-types*)
- database-type)))
-
+ (when (member database-type *initialized-database-types*)
+ (return-from initialize-database-type database-type))
+
+ (let ((system (intern (concatenate 'string
+ (symbol-name '#:clsql-)
+ (symbol-name database-type)))))
+ (when (not (find-package system))
+ (asdf:operate 'asdf:load-op system)))
+
+ (when (database-initialize-database-type database-type)
+ (push database-type *initialized-database-types*)
+ database-type))