work around missing _v2 functions on old libsqlite3 versions

Missing sqlite3_next_stmt is still a problem, but harder to work
around.
This commit is contained in:
Ryan Culpepper 2012-11-28 15:44:48 -05:00
parent 07b8507ce9
commit 0ac903f527

View File

@ -25,6 +25,13 @@
(define-sqlite sqlite3_libversion_number
(_fun -> _int))
(define-sqlite sqlite3_open
(_fun (filename ignored-flags) ::
(filename : _bytes)
(db : (_ptr o _sqlite3_database))
-> (result : _int)
-> (values db result)))
(define-sqlite sqlite3_open_v2
(_fun (filename flags) ::
(filename : _bytes)
@ -32,7 +39,8 @@
(flags : _int)
(vfs : _pointer = #f)
-> (result : _int)
-> (values db result)))
-> (values db result))
#:fail (lambda () sqlite3_open))
(define-sqlite sqlite3_close
(_fun _sqlite3_database
@ -49,6 +57,16 @@
(ptr-set! rawcopy _byte n 0)
copy))
(define-sqlite sqlite3_prepare
(_fun (db sql) ::
(db : _sqlite3_database)
(sql-buffer : _bytes = (copy-buffer sql))
((bytes-length sql-buffer) : _int)
(statement : (_ptr o _sqlite3_statement/null))
(tail : (_ptr o _bytes)) ;; points into sql-buffer (atomic-interior)
-> (result : _int)
-> (values result statement (and tail (positive? (bytes-length tail))))))
(define-sqlite sqlite3_prepare_v2
(_fun (db sql) ::
(db : _sqlite3_database)
@ -58,7 +76,8 @@
(statement : (_ptr o _sqlite3_statement/null))
(tail : (_ptr o _bytes)) ;; points into sql-buffer (atomic-interior)
-> (result : _int)
-> (values result statement (and tail (positive? (bytes-length tail))))))
-> (values result statement (and tail (positive? (bytes-length tail)))))
#:fail (lambda () sqlite3_prepare))
(define-sqlite sqlite3_finalize
(_fun _sqlite3_statement