X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fconditions.lisp;h=549f8f869f7a8e155b47d0739851bdf545364e81;hp=4e3380f7e276d655a460d4af995d08029c492834;hb=e567409d9fff3f7231c2a0bb69b345e19de2b246;hpb=cc7abc6063ff8a803064c75c400ec7d31fd29a21 diff --git a/sql/conditions.lisp b/sql/conditions.lisp index 4e3380f..549f8f8 100644 --- a/sql/conditions.lisp +++ b/sql/conditions.lisp @@ -17,64 +17,65 @@ (in-package #:clsql-sys) (defvar *backend-warning-behavior* :warn - "Action to perform on warning messages from backend. Default is to :warn. May also be -set to :error to signal an error or :ignore/nil to silently ignore the warning.") + "Action to perform on warning messages from backend. Default is +to :warn. May also be set to :error to signal an error +or :ignore/nil to silently ignore the warning.") ;;; CommonSQL-compatible conditions - + (define-condition sql-condition () ()) -(define-condition sql-error (simple-error) +(define-condition sql-error (simple-error sql-condition) ()) (define-condition sql-database-error (sql-error) - ((error-id :initarg :error-id - :initform nil - :reader sql-error-error-id) + ((error-id :initarg :error-id + :initform nil + :reader sql-error-error-id) (secondary-error-id :initarg :secondary-error-id - :initform nil - :reader sql-error-secondary-error-id) + :initform nil + :reader sql-error-secondary-error-id) (database-message :initarg :message - :initform nil - :reader sql-error-database-message) + :initform nil + :reader sql-error-database-message) (database :initarg :database - :initform nil - :reader sql-error-database)) + :initform nil + :reader sql-error-database)) (:report (lambda (c stream) - (format stream "A database error occurred~A: ~A / ~A~% ~A" - (if (sql-error-database c) - (format nil " on database ~A" (sql-error-database c)) - "") - (sql-error-error-id c) - (sql-error-secondary-error-id c) - (sql-error-database-message c)))) + (format stream "A database error occurred~@[ on database ~A~]: ~A / ~A~% ~A" + (sql-error-database c) + (sql-error-error-id c) + (sql-error-secondary-error-id c) + (sql-error-database-message c)))) (:documentation "Used to signal an error in a CLSQL database interface.")) (define-condition sql-connection-error (sql-database-error) ((database-type :initarg :database-type :initform nil - :reader sql-error-database-type) + :reader sql-error-database-type) (connection-spec :initarg :connection-spec :initform nil - :reader sql-error-connection-spec)) + :reader sql-error-connection-spec)) (:report (lambda (c stream) - (format stream "While trying to connect to database ~A~% using database-type ~A:~% Error ~D / ~A~% has occurred." - (database-name-from-spec - (sql-error-connection-spec c) - (sql-error-database-type c)) - (sql-error-database-type c) - (sql-error-error-id c) - (sql-error-database-message c)))) + (format stream "While trying to connect to database ~A~% using database-type ~A:~% Error ~D / ~A~% has occurred." + (when (and (sql-error-connection-spec c) + (sql-error-database-type c)) + (database-name-from-spec + (sql-error-connection-spec c) + (sql-error-database-type c))) + (sql-error-database-type c) + (sql-error-error-id c) + (sql-error-database-message c)))) (:documentation "Used to signal an error in connecting to a database.")) (define-condition sql-database-data-error (sql-database-error) - ((expression :initarg :expression :initarg nil - :reader sql-error-expression)) + ((expression :initarg :expression :initarg nil + :reader sql-error-expression)) (:report (lambda (c stream) - (format stream "While accessing database ~A~% with expression ~S:~% Error ~D / ~A~% has occurred." - (sql-error-database c) - (sql-error-expression c) - (sql-error-error-id c) - (sql-error-database-message c)))) + (format stream "While accessing database ~A~% with expression ~S:~% Error ~D / ~A~% has occurred." + (sql-error-database c) + (sql-error-expression c) + (sql-error-error-id c) + (sql-error-database-message c)))) (:documentation "Used to signal an error with the SQL data passed to a database.")) @@ -97,11 +98,11 @@ connection is no longer usable.")) (define-condition sql-user-error (sql-error) ((message :initarg :message - :initform "Unspecified error" - :reader sql-user-error-message)) + :initform "Unspecified error" + :reader sql-user-error-message)) (:report (lambda (c stream) - (format stream "A CLSQL lisp code error occurred: ~A " - (sql-user-error-message c)))) + (format stream "A CLSQL lisp code error occurred: ~A " + (sql-user-error-message c)))) (:documentation "Used to signal lisp errors inside CLSQL.")) @@ -110,13 +111,15 @@ connection is no longer usable.")) (defun signal-closed-database-error (database) (error 'sql-fatal-error - :database database - :message "Database is closed.")) + :database database + :connection-spec (when database (connection-spec database)) + :database-type (when database (database-type database)) + :message "Database is closed.")) (defun signal-no-database-error (database) (error 'sql-database-error - :database database - :message (format nil "~A is not a database." database))) + :database database + :message (format nil "~A is not a database." database))) ;;; CLSQL Extensions @@ -124,12 +127,12 @@ connection is no longer usable.")) (define-condition sql-warning (warning sql-condition) ((message :initarg :message :initform nil :reader sql-warning-message)) (:report (lambda (c stream) - (format stream "~A" (sql-warning-message c))))) + (format stream "~A" (sql-warning-message c))))) (define-condition sql-database-warning (sql-warning) ((database :initarg :database :reader sql-warning-database)) (:report (lambda (c stream) - (format stream - "While accessing database ~A~% Warning: ~A~% has occurred." - (sql-warning-database c) - (sql-warning-message c))))) + (format stream + "While accessing database ~A~% Warning: ~A~% has occurred." + (sql-warning-database c) + (sql-warning-message c)))))