- (declare (type sqlite-db-pointer db))
- (let ((rows (allocate-foreign-object '(* :cstring))))
- (with-foreign-object (rows-n :int)
- (with-foreign-object (cols-n :int)
- (declare (type sqlite-row-pointer rows))
- (let ((result (%get-table db sql rows rows-n cols-n nil)))
- (if (= result SQLITE-OK)
- (let ((cn (deref-pointer cols-n :int))
- (rn (deref-pointer rows-n :int)))
- (values rows rn cn))
- (progn
- (free-foreign-object rows)
- (signal-sqlite-error result))))))))
+ (declare (type sqlite-db-type db))
+ (with-cstring (sql-native sql)
+ (let ((rows (allocate-foreign-object '(* (* :unsigned-char)))))
+ (declare (type sqlite-row-pointer-type rows))
+ (with-foreign-object (rows-n :int)
+ (with-foreign-object (cols-n :int)
+ (let ((result (%get-table db sql-native rows rows-n cols-n +null-errmsg-pointer+)))
+ (if (= result SQLITE-OK)
+ (let ((cn (deref-pointer cols-n :int))
+ (rn (deref-pointer rows-n :int)))
+ (values rows rn cn))
+ (progn
+ (free-foreign-object rows)
+ (signal-sqlite-error result)))))))))