(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))))
+ collect (sqlite:sqlite-aref sqlite-col-names i (encoding database)))))
(let ((canonicalized-result-types
- (canonicalize-result-types result-types n-col sqlite-col-names)))
+ (canonicalize-result-types result-types n-col sqlite-col-names database)))
(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))))
+ (nth i canonicalized-result-types)
+ :encoding (encoding database)))))
(push (extract-row-data new-row) rows)
;; Read subsequent rows.
(canonicalize-result-types
result-types
n-col
- col-names))))
+ col-names
+ database))))
(if full-set
(values result-set n-col nil)
(values result-set n-col)))))
:error-id (sqlite:sqlite-error-code err)
:message (sqlite:sqlite-error-message err))11)))))
-(defun canonicalize-result-types (result-types n-col col-names)
+(defun canonicalize-result-types (result-types n-col col-names database)
(when result-types
(let ((raw-types (if (eq :auto result-types)
(loop for j from n-col below (* 2 n-col)
- collect (ensure-keyword (sqlite:sqlite-aref col-names j)))
+ collect (ensure-keyword
+ (sqlite:sqlite-aref col-names j (encoding database))))
result-types)))
(loop for type in raw-types
collect
do (setf (car rest)
(clsql-uffi:convert-raw-field
(sqlite:sqlite-raw-aref row i)
- result-types
- i)))
+ (nth i result-types)
+ :encoding (encoding database))))
(sqlite:sqlite-free-row row)
t))))