X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fexpressions.lisp;h=2098cf3e1d33e4cc287f4e8f91db01cebce191b9;hp=bcf1383189ff83a8c3ef47ce4a83ef4a674b6462;hb=67a677df17f4af2cbf6e57294605f2454c392e00;hpb=33a8b2208de67e24b346804400b2ed003770e620 diff --git a/sql/expressions.lisp b/sql/expressions.lisp index bcf1383..2098cf3 100644 --- a/sql/expressions.lisp +++ b/sql/expressions.lisp @@ -67,7 +67,8 @@ (defmethod print-object ((self %sql-expression) stream) (print-unreadable-object (self stream :type t) - (write-string (sql-output self) stream))) + (write-string (sql-output self) stream)) + self) ;; For straight up strings @@ -91,7 +92,8 @@ (defmethod print-object ((ident sql) stream) (format stream "#<~S \"~A\">" (type-of ident) - (sql-output ident nil))) + (sql-output ident nil)) + ident) ;; For SQL Identifiers of generic type @@ -354,7 +356,7 @@ (defmethod collect-table-refs ((sql sql-function-exp)) (let ((tabs nil)) - (dolist (exp (slot-value sql 'components)) + (dolist (exp (slot-value sql 'args)) (let ((refs (collect-table-refs exp))) (if refs (setf tabs (append refs tabs))))) (remove-duplicates tabs @@ -692,7 +694,7 @@ uninclusive, and the args from that keyword to the end." stmt (write-string "DELETE FROM " *sql-stream*) (typecase from - (symbol (write-string (sql-escape from) *sql-stream*)) + ((or symbol string) (write-string (sql-escape from) *sql-stream*)) (t (output-sql from database))) (when where (write-string " WHERE " *sql-stream*) @@ -828,9 +830,8 @@ uninclusive, and the args from that keyword to the end." ;; (defmethod database-output-sql ((str string) database) - (declare (ignore database) - (optimize (speed 3) (safety 1) #+cmu (extensions:inhibit-warnings 3)) - (simple-string str)) + (declare (optimize (speed 3) (safety 1) + #+cmu (extensions:inhibit-warnings 3))) (let ((len (length str))) (declare (type fixnum len)) (cond ((zerop len) @@ -840,7 +841,8 @@ uninclusive, and the args from that keyword to the end." (concatenate 'string "'" str "'")) (t (let ((buf (make-string (+ (* len 2) 2) :initial-element #\'))) - (do* ((i 0 (incf i)) + (declare (simple-string buf)) + (do* ((i 0 (incf i)) (j 1 (incf j))) ((= i len) (subseq buf 0 (1+ j))) (declare (type fixnum i j))