r10398: 12 Apr 2005 Kevin Rosenberg <kevin@rosenberg.net>
[clsql.git] / sql / syntax.lisp
index eb19060c4b6ad655eab3c542d1a1482aa03a7925..a898dfb47baf7aeef3a4038ed49309244c5ef05a 100644 (file)
@@ -88,13 +88,18 @@ 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)))))
+    (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