X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fsyntax.lisp;h=e4bf1507324dcbe1c4f73894110a76578803dd54;hp=c265f634917769e625648c89e7b2d864096269d5;hb=e622ee6f4bf2b9fe81af59d566e651c983a4833b;hpb=5be31565b7d87b90f0e79a9e61af84ad05e12920 diff --git a/sql/syntax.lisp b/sql/syntax.lisp index c265f63..e4bf150 100644 --- a/sql/syntax.lisp +++ b/sql/syntax.lisp @@ -114,26 +114,21 @@ reader syntax is disabled." (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 'clsql-sql-syntax-error :reason "bad expression syntax")))) + (error 'sql-user-error :message "bad expression syntax")))) ;; Exported functions for dealing with SQL syntax @@ -144,7 +139,7 @@ ARGS. The expressions are translated into SQL strings and then 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 @@ -156,8 +151,7 @@ and ALIAS; TABLE; and STRING." (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))))