- query-expression))
- (rows '())
- (col-names '()))
- (unwind-protect
- ;; Read the first row to get column number and names.
- (multiple-value-bind (n-col new-row sqlite-col-names)
- (sqlite:sqlite-step vm)
- (declare (type sqlite:sqlite-row-pointer-type new-row))
- (when (> n-col 0)
- (when field-names
- (setf col-names (loop for i from 0 below n-col
- collect (sqlite:sqlite-aref sqlite-col-names i))))
- (let ((canonicalized-result-types
- (canonicalize-result-types result-types n-col sqlite-col-names)))
- (flet ((extract-row-data (row)
- (declare (type sqlite:sqlite-row-pointer-type row))
- (loop for i from 0 below n-col
- collect (clsql-uffi:convert-raw-field
- (sqlite:sqlite-raw-aref row i)
- canonicalized-result-types i))))
- (push (extract-row-data new-row) rows)
-
- ;; Read subsequent rows.
- (do () (nil)
- (multiple-value-bind (n-col new-row)
- (sqlite:sqlite-step vm)
- (declare (type sqlite:sqlite-row-pointer-type new-row))
- (if (> n-col 0)
- (push (extract-row-data new-row) rows)
- (return))))))))
- (sqlite:sqlite-finalize vm))
- (values (nreverse rows) col-names))
+ query-expression))
+ (rows '())
+ (col-names '()))
+ (unwind-protect
+ ;; Read the first row to get column number and names.
+ (multiple-value-bind (n-col new-row sqlite-col-names)
+ (sqlite:sqlite-step vm)
+ (declare (type sqlite:sqlite-row-pointer-type new-row))
+ (when (> n-col 0)
+ (when field-names
+ (setf col-names (loop for i from 0 below n-col
+ collect (sqlite:sqlite-aref sqlite-col-names i))))
+ (let ((canonicalized-result-types
+ (canonicalize-result-types result-types n-col sqlite-col-names)))
+ (flet ((extract-row-data (row)
+ (declare (type sqlite:sqlite-row-pointer-type row))
+ (loop for i from 0 below n-col
+ collect (clsql-uffi:convert-raw-field
+ (sqlite:sqlite-raw-aref row i)
+ canonicalized-result-types i))))
+ (push (extract-row-data new-row) rows)
+
+ ;; Read subsequent rows.
+ (do () (nil)
+ (multiple-value-bind (n-col new-row)
+ (sqlite:sqlite-step vm)
+ (declare (type sqlite:sqlite-row-pointer-type new-row))
+ (if (> n-col 0)
+ (push (extract-row-data new-row) rows)
+ (return))))))))
+ (sqlite:sqlite-finalize vm))
+ (values (nreverse rows) col-names))