X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql%2Fexpressions.lisp;h=c7fd033da646d6c0a17520a64f129f79fb37ad34;hb=6e49d313475d42d2ef7b4eea626f2d7da902d09e;hp=45d4631b5eaccf70b878b49a6b79907b9d4930c4;hpb=818295fa37036acb348ff24ea926b9d7c9f33cba;p=clsql.git diff --git a/sql/expressions.lisp b/sql/expressions.lisp index 45d4631..c7fd033 100644 --- a/sql/expressions.lisp +++ b/sql/expressions.lisp @@ -421,7 +421,7 @@ (defmethod output-sql ((expr sql-query-modifier-exp) database) (with-slots (modifier components) expr - (output-sql modifier database) + (%write-operator modifier database) (write-string " " *sql-stream*) (output-sql (car components) database) (when components @@ -587,13 +587,17 @@ uninclusive, and the args from that keyword to the end." (write-string "(" *sql-stream*)) (write-string "SELECT " *sql-stream*) (when all - (write-string "ALL " *sql-stream*)) + (write-string " ALL " *sql-stream*)) (when (and distinct (not all)) - (write-string "DISTINCT " *sql-stream*) + (write-string " DISTINCT " *sql-stream*) (unless (eql t distinct) - (write-string "ON " *sql-stream*) + (write-string " ON " *sql-stream*) (output-sql distinct database) (write-char #\Space *sql-stream*))) + (when (and limit (eql :mssql (database-underlying-type database))) + (write-string " TOP " *sql-stream*) + (output-sql limit database) + (write-string " " *sql-stream*)) (let ((*in-subselect* t)) (output-sql (apply #'vector selections) database)) (when from @@ -657,7 +661,7 @@ uninclusive, and the args from that keyword to the end." (when (cdr order) (write-char #\, *sql-stream*)))) (output-sql order-by database))) - (when limit + (when (and limit (not (eql :mssql (database-underlying-type database)))) (write-string " LIMIT " *sql-stream*) (output-sql limit database)) (when offset @@ -797,9 +801,9 @@ uninclusive, and the args from that keyword to the end." (declaim (inline listify)) (defun listify (x) - (if (atom x) - (list x) - x)) + (if (listp x) + x + (list x))) (defmethod output-sql ((stmt sql-create-table) database) (flet ((output-column (column-spec) @@ -991,7 +995,9 @@ uninclusive, and the args from that keyword to the end." (cons (symbol-name-default-case "ZEROFILL") "ZEROFILL") (cons (symbol-name-default-case "AUTO-INCREMENT") "AUTO_INCREMENT") (cons (symbol-name-default-case "DEFAULT") "DEFAULT") - (cons (symbol-name-default-case "UNIQUE") "UNIQUE"))) + (cons (symbol-name-default-case "UNIQUE") "UNIQUE") + (cons (symbol-name-default-case "IDENTITY") "IDENTITY (1,1)") ;; added for sql-server support + )) (defmethod database-constraint-statement (constraint-list database) (declare (ignore database))