;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
-;;;; Name: initialize.cl
+;;;; Name: initialize.lisp
;;;; Purpose: Initializion routines for backend
;;;; Programmers: Kevin M. Rosenberg
;;;; Date Started: May 2002
;;;;
;;;; $Id$
;;;;
-;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg
;;;; and Copyright (c) 1999-2001 by Pierre R. Mai
;;;;
;;;; CLSQL users are granted the rights to distribute and use this software
;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
-(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
-(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))