(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))
(if (string-equal (fourth field-info) "0")
1 0)))))
+(defmethod database-last-auto-increment-id ((database sqlite3-database) table column)
+ (declare (ignore table column))
+ (car (query "SELECT LAST_INSERT_ROWID();"
+ :flatp t :field-names nil
+ :database database)))
+
(defmethod database-create (connection-spec (type (eql :sqlite3)))
(declare (ignore connection-spec))
;; databases are created automatically by Sqlite3
(or (string-equal ":memory:" name)
(and (probe-file name) t))))
+(defmethod database-get-type-specifier ((type (eql 'integer))
+ args database
+ (db-type (eql :sqlite3)))
+ (declare (ignore database))
+ (if args
+ (format nil "INTEGER(~A)" (car args))
+ "INTEGER"))
+
+(defmethod database-get-type-specifier ((type (eql 'integer))
+ args database
+ (db-type (eql :sqlite3)))
+ (declare (ignore database))
+ (if args
+ (format nil "INTEGER(~A)" (car args))
+ "INTEGER"))
+
;;; Database capabilities
(defmethod db-type-has-boolean-where? ((db-type (eql :sqlite3)))
nil)
+
+(defmethod db-type-has-auto-increment? ((db-type (eql :sqlite3)))
+ t)