X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=sql%2Fexpressions.lisp;h=67fc6fa0b3c40a47312c8fd90e76c791f580e8a3;hb=e11daa653dbf4bdb74068995b79c22ad42325aa5;hp=2098cf3e1d33e4cc287f4e8f91db01cebce191b9;hpb=67a677df17f4af2cbf6e57294605f2454c392e00;p=clsql.git diff --git a/sql/expressions.lisp b/sql/expressions.lisp index 2098cf3..67fc6fa 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) @@ -223,6 +229,11 @@ :initform nil)) (:documentation "An SQL relational expression.")) +(defmethod make-load-form ((self sql-relational-exp) &optional environment) + (make-load-form-saving-slots self + :slot-names '(operator sub-expressions) + :environment environment)) + (defmethod collect-table-refs ((sql sql-relational-exp)) (let ((tabs nil)) (dolist (exp (slot-value sql 'sub-expressions)) @@ -903,6 +914,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)))