- `(let* ((,value ,where-value)
- (tuple (car (umlisp-query ,table ,fields ,srl ,where-name ,value
- :lrl ,lrl :single ,single
- :distinct ,distinct :order ,order
- :like ,like
- :query-cmd ,query-cmd))))
- ,@(unless where-name `((declare (ignore ,value))))
- (when tuple
- (destructuring-bind ,fields tuple
- ,@body)))
- `(let ((,value ,where-value))
- ,@(unless where-name `((declare (ignore ,value))))
- (let ((,r '()))
- (dolist (tuple (umlisp-query ,table ,fields ,srl ,where-name ,value
- :lrl ,lrl :single ,single :distinct ,distinct
- :order ,order :like ,like))
- (push (destructuring-bind ,fields tuple ,@body) ,r))
- (nreverse ,r))
- #+ignore
- (loop for tuple in
- (umlisp-query ,table ,fields ,srl ,where-name ,value
- :lrl ,lrl :single ,single :distinct ,distinct
- :order ,order :like ,like)
- collect (destructuring-bind ,fields tuple ,@body))))))
+ (if (and limit (> limit 1))
+ (error "Can't set limit along with single.")
+ `(let* ((,value ,where-value)
+ (tuple (car (umlisp-query ,table ,fields ,srl ,where-name ,value
+ :lrl ,lrl :single ,single
+ :distinct ,distinct :order ,order
+ :like ,like :filter ,filter
+ :query-cmd ,query-cmd))))
+ ,@(unless where-name `((declare (ignore ,value))))
+ (when tuple
+ (destructuring-bind ,fields tuple
+ ,@body))))
+ `(let ((,value ,where-value))
+ ,@(unless where-name `((declare (ignore ,value))))
+ (let ((,r '()))
+ (dolist (tuple (umlisp-query ,table ,fields ,srl ,where-name ,value
+ :lrl ,lrl :single ,single :distinct ,distinct
+ :order ,order :filter ,filter :like ,like
+ :limit ,limit))
+ (push (destructuring-bind ,fields tuple ,@body) ,r))
+ (nreverse ,r))
+ #+ignore
+ (loop for tuple in
+ (umlisp-query ,table ,fields ,srl ,where-name ,value
+ :lrl ,lrl :single ,single :distinct ,distinct
+ :order ,order :like ,like :filter ,filter :limit ,limit)
+ collect (destructuring-bind ,fields tuple ,@body))))))