- ;; empty result set
- nil
- (let ((row (sqlite-result-set-first-row result-set)))
- (if (sqlite:null-row-p row)
- ;; First row already used. fetch another row from DB.
- (handler-case
- (multiple-value-bind (n new-row col-names)
- (sqlite:sqlite-step (sqlite-result-set-vm result-set))
- (declare (ignore n col-names)
- #-clisp (type sqlite:sqlite-row-pointer-type new-row))
- (if (sqlite:null-row-p new-row)
- (return-from database-store-next-row nil)
- (setf row new-row)))
- (sqlite:sqlite-error (err)
- (error 'sql-database-error
- :message
- (format nil "Error in sqlite-step: ~A"
- (sqlite:sqlite-error-message err)))))
-
- ;; Use the row previously read by database-query-result-set.
- (setf (sqlite-result-set-first-row result-set)
- (sqlite:make-null-row)))
- (loop for i = 0 then (1+ i)
- for rest on list
- do (setf (car rest)
- #-clisp
- (clsql-uffi:convert-raw-field
- (uffi:deref-array
- (uffi:deref-pointer row 'sqlite:sqlite-row-pointer) '(:array (* :unsigned-char)) i)
- result-types
- i)
- #+clisp
- (let ((type (if result-types
- (nth i result-types)
- :string))
- (val (sqlite:sqlite-aref row i)))
- (case type
- (:string
- val)
- (:integer
- (when val (parse-integer val)))
- (:number
- (read-from-string val))
- (:double
- (when val
- (coerce
- (read-from-string val)
- 'double-float)))))))
- (sqlite:sqlite-free-row row)
- t))))
+ ;; empty result set
+ nil
+ (let ((row (sqlite-result-set-first-row result-set)))
+ (if (sqlite:null-row-p row)
+ ;; First row already used. fetch another row from DB.
+ (handler-case
+ (multiple-value-bind (n new-row col-names)
+ (sqlite:sqlite-step (sqlite-result-set-vm result-set))
+ (declare (ignore n col-names)
+ (type sqlite:sqlite-row-pointer-type new-row))
+ (if (sqlite:null-row-p new-row)
+ (return-from database-store-next-row nil)
+ (setf row new-row)))
+ (sqlite:sqlite-error (err)
+ (error 'sql-database-error
+ :message
+ (format nil "Error in sqlite-step: ~A"
+ (sqlite:sqlite-error-message err)))))
+
+ ;; Use the row previously read by database-query-result-set.
+ (setf (sqlite-result-set-first-row result-set)
+ (sqlite:make-null-row)))
+ (loop for i = 0 then (1+ i)
+ for rest on list
+ do (setf (car rest)
+ (clsql-uffi:convert-raw-field
+ (sqlite:sqlite-raw-aref row i)
+ result-types
+ i)))
+ (sqlite:sqlite-free-row row)
+ t))))