X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=base%2Fbasic-sql.lisp;h=eaccc03315e1770b8139e0be2a10cbd27bd7a757;hp=61a932e5ad02df135fc3e6c0687c4c6c962ca0d8;hb=9bbed78051e80e6ab76ae47834136035602bbbf1;hpb=5691bb90517d7c565a141d131da76c3de1f8d566 diff --git a/base/basic-sql.lisp b/base/basic-sql.lisp index 61a932e..eaccc03 100644 --- a/base/basic-sql.lisp +++ b/base/basic-sql.lisp @@ -12,7 +12,7 @@ ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; ************************************************************************* -(in-package #:clsql-base-sys) +(in-package #:clsql-base) ;;; Query @@ -30,16 +30,17 @@ one result per row. Returns a list of lists of values of the result of that expression and a list of field names selected in sql-exp.")) (defmethod query ((query-expression string) &key (database *default-database*) - (result-types nil) (flatp nil)) - (record-sql-command query-expression database) - (let* ((res (database-query query-expression database result-types)) - (res (if (and flatp (= (length - (slot-value query-expression 'selections)) - 1)) - (mapcar #'car res) - res))) - (record-sql-result res database) - res)) + (result-types :auto) (flatp nil) (field-names t)) + (record-sql-action query-expression :query database) + (multiple-value-bind (rows names) (database-query query-expression database result-types + field-names) + (let ((result (if (and flatp (= 1 (length (car rows)))) + (mapcar #'car rows) + rows))) + (record-sql-action result :result database) + (if field-names + (values result names) + result)))) ;;; Execute @@ -54,12 +55,11 @@ pair.")) (defmethod execute-command ((sql-expression string) &key (database *default-database*)) - (record-sql-command sql-expression database) + (record-sql-action sql-expression :command database) (let ((res (database-execute-command sql-expression database))) - (record-sql-result res database)) + (record-sql-action res :result database)) (values)) - (defmacro do-query (((&rest args) query-expression &key (database '*default-database*) (result-types nil)) &body body)