;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
-(in-package #:clsql)
+(in-package #:clsql-sys)
(defvar +empty-string+ "''")
(defvar *select-arguments*
'(:all :database :distinct :flatp :from :group-by :having :order-by
:order-by-descending :set-operation :where :offset :limit
- :inner-join :on))
+ :inner-join :on
+ ;; below keywords are not a SQL argument, but these keywords may terminate select
+ :caching :refresh))
(defun query-arg-p (sym)
(member sym *select-arguments*))
(output-sql (apply #'vector selections) database)
(when from
(write-string " FROM " *sql-stream*)
- (if (listp from)
- (output-sql (apply #'vector from) database)
- (output-sql from database)))
+ (typecase from
+ (list (output-sql (apply #'vector from) database))
+ (string (write-string from *sql-stream*))
+ (t (output-sql from database))))
(when inner-join
(write-string " INNER JOIN " *sql-stream*)
(output-sql inner-join database))
t)
(defmethod output-sql ((query sql-object-query) database)
+ (declare (ignore database))
(with-slots (objects)
query
(when objects