r10933: 08 May 2006 Kevin Rosenberg <kevin@rosenberg.net>
[clsql.git] / sql / syntax.lisp
index eb19060c4b6ad655eab3c542d1a1482aa03a7925..5ad83d8ca2c27f6ed6859cf7845abf823191e389 100644 (file)
@@ -88,13 +88,19 @@ reader syntax is disabled."
 (defun sql-reader-open (stream char)
   (declare (ignore char))
   (let ((sqllist (read-delimited-list #\] stream t)))
-    (cond ((string= (write-to-string (car sqllist)) "||")
-           (cons (sql-operator 'concat-op) (cdr sqllist)))
-          ((and (= (length sqllist) 1) (eql (car sqllist) '*))
-           (apply #'generate-sql-reference sqllist))
-          ((sql-operator (car sqllist))
-           (cons (sql-operator (car sqllist)) (cdr sqllist)))
-          (t (apply #'generate-sql-reference sqllist)))))
+    (unless *read-suppress*
+      (handler-case
+         (cond ((string= (write-to-string (car sqllist)) "||")
+                (cons (sql-operator 'concat-op) (cdr sqllist)))
+               ((and (= (length sqllist) 1) (eql (car sqllist) '*))
+                (apply #'generate-sql-reference sqllist))
+               ((sql-operator (car sqllist))
+                (cons (sql-operator (car sqllist)) (cdr sqllist)))
+               (t (apply #'generate-sql-reference sqllist)))
+       (sql-user-error (c)
+         (error 'sql-user-error
+                :message (format nil "Error ~A occured while attempting to parse '~A' at file position ~A"
+                                 (sql-user-error-message c) sqllist (file-position stream))))))))
 
 (defun disable-sql-close-syntax ()
   "Internal function that disables the close syntax when leaving