compatibility: Fix ECL loading issues
[clsql.git] / db-sqlite / sqlite-sql.lisp
index 0b9994589491b9046cd10104bcec464a254c52ff..ef622dda0257d142cf8b69250aaf80bf4b833d4a 100644 (file)
                (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))))