X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=base%2Fbasic-sql.lisp;h=38733147d990750b4eb971c90a5c96d96b734561;hb=79dacf4fb7e6707e815c3e8072e5c809acaa9386;hp=4610c4208793c21cf3e85d57ddb8564b4392880f;hpb=d68d59f99911564ac2af867561fefef107cb14e8;p=clsql.git diff --git a/base/basic-sql.lisp b/base/basic-sql.lisp index 4610c42..3873314 100644 --- a/base/basic-sql.lisp +++ b/base/basic-sql.lisp @@ -31,14 +31,14 @@ 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) + (record-sql-action query-expression :query 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) + (record-sql-action res :result database) res)) ;;; Execute @@ -54,14 +54,13 @@ 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*) (types nil)) + &key (database '*default-database*) (result-types nil)) &body body) "Repeatedly executes BODY within a binding of ARGS on the attributes of each record resulting from QUERY. The return value is determined by @@ -74,7 +73,7 @@ the result of executing BODY. The default value of DATABASE is `(let ((,db ,database)) (multiple-value-bind (,result-set ,columns) (database-query-result-set ,query-expression ,db - :full-set nil :types ,types) + :full-set nil :result-types ,result-types) (when ,result-set (unwind-protect (do ((,row (make-list ,columns))) @@ -86,7 +85,7 @@ the result of executing BODY. The default value of DATABASE is (defun map-query (output-type-spec function query-expression &key (database *default-database*) - (types nil)) + (result-types nil)) "Map the function over all tuples that are returned by the query in query-expression. The results of the function are collected as specified in output-type-spec and returned like in MAP." @@ -94,21 +93,21 @@ specified in output-type-spec and returned like in MAP." `(if (atom ,type) ,type (car ,type)))) (case (type-specifier-atom output-type-spec) ((nil) - (map-query-for-effect function query-expression database types)) + (map-query-for-effect function query-expression database result-types)) (list - (map-query-to-list function query-expression database types)) + (map-query-to-list function query-expression database result-types)) ((simple-vector simple-string vector string array simple-array bit-vector simple-bit-vector base-string simple-base-string) - (map-query-to-simple output-type-spec function query-expression database types)) + (map-query-to-simple output-type-spec function query-expression database result-types)) (t (funcall #'map-query (cmucl-compat:result-type-or-lose output-type-spec t) - function query-expression :database database :types types))))) + function query-expression :database database :result-types result-types))))) -(defun map-query-for-effect (function query-expression database types) +(defun map-query-for-effect (function query-expression database result-types) (multiple-value-bind (result-set columns) (database-query-result-set query-expression database :full-set nil - :types types) + :result-types result-types) (when result-set (unwind-protect (do ((row (make-list columns))) @@ -117,10 +116,10 @@ specified in output-type-spec and returned like in MAP." (apply function row)) (database-dump-result-set result-set database))))) -(defun map-query-to-list (function query-expression database types) +(defun map-query-to-list (function query-expression database result-types) (multiple-value-bind (result-set columns) (database-query-result-set query-expression database :full-set nil - :types types) + :result-types result-types) (when result-set (unwind-protect (let ((result (list nil))) @@ -132,10 +131,10 @@ specified in output-type-spec and returned like in MAP." (database-dump-result-set result-set database))))) -(defun map-query-to-simple (output-type-spec function query-expression database types) +(defun map-query-to-simple (output-type-spec function query-expression database result-types) (multiple-value-bind (result-set columns rows) (database-query-result-set query-expression database :full-set t - :types types) + :result-types result-types) (when result-set (unwind-protect (if rows