* 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.
(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)
(,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 ,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))))
()
()
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