Skip to content

Commit b8116c3

Browse files
committed
Added interface.
1 parent 0917e3c commit b8116c3

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

COVERAGE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
| `sqlite3_changes64` | |
4141
| `sqlite3_clear_bindings` ||
4242
| `sqlite3_close` ||
43-
| `sqlite3_close_v2` | |
43+
| `sqlite3_close_v2` | |
4444
| `sqlite3_collation_needed` | |
4545
| `sqlite3_collation_needed16` | |
4646
| `sqlite3_column_blob` | |

src/sqlite3.F90

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,8 @@ module sqlite3
192192
public :: sqlite3_clear_bindings
193193
public :: sqlite3_close
194194
public :: sqlite3_close_
195+
public :: sqlite3_close_v2
196+
public :: sqlite3_close_v2_
195197
public :: sqlite3_column_count
196198
public :: sqlite3_column_double
197199
public :: sqlite3_column_int
@@ -421,6 +423,14 @@ function sqlite3_close_(db) bind(c, name='sqlite3_close')
421423
integer(kind=c_int) :: sqlite3_close_
422424
end function sqlite3_close_
423425

426+
! int sqlite3_close_v2(sqlite3 *db)
427+
function sqlite3_close_v2_(db) bind(c, name='sqlite3_close_v2')
428+
import :: c_int, c_ptr
429+
implicit none
430+
type(c_ptr), intent(in), value :: db
431+
integer(kind=c_int) :: sqlite3_close_v2_
432+
end function sqlite3_close_v2_
433+
424434
! int sqlite3_column_count(sqlite3_stmt *stmt)
425435
function sqlite3_column_count(stmt) bind(c, name='sqlite3_column_count')
426436
import :: c_int, c_ptr
@@ -957,6 +967,14 @@ function sqlite3_close(db)
957967
if (sqlite3_close == SQLITE_OK) db = c_null_ptr
958968
end function sqlite3_close
959969

970+
function sqlite3_close_v2(db)
971+
type(c_ptr), intent(inout) :: db
972+
integer :: sqlite3_close_v2
973+
974+
sqlite3_close_v2 = sqlite3_close_v2_(db)
975+
if (sqlite3_close_v2 == SQLITE_OK) db = c_null_ptr
976+
end function sqlite3_close_v2
977+
960978
function sqlite3_column_name(stmt, idx)
961979
type(c_ptr), intent(inout) :: stmt
962980
integer, intent(in) :: idx

test/test_sqlite3.f90

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,12 @@ program test_sqlite3
114114
print '("SQLite source ID: ", a)', sqlite3_sourceid()
115115

116116
! Open SQLite database.
117-
rc = sqlite3_open(DB_FILE, db)
118-
if (rc /= SQLITE_OK) stop 'sqlite3_open(): failed'
117+
rc = sqlite3_open_v2(DB_FILE, db, ior(SQLITE_OPEN_READWRITE, SQLITE_OPEN_CREATE))
118+
119+
if (rc /= SQLITE_OK) then
120+
print '("Error ", i0, ": ", a)', sqlite3_errcode(db), sqlite3_errmsg(db)
121+
stop 'sqlite3_open_v2(): failed'
122+
end if
119123

120124
db_name = sqlite3_db_name(db, 0)
121125
if (len(db_name) == 0) stop 'sqlite3_db_name(): failed'
@@ -210,7 +214,7 @@ program test_sqlite3
210214
call print_error(rc, 'sqlite3_exec', errmsg)
211215

212216
! Close SQLite handle.
213-
rc = sqlite3_close(db)
217+
rc = sqlite3_close_v2(db)
214218
if (rc /= SQLITE_OK) stop 'sqlite3_close(): failed'
215219
contains
216220
integer function journal_mode_wal(db) result(rc)

0 commit comments

Comments
 (0)