projects
/
clsql.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Set default encoding for sqlite3 databases to utf-8 if unspecified
[clsql.git]
/
db-sqlite3
/
sqlite3-sql.lisp
diff --git
a/db-sqlite3/sqlite3-sql.lisp
b/db-sqlite3/sqlite3-sql.lisp
index 7b16b48b50319c967d4bc4876c96e327e61a8071..4f953d013212fc5d63d9dd02026745c7bc8ecb8d 100644
(file)
--- a/
db-sqlite3/sqlite3-sql.lisp
+++ b/
db-sqlite3/sqlite3-sql.lisp
@@
-205,11
+205,13
@@
(sqlite3:sqlite3-column-blob stmt i)
(car types)
:length (sqlite3:sqlite3-column-bytes stmt i)
(sqlite3:sqlite3-column-blob stmt i)
(car types)
:length (sqlite3:sqlite3-column-bytes stmt i)
- :encoding (encoding database))
+ :encoding (or (encoding database)
+ :utf-8))
(clsql-uffi:convert-raw-field
(sqlite3:sqlite3-column-text stmt i)
(car types)
(clsql-uffi:convert-raw-field
(sqlite3:sqlite3-column-text stmt i)
(car types)
- :encoding (encoding database))))))
+ :encoding (or (encoding database)
+ :utf-8))))))
(when field-names
(setf col-names (loop for n from 0 below n-col
collect (sqlite3:sqlite3-column-name stmt n))))
(when field-names
(setf col-names (loop for n from 0 below n-col
collect (sqlite3:sqlite3-column-name stmt n))))
@@
-270,8
+272,9
@@
(declaim (inline sqlite3-table-info))
(defun sqlite3-table-info (table database)
(declaim (inline sqlite3-table-info))
(defun sqlite3-table-info (table database)
- (database-query (format nil "PRAGMA table_info('~A')" table)
- database nil nil))
+ (let ((sql (format nil "PRAGMA table_info('~A')"
+ (clsql-sys::unescaped-database-identifier table))))
+ (database-query sql database nil nil)))
(defmethod database-list-attributes (table (database sqlite3-database)
&key (owner nil))
(defmethod database-list-attributes (table (database sqlite3-database)
&key (owner nil))
@@
-283,9
+286,10
@@
(database sqlite3-database)
&key (owner nil))
(declare (ignore owner))
(database sqlite3-database)
&key (owner nil))
(declare (ignore owner))
-
+
(loop for field-info in (sqlite3-table-info table database)
(loop for field-info in (sqlite3-table-info table database)
- when (string= attribute (second field-info))
+ when (string= (clsql-sys::unescaped-database-identifier attribute)
+ (second field-info))
return
(let* ((raw-type (third field-info))
(start-length (position #\( raw-type))
return
(let* ((raw-type (third field-info))
(start-length (position #\( raw-type))