X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fexpressions.lisp;h=e62d593ff7a5166b880978099bf0faabe9afbfff;hp=96013deaae1a25883dbb497cd7a3e5138907ad57;hb=fc58e4fb7d908985389c86adf57ddee6c1dde5d2;hpb=952ec6d5f4eeec95f2b9b077a49723b51912d38c diff --git a/sql/expressions.lisp b/sql/expressions.lisp index 96013de..e62d593 100644 --- a/sql/expressions.lisp +++ b/sql/expressions.lisp @@ -198,14 +198,20 @@ `(make-instance 'sql-ident-table :name ',name :table-alias ',alias))) (defmethod output-sql ((expr sql-ident-table) database) - (with-slots (name alias) - expr - (if (null alias) - (write-string (sql-escape (convert-to-db-default-case (symbol-name name) database)) *sql-stream*) - (progn - (write-string (sql-escape (convert-to-db-default-case (symbol-name name) database)) *sql-stream*) - (write-char #\Space *sql-stream*) - (format *sql-stream* "~s" alias)))) + (with-slots (name alias) expr + (let ((namestr (if (symbolp name) + (symbol-name name) + name))) + (if (null alias) + (write-string + (sql-escape (convert-to-db-default-case namestr database)) + *sql-stream*) + (progn + (write-string + (sql-escape (convert-to-db-default-case namestr database)) + *sql-stream*) + (write-char #\Space *sql-stream*) + (format *sql-stream* "~s" alias))))) t) (defmethod output-sql-hash-key ((expr sql-ident-table) database) @@ -831,8 +837,7 @@ uninclusive, and the args from that keyword to the end." (defmethod database-output-sql ((str string) database) (declare (optimize (speed 3) (safety 1) - #+cmu (extensions:inhibit-warnings 3)) - (simple-string str)) + #+cmu (extensions:inhibit-warnings 3))) (let ((len (length str))) (declare (type fixnum len)) (cond ((zerop len) @@ -842,7 +847,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)) @@ -903,6 +909,10 @@ uninclusive, and the args from that keyword to the end." (declare (ignore database)) (db-timestring self)) +(defmethod database-output-sql ((self date) database) + (declare (ignore database)) + (db-datestring self)) + (defmethod database-output-sql ((self duration) database) (declare (ignore database)) (format nil "'~a'" (duration-timestring self)))