From: Kevin Rosenberg Date: Sun, 21 Mar 2010 07:03:59 +0000 (-0600) Subject: Fix DO-QUERY to actually return the last value of body X-Git-Tag: v5.0.5~2 X-Git-Url: http://git.kpe.io/?p=clsql.git;a=commitdiff_plain;h=79d8426bb78f25255a2cb2550ed2d41174b35b53;hp=7a4858c944c2361dce485a69b66dcf1ad4dcad60 Fix DO-QUERY to actually return the last value of body --- diff --git a/ChangeLog b/ChangeLog index 63b51ba..dee22b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2010-03-21 Kevin Rosenberg + * sql/fdml.lisp: Fix DO-QUERY to actually return the last value of the body + 2010-03-02 Nathan Bird * doc/: Added a README on how to build doc; now builds on Ubuntu. * sql/oodml.lisp: READ-SQL-VALUE now has explicit method for diff --git a/db-mysql/mysql-loader.lisp b/db-mysql/mysql-loader.lisp index cdf28cd..afea3e5 100644 --- a/db-mysql/mysql-loader.lisp +++ b/db-mysql/mysql-loader.lisp @@ -7,7 +7,7 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Created: Feb 2002 ;;;; -;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg +;;;; This file, part of CLSQL, is Copyright (c) 2002-2010 by Kevin M. Rosenberg ;;;; ;;;; CLSQL users are granted the rights to distribute and use this software ;;;; as governed by the terms of the Lisp Lesser GNU Public License @@ -36,17 +36,16 @@ set to the right path before compiling or loading the system.") *mysql-library-loaded*) (defmethod clsql-sys:database-type-load-foreign ((database-type (eql :mysql))) - (clsql:push-library-path clsql-mysql-system::*library-file-dir*) + (unless *mysql-library-loaded* + (clsql:push-library-path clsql-mysql-system::*library-file-dir*) - (clsql-uffi:find-and-load-foreign-library *mysql-library-candidate-names* - :module "mysql" - :supporting-libraries *mysql-supporting-libraries*) - - (clsql-uffi:find-and-load-foreign-library *clsql-mysql-library-candidate-names* - :module "clsql-mysql" - :supporting-libraries *mysql-supporting-libraries*) - (setq *mysql-library-loaded* t)) + (clsql-uffi:find-and-load-foreign-library *mysql-library-candidate-names* + :module "mysql" + :supporting-libraries *mysql-supporting-libraries*) + (clsql-uffi:find-and-load-foreign-library *clsql-mysql-library-candidate-names* + :module "clsql-mysql" + :supporting-libraries *mysql-supporting-libraries*) + (setq *mysql-library-loaded* t))) (clsql-sys:database-type-load-foreign :mysql) - diff --git a/sql/fdml.lisp b/sql/fdml.lisp index fcd6a3d..b9a1153 100644 --- a/sql/fdml.lisp +++ b/sql/fdml.lisp @@ -209,7 +209,8 @@ types are automatically computed for each field." (qe (gensym "QUERY-EXPRESSION-")) (columns (gensym "COLUMNS-")) (row (gensym "ROW-")) - (db (gensym "DB-"))) + (db (gensym "DB-")) + (last-form-eval (gensym "LFE-"))) `(let ((,qe ,query-expression) (,db ,database)) (typecase ,qe @@ -226,11 +227,14 @@ types are automatically computed for each field." :result-types ,result-types) (when ,result-set (unwind-protect - (do ((,row (make-list ,columns))) + (do ((,row (make-list ,columns)) + (,last-form-eval nil)) ((not (database-store-next-row ,result-set ,db ,row)) - nil) + ,last-form-eval) (destructuring-bind ,args ,row - ,@body)) + (setq ,last-form-eval + (progn + ,@body)))) (database-dump-result-set ,result-set ,db))))))))) (defun map-query (output-type-spec function query-expression