Skip to content

Commit 4dc7488

Browse files
committed
Added SQLite 3.39.0 feature.
1 parent 944e482 commit 4dc7488

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

src/sqlite.f90

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ module sqlite
169169
public :: sqlite3_config_int_
170170
public :: sqlite3_config_null_
171171
public :: sqlite3_data_count
172+
public :: sqlite3_db_name
173+
public :: sqlite3_db_name_
172174
public :: sqlite3_db_status
173175
public :: sqlite3_errcode
174176
public :: sqlite3_errmsg
@@ -409,6 +411,15 @@ function sqlite3_data_count(stmt) bind(c, name='sqlite3_data_count')
409411
integer(kind=c_int) :: sqlite3_data_count
410412
end function sqlite3_data_count
411413

414+
! const char *sqlite3_db_name(sqlite3 *db, int n)
415+
function sqlite3_db_name_(db, n) bind(c, name='sqlite3_db_name')
416+
import :: c_int, c_ptr
417+
implicit none
418+
type(c_ptr), intent(in), value :: db
419+
integer(kind=c_int), intent(in), value :: n
420+
type(c_ptr) :: sqlite3_db_name_
421+
end function sqlite3_db_name_
422+
412423
! int sqlite3_db_status(sqlite3 *db, int op, int *pCurrent, int *pHighwater, int resetFlag)
413424
function sqlite3_db_status(db, op, current, highwater, reset_flag) bind(c, name='sqlite3_db_status')
414425
import :: c_int, c_ptr
@@ -769,6 +780,16 @@ function sqlite3_config_null(option)
769780
sqlite3_config_null = sqlite3_config_null_(option)
770781
end function sqlite3_config_null
771782

783+
function sqlite3_db_name(db, n)
784+
type(c_ptr), intent(in) :: db
785+
integer, intent(in) :: n
786+
character(len=:), allocatable :: sqlite3_db_name
787+
type(c_ptr) :: ptr
788+
789+
ptr = sqlite3_db_name_(db, n)
790+
if (c_associated(ptr)) call c_f_str_ptr(ptr, sqlite3_db_name)
791+
end function sqlite3_db_name
792+
772793
function sqlite3_errmsg(db)
773794
type(c_ptr), intent(in) :: db
774795
character(len=:), allocatable :: sqlite3_errmsg

test/test_sqlite.f90

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,12 @@ program test_sqlite
9292
character(len=*), parameter :: DB_FILE = 'test.db'
9393
character(len=*), parameter :: DB_TABLE = 'test_table'
9494

95-
character(len=:), allocatable :: errmsg ! Error message.
96-
integer :: rc ! Return code.
97-
type(c_ptr) :: db ! SQLite database.
98-
type(c_ptr) :: stmt ! SQLite statement.
99-
type(c_ptr) :: udp ! User-data pointer.
95+
character(len=:), allocatable :: db_name ! Database name.
96+
character(len=:), allocatable :: errmsg ! Error message.
97+
integer :: rc ! Return code.
98+
type(c_ptr) :: db ! SQLite database.
99+
type(c_ptr) :: stmt ! SQLite statement.
100+
type(c_ptr) :: udp ! User-data pointer.
100101

101102
! Set configuration to single thread.
102103
rc = sqlite3_config(SQLITE_CONFIG_SINGLETHREAD)
@@ -112,6 +113,10 @@ program test_sqlite
112113
rc = sqlite3_open(DB_FILE, db)
113114
if (rc /= SQLITE_OK) stop 'sqlite3_open(): failed'
114115

116+
db_name = sqlite3_db_name(db, 0)
117+
if (.not. allocated(db_name)) stop 'sqlite3_db_name(): failed'
118+
print '("DB name: ", a)', db_name
119+
115120
! Testing logging.
116121
call sqlite3_log(1, 'TEST LOG' // c_null_char)
117122

0 commit comments

Comments
 (0)