X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=base%2Fconditions.lisp;h=6b7d971d6cf3df623922b11c06e7aeadeaa87fff;hp=25d4623605396b0bdbd8b75e39b53f7b9d24e093;hb=09f07ac9d914a83f9426609f3264f4e66b5a6d97;hpb=9bbed78051e80e6ab76ae47834136035602bbbf1 diff --git a/base/conditions.lisp b/base/conditions.lisp index 25d4623..6b7d971 100644 --- a/base/conditions.lisp +++ b/base/conditions.lisp @@ -20,6 +20,10 @@ (in-package #:clsql-base) +(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.") + ;;; Conditions (define-condition clsql-condition () ()) @@ -94,15 +98,20 @@ and signal an clsql-invalid-spec-error if they don't match." (define-condition clsql-sql-error (clsql-error) ((database :initarg :database :reader clsql-sql-error-database) - (expression :initarg :expression :reader clsql-sql-error-expression) - (errno :initarg :errno :reader clsql-sql-error-errno) - (error :initarg :error :reader clsql-sql-error-error)) + (message :initarg :message :initform nil :reader clsql-sql-error-message) + (expression :initarg :expression :initarg nil :reader clsql-sql-error-expression) + (errno :initarg :errno :initarg nil :reader clsql-sql-error-errno) + (error :initarg :error :initarg nil :reader clsql-sql-error-error)) (:report (lambda (c stream) - (format stream "While accessing database ~A~% with expression ~S:~% Error ~D / ~A~% has occurred." - (clsql-sql-error-database c) - (clsql-sql-error-expression c) - (clsql-sql-error-errno c) - (clsql-sql-error-error c))))) + (if (clsql-sql-error-message c) + (format stream "While accessing database ~A~%, Error~% ~A~% has occurred." + (clsql-sql-error-database c) + (clsql-sql-error-message c)) + (format stream "While accessing database ~A~% with expression ~S:~% Error ~D / ~A~% has occurred." + (clsql-sql-error-database c) + (clsql-sql-error-expression c) + (clsql-sql-error-errno c) + (clsql-sql-error-error c)))))) (define-condition clsql-database-warning (clsql-warning) ((database :initarg :database :reader clsql-database-warning-database) @@ -198,3 +207,4 @@ and signal an clsql-invalid-spec-error if they don't match." (:report (lambda (c stream) (format stream "Invalid SQL syntax: ~A" (clsql-sql-syntax-error-reason c))))) +