-(defmethod database-query (query-expression (database sqlite-database) result-types field-names)
- (declare (ignore result-types)) ; SQLite is typeless!
- (handler-case
- (multiple-value-bind (data row-n col-n)
- (sqlite:sqlite-get-table (sqlite-db database) query-expression)
- #-clisp (declare (type sqlite:sqlite-row-pointer-type data))
- (let ((rows
- (when (plusp row-n)
- (loop for i from col-n below (* (1+ row-n) col-n) by col-n
- collect (loop for j from 0 below col-n
- collect
- (#+clisp aref
- #-clisp sqlite:sqlite-aref
- data (+ i j))))))
- (names
- (when field-names
- (loop for j from 0 below col-n
- collect (#+clisp aref
- #-clisp sqlite:sqlite-aref
- data j)))))
- #-clisp (sqlite:sqlite-free-table data)
- (values rows names)))
- (sqlite:sqlite-error (err)
- (error 'clsql-sql-error
- :database database
- :expression query-expression
- :errno (sqlite:sqlite-error-code err)
- :error (sqlite:sqlite-error-message err)))))
-
-#-clisp