(declare (ignore char))
(let ((sqllist (read-delimited-list #\] stream t)))
(cond ((string= (write-to-string (car sqllist)) "||")
- (cons (sql-operator 'concat) (cdr sqllist)))
+ (cons (sql-operator 'concat-op) (cdr sqllist)))
((and (= (length sqllist) 1) (eql (car sqllist) '*))
(apply #'generate-sql-reference sqllist))
((sql-operator (car sqllist))
(sql-expression :string (car arglist))
(sql-expression :attribute (car arglist))))
((<= 2 (length arglist))
- (let ((sqltype (if (keywordp (caddr arglist))
- (caddr arglist) nil))
- (sqlparam (if (keywordp (caddr arglist))
- (caddr arglist))))
- (cond
+ (let ((sqltype (when (keywordp (caddr arglist)) (caddr arglist) nil)))
+ (cond
((stringp (cadr arglist))
(sql-expression :table (car arglist)
:alias (cadr arglist)
:type sqltype))
((keywordp (cadr arglist))
(sql-expression :attribute (car arglist)
- :type (cadr arglist)
- :params sqlparam))
+ :type (cadr arglist)))
(t
(sql-expression :attribute (cadr arglist)
:table (car arglist)
- :params sqlparam
:type sqltype)))))
(t
(error 'sql-user-error :message "bad expression syntax"))))
concatenated with a single space delimiting each expression."
(format nil "~{~A~^ ~}" (mapcar #'sql-output args)))
-(defun sql-expression (&key string table alias attribute type params)
+(defun sql-expression (&key string table alias attribute type)
"Returns an SQL expression constructed from the supplied arguments
which may be combined as follows: ATTRIBUTE and TYPE; ATTRIBUTE;
ALIAS or TABLE and ATTRIBUTE and TYPE; ALIAS or TABLE and
(attribute
(make-instance 'sql-ident-attribute :name attribute
:qualifier (or table alias)
- :type type
- :params params))
+ :type type))
((and table (not attribute))
(make-instance 'sql-ident-table :name table
:table-alias alias))))
represented by the symbol OPERATION."
(typecase operation
(string nil)
- (symbol (gethash (symbol-name-default-case (symbol-name operation))
- *sql-op-table*))))
+ (symbol (values (gethash (symbol-name-default-case (symbol-name operation))
+ *sql-op-table*)))))
(defun sql-operation (operation &rest rest)
"Returns an SQL expression constructed from the supplied SQL
in REST its arguments."
(if (sql-operator operation)
(apply (symbol-function (sql-operator operation)) rest)
- (error "~A is not a recognized SQL operator." operation)))
+ (error 'sql-user-error
+ :message
+ (format nil "~A is not a recognized SQL operator." operation))))