From e17f07ac3185371f7d2c989c9780f70767296a54 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Tue, 4 May 2004 21:32:59 +0000 Subject: [PATCH] r9229: new tests --- ChangeLog | 7 +++++-- base/loop-extension.lisp | 24 +++++++++++++++--------- tests/test-fdml.lisp | 16 +++++++++++++++- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index d523e77..5d23e7e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,10 +7,13 @@ * base/basic-sql.lisp: Make :AUTO the default value for :RESULT-TYPES for MAP-QUERY and DO-QUERY. * sql/objects.lisp: Add bigint type - * base/loop.lisp: Add placeholder for object iteration + * base/loop.lisp: Add placeholder and error message for object + iteration. Use :result-type :auto for result-set. * test/tests-basic.lisp: Add tests for :result-types for MAP-QUERY and DO-QUERY - + * test/test-fdml.lisp: Add test for result-types in LOOP + and also using single symbol rather than a list for variables. + 4 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) * Version 2.10.9 * sql/objects.lisp: added derived type specifier for universal time. diff --git a/base/loop-extension.lisp b/base/loop-extension.lisp index 39a6dfd..3c334b0 100644 --- a/base/loop-extension.lisp +++ b/base/loop-extension.lisp @@ -51,8 +51,11 @@ (setq from-phrase '(clsql-base:*default-database*))) (cond ;; Object query resulting in a list of returned object instances - #+ignore - ((consp (car in-phrase)) + ((and (consp in-phrase) + (consp (car in-phrase)) + (consp (second (car in-phrase))) + (eq 'quote (first (second (car in-phrase)))) + (symbolp (second (second (car in-phrase))))) (ansi-loop::loop-error "object query not yet supported")) ((consp variable) @@ -70,7 +73,7 @@ (,result-set-var nil) (,step-var nil)) ((multiple-value-bind (%rs %cols) - (clsql-base:database-query-result-set ,query-var ,db-var) + (clsql-base:database-query-result-set ,query-var ,db-var :result-types :auto) (setq ,result-set-var %rs ,step-var (make-list %cols)))) () () @@ -93,7 +96,7 @@ (,db-var ,(first from-phrase)) (,result-set-var nil)) ((multiple-value-bind (%rs %cols) - (clsql-base:database-query-result-set ,query-var ,db-var) + (clsql-base:database-query-result-set ,query-var ,db-var :result-types :auto) (setq ,result-set-var %rs ,variable (make-list %cols)))) () () @@ -149,9 +152,12 @@ (cond ;; Object query resulting in a list of returned object instances - #+ignore - ((consp (car in-phrase)) - (error "Object query not yet supported.")) + ((and (consp in-phrase) + (consp (car in-phrase)) + (consp (second (car in-phrase))) + (eq 'quote (first (second (car in-phrase)))) + (symbolp (second (second (car in-phrase))))) + (loop-error "object query not yet supported")) ((consp iter-var) (let ((query-var (gensym "LOOP-RECORD-")) @@ -167,7 +173,7 @@ (,result-set-var nil) (,step-var nil)) `((multiple-value-bind (%rs %cols) - (clsql-base:database-query-result-set ,query-var ,db-var) + (clsql-base:database-query-result-set ,query-var ,db-var :result-types :auto) (setq ,result-set-var %rs ,step-var (make-list %cols)))) () () @@ -194,7 +200,7 @@ (,db-var ,(first from-phrase)) (,result-set-var nil)) `((multiple-value-bind (%rs %cols) - (clsql-base:database-query-result-set ,query-var ,db-var) + (clsql-base:database-query-result-set ,query-var ,db-var :result-types :auto) (setq ,result-set-var %rs ,iter-var (make-list %cols)))) () () diff --git a/tests/test-fdml.lisp b/tests/test-fdml.lisp index b74e532..71a3a9b 100644 --- a/tests/test-fdml.lisp +++ b/tests/test-fdml.lisp @@ -334,7 +334,21 @@ collect (concatenate 'string forename " " surname)) ("Yuri Andropov" "Leonid Brezhnev" "Konstantin Chernenko" "Mikhail Gorbachev" "Nikita Kruschev" "Vladamir Lenin" "Vladamir Putin" - "Josef Stalin" "Leon Trotsky" "Boris Yeltsin")) + "Josef Stalin" "Leon Trotsky" "Boris Yeltsin")) + +(deftest :fdml/loop/2 + (loop for emplid + being each tuple in + [select [emplid] :from [address] :order-by [emplid]] + collect emplid) + ((1) (2))) + +(deftest :fdml/loop/3 + (loop for emplid + being each tuple in + [select [emplid] :from [address] :order-by [emplid] :flatp t] + collect emplid) + (1 2)) ;; starts a transaction deletes a record and then rolls back the deletion (deftest :fdml/transaction/1 -- 2.34.1