X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fdatabase.lisp;h=299eadca439fc07f1c0955c417595cc6eca1650c;hp=bb87046fb6c8ce494976b9293efbc11d997b7e9d;hb=326e9dc298298431a7122ed57d14a60bccd95923;hpb=96cc4dd98e77b8a1f83fa850e3348219c957b7ef diff --git a/sql/database.lisp b/sql/database.lisp index bb87046..299eadc 100644 --- a/sql/database.lisp +++ b/sql/database.lisp @@ -12,6 +12,9 @@ (in-package #:clsql-sys) +(defvar *default-encoding* + (or #+sbcl sb-impl::*default-external-format* + :utf-8)) (defvar *connect-if-exists* :error "Default value for the if-exists keyword argument in calls to @@ -73,7 +76,7 @@ error is signalled." (make-default t) (pool nil) (database-type *default-database-type*) - (encoding nil)) + (encoding *default-encoding*)) "Connects to a database of the supplied DATABASE-TYPE which defaults to *DEFAULT-DATABASE-TYPE*, using the type-specific connection specification CONNECTION-SPEC. The value of IF-EXISTS, @@ -104,7 +107,7 @@ be taken from this pool." :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)) @@ -193,7 +196,9 @@ and signal an sql-user-error if they don't match. This function is called by database backends." `(handler-case (destructuring-bind ,template ,connection-spec - (declare (ignore ,@(remove '&optional template))) + (declare (ignore ,@(remove-if + (lambda (x) (member x '(&key &rest &optional))) + template))) t) (error () (error 'sql-user-error @@ -234,7 +239,7 @@ database connection cannot be closed, an error is signalled." (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) @@ -313,8 +318,9 @@ system specified by DATABASE-TYPE." (database-list connection-spec database-type)) (defun encoding (db) - (when (typep db 'database) - (slot-value db 'encoding))) + (or (when (typep db 'database) + (slot-value db 'encoding)) + *default-encoding*)) (defun (setf encoding) (encoding db) (when (typep db 'database)