X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-sqlite%2Fsqlite-sql.lisp;h=ef622dda0257d142cf8b69250aaf80bf4b833d4a;hb=084cdcffae7d4734d0fe9927eca8a76d83f5f0e2;hp=0b9994589491b9046cd10104bcec464a254c52ff;hpb=d2d49ab13c98bc7a1819a0fd3968268a5567bdc3;p=clsql.git diff --git a/db-sqlite/sqlite-sql.lisp b/db-sqlite/sqlite-sql.lisp index 0b99945..ef622dd 100644 --- a/db-sqlite/sqlite-sql.lisp +++ b/db-sqlite/sqlite-sql.lisp @@ -97,15 +97,16 @@ (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. @@ -146,7 +147,8 @@ (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))))) @@ -163,11 +165,12 @@ :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 @@ -224,8 +227,8 @@ 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))))