(defvar *sql-stream* nil
"stream which accumulates SQL output")
-(defun sql-output (sql-expr &optional database)
+(defun sql-output (sql-expr &optional (database *default-database*))
"Top-level call for generating SQL strings. Returns an SQL
string appropriate for DATABASE which corresponds to the
supplied lisp expression SQL-EXPR."
(:documentation "An SQL between expression."))
(defmethod output-sql ((expr sql-between-exp) database)
- (with-slots (name args)
+ (with-slots (args)
expr
(output-sql (first args) database)
(write-string " BETWEEN " *sql-stream*)
(string-equal (slot-value a 'alias)
(slot-value b 'alias))
t)
- (string-equal (symbol-name (slot-value a 'name))
- (symbol-name (slot-value b 'name))))))
+ (string-equal (sql-escape (slot-value a 'name))
+ (sql-escape (slot-value b 'name))))))
(typecase from
(list (output-sql (apply #'vector
(remove-duplicates from
database))))
(defmethod database-output-sql ((tee (eql t)) database)
+ (if database
+ (let ((val (database-output-sql-as-type 'boolean t database (database-type database))))
+ (when val
+ (typecase val
+ (string (format nil "'~A'" val))
+ (integer (format nil "~A" val)))))
+ "'Y'"))
+
+#+nil(defmethod database-output-sql ((tee (eql t)) database)
(declare (ignore database))
"'Y'")