- (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))