|
230 | 230 | collect value)))))
|
231 | 231 |
|
232 | 232 | (defun select-by-sql (class sql &key binds)
|
233 |
| - (mapcar (lambda (result) |
234 |
| - (apply #'make-dao-instance class result)) |
235 |
| - (retrieve-by-sql sql :binds binds))) |
| 233 | + (if *want-cursor* |
| 234 | + (select-by-sql-as-cursor class sql :binds binds) |
| 235 | + (mapcar (lambda (result) |
| 236 | + (apply #'make-dao-instance class result)) |
| 237 | + (retrieve-by-sql sql :binds binds)))) |
236 | 238 |
|
237 | 239 | (defun include-foreign-objects (foreign-class records)
|
238 | 240 | (when records
|
239 |
| - (let ((foreign-class (ensure-class foreign-class))) |
| 241 | + (let ((*want-cursor* nil) |
| 242 | + (foreign-class (ensure-class foreign-class))) |
240 | 243 | (when (cdr (table-primary-key foreign-class))
|
241 | 244 | (error "Cannot use 'includes' with a class which has composite primary keys."))
|
242 | 245 | (let* ((class (class-of (first records)))
|
|
360 | 363 | (dolist (,clause (list ,@clauses))
|
361 | 364 | (when ,clause
|
362 | 365 | (add-child ,sql ,clause)))
|
363 |
| - (if *want-cursor* |
364 |
| - (select-by-sql-as-cursor ,class ,sql) |
365 |
| - (let ((,results (select-by-sql ,class ,sql))) |
366 |
| - (dolist (,foreign-class (remove-duplicates ,include-classes)) |
367 |
| - (include-foreign-objects ,foreign-class ,results)) |
368 |
| - (values ,results ,sql))))))))))) |
| 366 | + (let ((,results (select-by-sql ,class ,sql))) |
| 367 | + (unless *want-cursor* |
| 368 | + (dolist (,foreign-class (remove-duplicates ,include-classes)) |
| 369 | + (include-foreign-objects ,foreign-class ,results))) |
| 370 | + (values ,results ,sql)))))))))) |
369 | 371 |
|
370 | 372 | (defun where-and (fields-and-values class)
|
371 | 373 | (when fields-and-values
|
|
0 commit comments