r9229: new tests
authorKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 4 May 2004 21:32:59 +0000 (21:32 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 4 May 2004 21:32:59 +0000 (21:32 +0000)
ChangeLog
base/loop-extension.lisp
tests/test-fdml.lisp

index d523e77b161109d082210c1e38798adae433987c..5d23e7e20d63558ced0fd4504a3f1533b049f8f2 100644 (file)
--- 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. 
index 39a6dfd366461e74d5e3549fd2ffef031c25b81d..3c334b0b5433d665c5b531c05f87caa1313b6ce4 100644 (file)
       (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))))
           ()
           ()
 
     (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-"))
            (,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))))
          ()
          ()
            (,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))))
          ()
          ()
index b74e53275479e41205f7b8d904ce3338e454c4d8..71a3a9baa04d5bfbd4187032f6103691f71e6f06 100644 (file)
       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